comparison dreactor/protocol/RawTcp.d @ 6:287ba7de97c4

more housekeeping
author rick@minifunk
date Tue, 08 Jul 2008 12:23:26 -0400
parents f875a1f278b8
children 60cf25102fb2
comparison
equal deleted inserted replaced
5:f875a1f278b8 6:287ba7de97c4
7 import tango.util.log.Log; 7 import tango.util.log.Log;
8 import tango.util.log.Config; 8 import tango.util.log.Config;
9 9
10 import dreactor.transport.AsyncSocketConduit; 10 import dreactor.transport.AsyncSocketConduit;
11 import dreactor.core.Vat; 11 import dreactor.core.Vat;
12 import dreactor.core.ConnectionHandler; 12 import dreactor.core.Dispatcher;
13 13
14 /****************************************************************************** 14 /******************************************************************************
15 15
16 Basic TCP server or client routines for sending raw data. 16 Basic TCP server or client routines for sending raw data.
17 17
18 ******************************************************************************/ 18 ******************************************************************************/
19 class RawTCPListener 19 class RawTCPListener
20 { 20 {
21 public 21 public
22 Logger log; 22 Logger log;
23 this(ConnectionHandler mgr, Vat sel, IPv4Address addr) 23 this(Dispatcher mgr, Vat sel, IPv4Address addr)
24 { 24 {
25 manager = mgr; 25 manager = mgr;
26 mgr.events(Event.Read); 26 mgr.events(Event.Read);
27 mgr.setOutgoingHandler(&Handlers.onSend); 27 mgr.setOutgoingHandler(&Handlers.onSend);
28 mgr.setIncomingHandler(&Handlers.onReceive); 28 mgr.setIncomingHandler(&Handlers.onReceive);
31 31
32 sel.addConnection(mgr); 32 sel.addConnection(mgr);
33 vat = sel; 33 vat = sel;
34 log = Log.lookup("dreactor.protocol.RawTcpServer"); 34 log = Log.lookup("dreactor.protocol.RawTcpServer");
35 log.info("log initialized"); 35 log.info("log initialized");
36 children = new CircularSeq!(ConnectionHandler); 36 children = new CircularSeq!(Dispatcher);
37 } 37 }
38 38
39 int accept(Conduit cond, RegisterD reg) 39 int accept(Conduit cond, RegisterD reg)
40 { 40 {
41 AsyncSocketConduit newcond = new AsyncSocketConduit; 41 AsyncSocketConduit newcond = new AsyncSocketConduit;
42 (cast(AsyncSocketConduit)cond).socket().accept(newcond.socket); 42 (cast(AsyncSocketConduit)cond).socket().accept(newcond.socket);
43 ConnectionHandler h = ConnectionHandler.New(newcond, manager); 43 Dispatcher h = Dispatcher.New(newcond, manager);
44 h.events(Event.Read); 44 h.events(Event.Read);
45 vat.addConnection(h); 45 vat.addConnection(h);
46 children.append(h); 46 children.append(h);
47 log.info("accepted new connection"); 47 log.info("accepted new connection");
48 return 0; 48 return 0;
49 } 49 }
50 50
51 int broadcast(char[] outbuf) 51 int broadcast(char[] outbuf)
52 { 52 {
53 foreach(ConnectionHandler h; children) 53 foreach(Dispatcher h; children)
54 { 54 {
55 if (h.appendOutBuffer(outbuf)) 55 if (h.appendOutBuffer(outbuf))
56 { 56 {
57 h.addEvent(Event.Write); 57 h.addEvent(Event.Write);
58 vat.addConnection(h); 58 vat.addConnection(h);
65 { 65 {
66 66
67 } 67 }
68 68
69 private 69 private
70 ConnectionHandler manager; 70 Dispatcher manager;
71 Vat vat; 71 Vat vat;
72 CircularSeq!(ConnectionHandler) children; 72 CircularSeq!(Dispatcher) children;
73 } 73 }
74 74
75 class RawTCPClient 75 class RawTCPClient
76 { 76 {
77 public 77 public
78 Logger log; 78 Logger log;
79 this(ConnectionHandler mgr, Vat sel, Event evts = Event.Read) 79 this(Dispatcher mgr, Vat sel, Event evts = Event.Read)
80 { 80 {
81 manager = mgr; 81 manager = mgr;
82 manager.events(evts); 82 manager.events(evts);
83 connected = false; 83 connected = false;
84 mgr.setOutgoingHandler(&Handlers.onSend); 84 mgr.setOutgoingHandler(&Handlers.onSend);
128 } 128 }
129 return 0; 129 return 0;
130 } 130 }
131 131
132 private 132 private
133 ConnectionHandler manager; 133 Dispatcher manager;
134 Vat vat; 134 Vat vat;
135 bool connected; 135 bool connected;
136 } 136 }
137 137
138 138
150 To be registered as the response to socket writable event. 150 To be registered as the response to socket writable event.
151 Sends data, returns amount sent. Unregisters Handler for sending 151 Sends data, returns amount sent. Unregisters Handler for sending
152 if there is no more data left to send. 152 if there is no more data left to send.
153 153
154 ***************************************************************************/ 154 ***************************************************************************/
155 public static int onSend(ConnectionHandler h) 155 public static int onSend(Dispatcher h)
156 { 156 {
157 Logger log = Log.lookup("Handlers.onSend"); 157 Logger log = Log.lookup("Handlers.onSend");
158 158
159 log.info("top of onSend"); 159 log.info("top of onSend");
160 char[] outbuf = h.nextBuffer(); 160 char[] outbuf = h.nextBuffer();
190 receive 190 receive
191 IncomingHandlerD 191 IncomingHandlerD
192 Default incoming data handler. Should be replaced with something useful. 192 Default incoming data handler. Should be replaced with something useful.
193 193
194 **************************************************************************/ 194 **************************************************************************/
195 public static int onReceive(ConnectionHandler h) 195 public static int onReceive(Dispatcher h)
196 { 196 {
197 Logger log = Log.lookup("Handlers.onReceive"); 197 Logger log = Log.lookup("Handlers.onReceive");
198 198
199 char inbuf[8192]; 199 char inbuf[8192];
200 int amt; 200 int amt;