/* Copyright 2010 sss * This file is part of evil_core. * * evil_core is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * evil_core is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with evil_core. If not, see .*/ #include "commonheaders.h" void *get_version(void*) { return (void*)ec_version; } void *get_service_list(void*) { extern std::list services; if(!services.empty()) { extern boost::mutex service_list_mutex; std::string svclist; service_list_mutex.lock(); std::list::iterator end = services.end(); for(std::list::iterator i = services.begin(); i != end; ++i) { svclist.append((*i)->getName()); svclist.append("\n"); } service_list_mutex.unlock(); svclist.erase((std::string::size_type)svclist.length(), 1); char *str = new char [svclist.length()+1]; ACE_OS::strcpy(str, svclist.c_str()); return str; } return 0; } void *get_plugin_list(void*) { extern std::list plugins; if(!plugins.empty()) { extern boost::mutex plugin_list_mutex; plugin_list_mutex.lock(); pluglist *plugs = new pluglist; int count = 0; std::list::iterator end = plugins.end(); for(std::list::iterator i = plugins.begin(); i != end; ++i, ++count) { // plugs->plugins[count] = new PLUGININFO*; plugs->plugins[count] = (PLUGININFO*)(*i)->get_plugininfo(); } plugin_list_mutex.unlock(); plugs->count = count; return plugs; } return 0; } void *halt_request(void*) { extern bool halt_requested; extern void terminate(); halt_requested = true; terminate(); return 0; } void *toutf16(void* utf8) { return wcsdup(toUTF16((char*)utf8).c_str()); } void *wchartoutf8(void* utf8) { return ACE_OS::strdup(toUTF8((wchar_t*)utf8).c_str()); } void *chartoutf8(void* utf8) { return ACE_OS::strdup(toUTF8((char*)utf8).c_str()); } void register_core_services() { CreateServiceFunction("EC/GetVersionInt", (SERVICE)get_version); CreateServiceFunction("EC/GetServiceList", (SERVICE)get_service_list); CreateServiceFunction("EC/RequestHalt", (SERVICE)halt_request); CreateServiceFunction("EC/GetPluginList", (SERVICE)get_plugin_list); CreateServiceFunction("EC/toUtf16", (SERVICE)toutf16); CreateServiceFunction("EC/WCHARtoUtf8", (SERVICE)wchartoutf8); CreateServiceFunction("EC/CHARtoUtf8", (SERVICE)chartoutf8); }