MqMsgque PACKAGE - the package-main is a single piece of code evaluated only once at application startup … More...
Functions | |
void | libmqmsgque::MqMain (void *code) |
Main entrypoint - start the application | |
MqMsgque PACKAGE - the package-main is a single piece of code evaluated only once at application startup …
Example from MyServer.cc
→ The package-main configure the factory and start the server.
#include "LibMqMsgque_cc.hh" using namespace ccmkkernel; using namespace ccmqmsgque; // package-item class MyServer : public MqContextC, public MqServerSetupIF { friend class MqFactoryCT<MyServer>; private: // define the factory constructor MyServer(MK_TYP const typ, MqContextC* tmpl=NULL) : MqContextC(typ,tmpl) {}; private: // service to serve all incoming requests for token "HLWO" void MyFirstService () { SendSTART(); SendV("%s World", ReadSTR()); SendRETURN(); } // define a service as link between the token "HLWO" and the callback "MyFirstService" void ServerSetup() { ServiceCreate("HLWO", MqServiceICB(&MyServer::MyFirstService)); } }; // package-main int MK_CDECL main(int argc, MK_STRN argv[]) { MqMsgque::CcMqSetup(); // setup commandline arguments for later use MkBufferListC largs = {argc, argv}; // create "MyServer" factory… and make it to the default. MqFactoryCT<MyServer>::Add("MyServer")->Default(); // inspect commandline-argument for the "factory" to choose… and create a object auto srv = MqFactoryCT<MqContextC>::GetCalled(largs)->New(); // start listen for incoming call's try { srv->LinkCreate(largs); srv->ProcessEvent (MQ_WAIT_FOREVER); } catch (const std::exception& e) { srv->ErrorCatch(e); } return srv->Exit(); }
void libmqmsgque::MqMain | ( | void * | code | ) |
Main entrypoint - start the application
Tcl has a special requirement, for every new server-thread a new interpreter is created and
this interpreter source the toplevel file for initialization. This file is set on library startup and
can be changed with MqInitResetArg0. The problem is the server startup code from the toplevel. For internal
purpose this code should only be executed on application-startup (like the C main function)
and not for every thread again.