1 module app; 2 3 import std.stdio; 4 import std.conv; 5 6 import kissrpc.Unit; 7 import kissrpc.Logs; 8 import kissrpc.RpcServer; 9 import kissrpc.RpcSocketBaseInterface; 10 11 import kiss.event.GroupPoll; 12 import std.traits; 13 14 15 class ServerSocket : ServerSocketEventInterface 16 { 17 void listenFailed(const string str) 18 { 19 deWriteln("server listen failed", str); 20 } 21 22 void disconnectd(RpcSocketBaseInterface socket) 23 { 24 deWriteln("client is disconnect"); 25 } 26 27 shared static int connect_num; 28 void inconming(RpcSocketBaseInterface socket) 29 { 30 logInfo("client inconming:%s:%s, connect num:%s", socket.getIp, socket.getPort, connect_num++); 31 } 32 33 void writeFailed(RpcSocketBaseInterface socket) 34 { 35 deWritefln("write buffer to client is failed, %s:%s", socket.getIp, socket.getPort); 36 } 37 38 void readFailed(RpcSocketBaseInterface socket) 39 { 40 deWritefln("read buffer from client is failed, %s:%s", socket.getIp, socket.getPort); 41 } 42 } 43 44 45 46 void main(string[] args) 47 { 48 49 import kissrpc.IDL.kissidlService; 50 51 auto rpServer = new RpcServer(new ServerSocket); 52 auto address_book_service = new RpcAddressBookService(rpServer); 53 54 55 auto poll = new GroupPoll!(); 56 57 if(rpServer.listen("0.0.0.0", 4444, poll)) 58 { 59 logInfo("start server is ok"); 60 } 61 62 poll.start(); 63 poll.wait(); 64 }