5 changed files with 151 additions and 2 deletions
@ -0,0 +1,4 @@ |
|||||
|
#!/bin/bash |
||||
|
TRLIBS="-ltrbase -ltrhashing -ltrio -ltrdata -ltrevent -ltrcomm" |
||||
|
LIBS="-lcrypto -lssl -lrt -luuid" |
||||
|
gcc ${CFLAGS} -I/usr/local/include -L/usr/local/lib ${TRLIBS} ${LIBS} -o testserver testserver.c |
||||
@ -0,0 +1,137 @@ |
|||||
|
#include <stdio.h> |
||||
|
|
||||
|
#include "trbase.h" |
||||
|
#include "trcomm.h" |
||||
|
#include "trevent.h" |
||||
|
|
||||
|
TR_CLASS(TestHandler) { |
||||
|
TR_EXTENDS(TR_EventHandler); |
||||
|
}; |
||||
|
TR_INSTANCE_INIT(TestHandler); |
||||
|
TR_CLASSVARS_DECL(TestHandler) { |
||||
|
TR_CV_EXTENDS(TR_EventHandler); |
||||
|
}; |
||||
|
|
||||
|
static |
||||
|
int |
||||
|
testHandlerHeartbeat(TR_EventHandler this, TR_Event event) |
||||
|
{ |
||||
|
puts("heartbeat"); |
||||
|
return FALSE; |
||||
|
} |
||||
|
|
||||
|
static |
||||
|
int |
||||
|
testHandlerNewMessage(TR_EventHandler this, TR_Event event) |
||||
|
{ |
||||
|
puts("new message"); |
||||
|
return FALSE; |
||||
|
} |
||||
|
|
||||
|
static |
||||
|
int |
||||
|
testHandlerClose(TR_EventHandler this, TR_Event event) |
||||
|
{ |
||||
|
puts("close"); |
||||
|
return FALSE; |
||||
|
} |
||||
|
|
||||
|
static |
||||
|
int |
||||
|
testHandlerUpgrade(TR_EventHandler this, TR_Event event) |
||||
|
{ |
||||
|
puts("upgrade"); |
||||
|
return FALSE; |
||||
|
} |
||||
|
|
||||
|
static |
||||
|
int |
||||
|
testHandlerCtor(void * _this, va_list * params) |
||||
|
{ |
||||
|
TR_PARENTCALL(TestHandler, _this, TR_Class, ctor, params); |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
static |
||||
|
void |
||||
|
testHandlerDtor(void * _this, va_list * params) |
||||
|
{ |
||||
|
TR_PARENTCALL(TestHandler, _this, TR_Class, dtor); |
||||
|
} |
||||
|
|
||||
|
static |
||||
|
void |
||||
|
testHandlerCvInit(TR_class_ptr class) |
||||
|
{ |
||||
|
TR_EVENT_HANDLER_SET_METHOD( |
||||
|
class, |
||||
|
TR_EventDispatcher, |
||||
|
TR_DISPATCHER_EVENT_HEARTBEAT, |
||||
|
testHandlerHeartbeat); |
||||
|
TR_EVENT_HANDLER_SET_METHOD( |
||||
|
class, |
||||
|
TR_CommEndPoint, |
||||
|
TR_CEP_EVENT_NEW_MSG, |
||||
|
testHandlerNewMessage); |
||||
|
TR_EVENT_HANDLER_SET_METHOD( |
||||
|
class, |
||||
|
TR_EventDispatcher, |
||||
|
TR_CEP_EVENT_CLOSE, |
||||
|
testHandlerClose); |
||||
|
TR_EVENT_HANDLER_SET_METHOD( |
||||
|
class, |
||||
|
TR_EventDispatcher, |
||||
|
TR_CEP_EVENT_UPGRADE, |
||||
|
testHandlerUpgrade); |
||||
|
} |
||||
|
|
||||
|
TR_INSTANCE(TR_Hash, testHandlerEventMethods); |
||||
|
TR_INIT_IFACE(TR_Class, testHandlerCtor, testHandlerDtor, NULL); |
||||
|
TR_CREATE_CLASS( |
||||
|
TestHandler, |
||||
|
TR_EventHandler, |
||||
|
testHandlerCvInit, |
||||
|
TR_IF(TR_Class)) = { |
||||
|
{ &(_testHandlerEventMethods.data) } |
||||
|
}; |
||||
|
|
||||
|
TR_INSTANCE(TR_LoggerSyslog, mylogger, {TR_LOGGER_DEBUG}); |
||||
|
|
||||
|
int |
||||
|
main (int argc, char * argv[]) |
||||
|
{ |
||||
|
TR_CommManager cmgr = (TR_CommManager)TR_new(TR_CommManagerPoll); |
||||
|
TR_EventDispatcher dispatcher = TR_new(TR_EventDispatcher); |
||||
|
TR_ConnEntryPoint ep; |
||||
|
TR_TcpSocket ep_sock; |
||||
|
TR_Protocol protocol; |
||||
|
|
||||
|
TR_logger = TR_INSTANCE_CAST(TR_Logger, mylogger); |
||||
|
|
||||
|
TR_eventDispatcherRegisterHandler(dispatcher, (TR_EventHandler)cmgr); |
||||
|
TR_eventDispatcherRegisterHandler(dispatcher, |
||||
|
(TR_EventHandler)TR_new(TR_Connector)); |
||||
|
TR_eventDispatcherRegisterHandler(dispatcher, |
||||
|
(TR_EventHandler)TR_new(TR_IoHandler)); |
||||
|
TR_eventDispatcherRegisterHandler(dispatcher, |
||||
|
(TR_EventHandler)TR_new(TR_ProtocolHandler)); |
||||
|
TR_eventDispatcherRegisterHandler(dispatcher, |
||||
|
(TR_EventHandler)TR_new(TestHandler)); |
||||
|
|
||||
|
protocol = TR_new(TR_ProtocolRaw); |
||||
|
ep_sock = TR_new(TR_TcpSocket, TR_logger, "0.0.0.0", 5678, 0); |
||||
|
ep = TR_new(TR_ConnEntryPoint, ep_sock, protocol); |
||||
|
|
||||
|
TR_commManagerAddEndpoint(cmgr, (TR_CommEndPoint)ep); |
||||
|
|
||||
|
TR_eventDispatcherSetHeartbeat(dispatcher, 1000); |
||||
|
TR_eventDispatcherStart(dispatcher); |
||||
|
TR_eventHandlerClassCleanup(TestHandler); |
||||
|
|
||||
|
TR_delete(cmgr); |
||||
|
TR_delete(dispatcher); |
||||
|
|
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
// vim: set ts=4 sw=4: |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue