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