summaryrefslogtreecommitdiff
path: root/core/main.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-10-13 00:17:40 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-10-13 00:17:40 +0300
commit42992bc2c04dcfd322ead3fda1134439a2cfcf3a (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/main.cpp
parent599d73442416d9bad663e4d0900265e073946600 (diff)
cleanup, switching to wxwidgets as main development framework
Diffstat (limited to 'core/main.cpp')
-rw-r--r--core/main.cpp185
1 files changed, 0 insertions, 185 deletions
diff --git a/core/main.cpp b/core/main.cpp
deleted file mode 100644
index 1068193..0000000
--- a/core/main.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-#include <windows.h>
-#include <iostream>
-//#include <tchar.h>
-
-#include <list>
-
-#include <pluginapi.h>
-#include "plugin.h"
-#include "service.h"
-
-using namespace std;
-
-list<plugin*> plugins;
-list<service*> services;
-
-bool shutdown_called = false;
-
-int LoadModules();
-INT_PTR CallService(const char *name, WPARAM w, LPARAM l);
-HANDLE CreateServiceFunction(const char *name, SERVICE pService);
-DWORD WINAPI OnModulesLoadedThread( LPVOID lpParam );
-int ServiceExists(const char *name);
-SERVICE Test(WPARAM, LPARAM);
-SERVICE Shutdown(WPARAM, LPARAM);
-
-PLUGINLINK link = {&CreateServiceFunction, &CallService, &ServiceExists};
-
-int main(int argc, char *argv[])
-{
- if(LoadModules())
- return 1; //something wrong
- CreateServiceFunction("Core/Test", (SERVICE)Test);
- CreateServiceFunction("Core/Shutdown", (SERVICE)Shutdown);
- for(list<plugin*>::iterator p = plugins.begin(); p != plugins.end(); p++) //initializing plugins
- {
- (*p)->getFuncs().load(&link);
- }
- for(list<plugin*>::iterator p = plugins.begin(); p != plugins.end(); p++)
- {
- if((*p)->getFuncs().loaded)
- {
- CreateThread(NULL, 0, OnModulesLoadedThread, (LPVOID)(*p)->getFuncs().loaded, 0, 0);
- }
- }
- for(;;)
- {
- if(shutdown_called)
- {
- plugin *db;
- for(list<plugin*>::iterator p = plugins.begin(); p != plugins.end(); p++)
- {
- if((*p)->getPluginInfo()->flags == F_DB_PLUGIN)
- db = (*p);
- else
- delete (*p); //is it right? , at least do not crasing...
- }
- delete db;
- plugins.clear();
- break;
- }
- Sleep(1000);
- }
- return 0;
-}
-
-int LoadModules()
-{
- WIN32_FIND_DATAA findFileData;
- HANDLE hFile = 0;
- if(!(hFile = FindFirstFileA(".\\modules\\*", &findFileData)))
- return 1; //failed to find any plugins in directory
- HMODULE hPlugin = 0;
- char tmp[MAX_PATH] = {0};
- plugin::exported_funcs_s funcs;
- while(hFile != INVALID_HANDLE_VALUE && GetLastError() != ERROR_NO_MORE_FILES)
- {
- strcpy(tmp, ".\\modules\\");
- strcat(tmp, findFileData.cFileName);
- hPlugin = LoadLibraryA(tmp);
- funcs.info = (SetPluginInfo)GetProcAddress(hPlugin, "SetPluginInfo");
- funcs.load = (Load)GetProcAddress(hPlugin, "Load");
- funcs.loaded = (OnModulesLoaded)GetProcAddress(hPlugin, "OnModulesLoaded");
- funcs.unload = (Unload)GetProcAddress(hPlugin, "Unload");
- if(funcs.info && funcs.load)
- {
- PLUGININFO *pi = funcs.info();
- plugins.push_back(new plugin(hPlugin, funcs, pi));
- }
- else
- FreeLibrary(hPlugin);
- FindNextFileA(hFile, &findFileData);
- }
- return 0;
-}
-
-const HMODULE plugin::getHmodule()
-{
- return hModule;
-}
-
-int plugin::setHandle(const HMODULE &hMod)
-{
- if(!hMod)
- return 1;
- hModule = hMod;
- return 0;
-}
-
-const plugin::exported_funcs_s plugin::getFuncs()
-{
- return funcs;
-}
-PLUGININFO *plugin::getPluginInfo()
-{
- return pluginInfo;
-}
-plugin::plugin(const HMODULE hMod, const exported_funcs_s fnct, PLUGININFO *info)
-{
- hModule = hMod;
- funcs = fnct;
- pluginInfo = info;
-}
-plugin::~plugin()
-{
- if(funcs.unload)
- funcs.unload();
- FreeLibrary(hModule);
-}
-service::service(const char *name, SERVICE service)
-{
- szName = new char [strlen(name)+1];
- strcpy(szName, name);
- pService = service;
-}
-const char *service::getName()
-{
- return szName;
-}
-const SERVICE service::getService()
-{
- return pService;
-}
-INT_PTR CallService(const char *name, WPARAM w, LPARAM l)
-{
- for(list<service*>::iterator p = services.begin(); p != services.end(); p++)
- {
- if(!strcmp((*p)->getName(), name))
- {
- SERVICE s = *(*p)->getService();
- return s(w, l);
- }
- }
- return 0;
-}
-HANDLE CreateServiceFunction(const char *name, SERVICE pService)
-{
- if(!ServiceExists(name))
- services.push_back(new service(name, pService));
-}
-int ServiceExists(const char *name)
-{
- for(list<service*>::iterator p = services.begin(); p != services.end(); p++)
- if(!strcmp((*p)->getName(), name))
- return 1;
- return 0;
-}
-
-SERVICE Test(WPARAM, LPARAM)
-{
- MessageBoxA(0, "Test service working", "INFO", MB_OK);
- return 0;
-}
-
-SERVICE Shutdown(WPARAM, LPARAM)
-{
- shutdown_called = true;
-}
-
-DWORD WINAPI OnModulesLoadedThread( LPVOID lpParam )
-{
- OnModulesLoaded &l = (OnModulesLoaded&)lpParam;
- l();
- return 0;
-}
-