Skip to content
Snippets Groups Projects
Commit ffa5335d authored by Daniel Hornung's avatar Daniel Hornung
Browse files

ENH: Complete info output.

parent 2c7bc130
Branches
Tags caosdb-server-v0.12.1
1 merge request!1Initial functionality
Pipeline #10883 failed
......@@ -9,15 +9,15 @@ classdef caosdbClass < handle
methods
function obj = caosdbClass(connection="")
obj.connection = connection;
disp(["created: >", connection, "<"]);
endfunction
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% info %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function res = info(obj)
info_result = _info(obj.connection)
res = info_result
disp(["connection: >", obj.connection, "<"]);
info_result = _info(obj.connection);
res = info_result;
endfunction
endmethods
endclassdef
#include "caosdb/connection.h" // for Connection, ConnectionManager
#include "caosdb/constants.h" // for LIBCAOSDB_VERSION_MAJOR, LIBCAOSDB_VE...
#include "caosdb/info.h" // for VersionInfo
#include "maoxdbUtils.hpp" // caosDB utils for mex files
#include "mex.h" // for mxArray, mexFunction
#include "mexproto.h" // for mexPrintf, mxCreateString, mxGetChars
#include <cstring> // for strcmp
......@@ -8,42 +9,40 @@
#include <string> // for allocator, char_traits, operator+
using std::string;
using caosdb::connection::Connection;
using caosdb::connection::ConnectionManager;
mxArray* info(const string &connection_name);
// auto print_version() -> const char * {
// mexPrintf("Octave caosdb client %s\n\n", FULL_VERSION.c_str());
// mexPrintf("We don't miss the H of caos.\n");
// return FULL_VERSION.c_str();
// };
/**
* The implementation of the info retrieval.
*/
mxArray* info(string const &connection_name) {
const auto &connection =
caosdb::connection::ConnectionManager::GetDefaultConnection();
std::shared_ptr<Connection> connection = NULL;
if (connection_name == "") {
connection = ConnectionManager::GetDefaultConnection();
} else {
connection = ConnectionManager::GetConnection(connection_name);
}
const auto &version_info = connection->GetVersionInfo();
mexPrintf("Server Version: v%d.%d.%d-%s-%s\n", version_info->GetMajor(),
version_info->GetMinor(), version_info->GetPatch(),
version_info->GetPreRelease().c_str(),
version_info->GetBuild().c_str());
const char *keys[] = {"major", "minor", "patch", "pre_release", "build"};
mwSize dims[2] = {1, 1};
mxArray* info_struct = mxCreateStructArray(2, dims, 5, keys);
auto* major = mxCreateNumericMatrix(1, 1, mxUINT64_CLASS, mxREAL);
UINT64_T* major_data = (UINT64_T*) mxGetData(major);
major_data[0] = version_info->GetMajor();
mxSetData(major, major_data);
auto* major = mxSCALAR(UINT64, major, version_info->GetMajor());
auto* minor = mxSCALAR(UINT64, minor, version_info->GetMinor());
auto* patch = mxSCALAR(UINT64, patch, version_info->GetPatch());
mxSetField(info_struct, 0, "major", major);
mxSetField(info_struct, 0, "minor", minor);
mxSetField(info_struct, 0, "patch", patch);
mxSetField(info_struct, 0, "pre_release",
mxCreateString(version_info->GetPreRelease().c_str()));
mxSetField(info_struct, 0, "build",
mxCreateString("foobuild"));
mxCreateString(version_info->GetBuild().c_str()));
return info_struct;
}
/**
*
*/
/**
* @brief Get info about the server
*
......@@ -57,10 +56,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs,
const mxArray *prhs[]) {
string conn_name("");
if (nrhs >= 1) {
if (nrhs >= 1 && mxGetNumberOfElements(prhs[0]) > 0) {
conn_name = mxGetChars(prhs[0]);
}
mexPrintf("Connection: >%s< \t %d\n", conn_name.c_str(), nrhs);
auto info_struct = info(conn_name);
plhs[0] = info_struct;
// plhs[0] = mxCreateString("foostring");
}
#ifndef MAOXDBUTILS_H
#define MAOXDBUTILS_H
#include "mex.h"
#include "mexproto.h"
/**
* mxSCALAR(type, name, value): Create a 1x1 mxArray of type TYPE and value VALUE. The NAME must be
* unique within each scope.
*
* Use it like so (note that the assignment to NAME is necessary):
*
* auto* scalar = mxSCALAR(UINT64, scalar, value);
*
* This will exand to:
*
* mxCreateNumericMatrix(1, 1, mxUINT64_CLASS, mxREAL);
* UINT64_T* scalar_data = (UINT64_T*) mxGetData(scalar);
* scalar_data[0] = value;
* mxSetData(scalar, scalar_data);
*
*/
#define mxSCALAR(type, name, value) \
mxCreateNumericMatrix(1, 1, mx ## type ## _CLASS, mxREAL); \
auto * __ ## name ##_data = (type ## _T*) mxGetData(name); \
__ ## name ## _data[0] = value; \
mxSetData(name, __ ## name ## _data)
#endif /* MAOXDBUTILS_H */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment