是否可以通过Cordapp代码访问VersionInfo
?这似乎是该节点的内部方法:
答案 0 :(得分:0)
在Corda中,您需要的大多数功能都可以在serviceHub中找到,该功能可以在流执行中访问。在这种情况下,您将要访问CorDapp的应用程序上下文。在应用程序内容内部,您可以访问有关CorDapp的信息,包括应用程序正在使用的Corda版本。
#include <stdio.h>
#include <stdlib.h>
#if defined(__APPLE__) || defined(__MACH__)
#include <Python/Python.h>
#elif defined(unix) || defined(__unix__) || defined(__unix)
#include <Python.h>
#include <stdint.h>
#endif
static void check_PyAPI(const char *fn, PyObject *rv)
{
if (rv) {
fprintf(stderr, "%s: result: ", fn);
PyObject_Print(rv, stderr, 0);
putc('\n', stderr);
} else {
fprintf(stderr, "%s: exception:\n", fn);
PyErr_PrintEx(0);
exit(1);
}
}
int main(int argc, char **argv)
{
setvbuf(stderr, 0, _IOLBF, 0); // ensure line-buffering for stderr
fputs("main begins\n", stderr);
Py_SetProgramName(argv[0]);
fputs("Py_SetProgramName: ok\n", stderr);
Py_Initialize();
fputs("Py_Initialize: ok\n", stderr);
PyObject* myModuleString = PyUnicode_FromString((char *) "kmer_counter");
check_PyAPI("PyUnicode_FromString('kmer_counter')", myModuleString);
PyObject* myModule = PyImport_Import(myModuleString);
check_PyAPI("PyImport_Import(myModuleString)", myModule);
PyObject* myFunction = PyObject_GetAttrString(myModule, (char *) "counter");
check_PyAPI("PyObject_GetAttrString(myModule, 'counter')", myFunction);
PyObject *myResult = PyObject_CallFunction(myFunction, "i", 5);
check_PyAPI("PyObject_CallFunction(myFunction, 'i', 5)", myResult);
Py_Finalize();
fputs("after Py_Finalize\n", stderr);
return 0;
}