server 2
This commit is contained in:
@@ -1,27 +0,0 @@
|
||||
{
|
||||
"BackgroundImageAbsolutePath": "c:\\users\\bill\\appdata\\local\\microsoft\\visualstudio\\17.0_03c65567\\extensions\\atkxhose.05t\\Images\\background.png",
|
||||
"BackgroundImagesDirectoryAbsolutePath": "c:\\users\\bill\\appdata\\local\\microsoft\\visualstudio\\17.0_03c65567\\extensions\\atkxhose.05t\\Images",
|
||||
"ExpandToIDE": false,
|
||||
"Extensions": ".png, .jpg, .gif, .bmp",
|
||||
"ImageBackgroundType": 0,
|
||||
"ImageFadeAnimationInterval": "PT5S",
|
||||
"ImageStretch": 0,
|
||||
"IsLimitToMainlyEditorWindow": false,
|
||||
"LoopSlideshow": true,
|
||||
"MaxHeight": 0,
|
||||
"MaxWidth": 0,
|
||||
"Opacity": 0.35,
|
||||
"PositionHorizon": 1,
|
||||
"PositionVertical": 1,
|
||||
"ShuffleSlideshow": false,
|
||||
"SoftEdgeX": 0,
|
||||
"SoftEdgeY": 0,
|
||||
"TileMode": 0,
|
||||
"UpdateImageInterval": "PT1M",
|
||||
"ViewBoxPointX": 0,
|
||||
"ViewBoxPointY": 0,
|
||||
"ViewPortHeight": 1,
|
||||
"ViewPortPointX": 0,
|
||||
"ViewPortPointY": 0,
|
||||
"ViewPortWidth": 1
|
||||
}
|
||||
+13
-2
@@ -10,10 +10,21 @@ enum Log_level {
|
||||
LOG_SILENT
|
||||
};
|
||||
|
||||
struct Config{
|
||||
int running, new_query, server_mode, n_buffers;
|
||||
int buffer_sizes[];
|
||||
};
|
||||
|
||||
struct Context{
|
||||
typedef int (*printf_type) (const char *format, ...);
|
||||
std::unordered_map<const char*, void*> tables;
|
||||
std::unordered_map<const char*, uColRef *> cols;
|
||||
|
||||
Config* cfg;
|
||||
|
||||
int n_buffers, *sz_bufs;
|
||||
void **buffers;
|
||||
|
||||
Log_level log_level = LOG_SILENT;
|
||||
printf_type print = printf;
|
||||
template <class ...Types>
|
||||
@@ -28,8 +39,8 @@ struct Context{
|
||||
}
|
||||
};
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define __DLLEXPORT__ __declspec(dllexport) __stdcall
|
||||
#ifdef _WIN32
|
||||
#define __DLLEXPORT__ __declspec(dllexport) __stdcall
|
||||
#else
|
||||
#define __DLLEXPORT__
|
||||
#endif
|
||||
|
||||
+34
-5
@@ -36,13 +36,43 @@ void daemon(thread_context* c) {
|
||||
#include "aggregations.h"
|
||||
typedef int (*code_snippet)(void*);
|
||||
int _main();
|
||||
int main(int argc, char** argv) {
|
||||
|
||||
int dll_main(int argc, char** argv, Context* cxt){
|
||||
Config *cfg = reinterpret_cast<Config *>(argv[0]);
|
||||
|
||||
auto buf_szs = cfg->buffer_sizes;
|
||||
void** buffers = (void**)malloc(sizeof(void*) * cfg->n_buffers);
|
||||
for (int i = 0; i < cfg->n_buffers; i++)
|
||||
buffers[i] = static_cast<void *>(argv[i + 1]);
|
||||
|
||||
cxt->buffers = buffers;
|
||||
cxt->cfg = cfg;
|
||||
cxt->n_buffers = cfg->n_buffers;
|
||||
cxt->sz_bufs = buf_szs;
|
||||
|
||||
while(cfg->running){
|
||||
if (cfg->new_query) {
|
||||
void* handle = dlopen("d:/gg/Aquery++/dll.so", RTLD_LAZY);
|
||||
code_snippet c = reinterpret_cast<code_snippet>(dlsym(handle, "dllmain"));
|
||||
c(cxt);
|
||||
dlclose(handle);
|
||||
cfg->new_query = 0;
|
||||
}
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern "C" int __DLLEXPORT__ main(int argc, char** argv) {
|
||||
Context* cxt = new Context();
|
||||
cxt->log("%d %s\n", argc, argv[1]);
|
||||
|
||||
const char* shmname;
|
||||
if (argc <= 1)
|
||||
return _main();
|
||||
if (argc < 0)
|
||||
return dll_main(argc, argv, cxt);
|
||||
else if (argc <= 1)
|
||||
return test_main();
|
||||
else
|
||||
shmname = argv[1];
|
||||
SharedMemory shm = SharedMemory(shmname);
|
||||
@@ -68,7 +98,6 @@ int main(int argc, char** argv) {
|
||||
cxt->log("inner\n");
|
||||
cxt->err("return: %d\n", c(cxt));
|
||||
}
|
||||
dlclose(handle);
|
||||
}
|
||||
ready = false;
|
||||
}
|
||||
@@ -77,7 +106,7 @@ int main(int argc, char** argv) {
|
||||
return 0;
|
||||
}
|
||||
#include "utils.h"
|
||||
int _main()
|
||||
int test_main()
|
||||
{
|
||||
//vector_type<int> t;
|
||||
//t = 1;
|
||||
|
||||
Reference in New Issue
Block a user