12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include "TestPushServer.h"
- #include "TestPushServantImp.h"
- using namespace std;
- TestPushServer g_app;
- /////////////////////////////////////////////////////////////////
- static TC_NetWorkBuffer::PACKET_TYPE parse(TC_NetWorkBuffer &in, vector<char> &out)
- {
- size_t len = sizeof(tars::Int32);
- if (in.getBufferLength() < len)
- {
- return TC_NetWorkBuffer::PACKET_LESS;
- }
- string header;
- in.getHeader(len, header);
- assert(header.size() == len);
- tars::Int32 iHeaderLen = 0;
- ::memcpy(&iHeaderLen, header.c_str(), sizeof(tars::Int32));
- iHeaderLen = ntohl(iHeaderLen);
- if (iHeaderLen > 100000 || iHeaderLen < sizeof(unsigned int))
- {
- throw TarsDecodeException("packet length too long or too short,len:" + TC_Common::tostr(iHeaderLen));
- }
- if (in.getBufferLength() < (uint32_t)iHeaderLen)
- {
- return TC_NetWorkBuffer::PACKET_LESS;
- }
- in.getHeader(iHeaderLen, out);
- in.moveHeader(iHeaderLen);
- return TC_NetWorkBuffer::PACKET_FULL;
- }
- void
- TestPushServer::initialize()
- {
- //initialize application here:
- //...
- addServant<TestPushServantImp>(ServerConfig::Application + "." + ServerConfig::ServerName + ".TestPushServantObj");
- addServantProtocol("TestApp.PushServer.TestPushServantObj", parse);
- pushThread.start();
- }
- /////////////////////////////////////////////////////////////////
- void
- TestPushServer::destroyApp()
- {
- //destroy application here:
- //...
- pushThread.terminate();
- pushThread.getThreadControl().join();
- }
- /////////////////////////////////////////////////////////////////
- int
- main(int argc, char* argv[])
- {
- try
- {
- g_app.main(argc, argv);
- g_app.waitForShutdown();
- }
- catch (std::exception& e)
- {
- cerr << "std::exception:" << e.what() << std::endl;
- }
- catch (...)
- {
- cerr << "unknown exception." << std::endl;
- }
- return -1;
- }
- /////////////////////////////////////////////////////////////////
|