我正在探索一个使用Oracle API的软件,据我所知,对象方法通常期望将“OCCI上下文”或“OCCI环境”值作为参数。
一个例子是Account对象的构造函数:
Account( oracle::occi::Environment* env );
后来超载了
Account( void* oraCtx );
我可以理解,他们不得不使用某种“连接处理程序”,但我想知道更多。
我用Google搜索但我找不到任何足够清晰的内容,似乎每个文档都是从您已经了解Oracle API的假设开始的。
感谢。
答案 0 :(得分:3)
OCCI Environment
可让您定义自己的内存管理功能,OCCI
稍后会使用这些功能。
当您创建environment
时,您会将指针传递给您自己的malloc
,realloc
和free
:
static Environment * createEnvironment(Mode mode = DEFAULT,
void *ctxp = 0,
void *(*malocfp)(void *ctxp, size_t size) = 0,
void *(*ralocfp)(void *ctxp, void *memptr, size_t newsize) = 0,
void (*mfreefp)(void *ctxp, void *memptr) = 0);
Context
只是Environment
在OCCI
调用它们时传递给这些函数的指针。