diff dreactor/protocol/RawTcp.d @ 11:5836613d16ac

reorg! reorg!
author rick@minifunk
date Tue, 12 Aug 2008 16:59:56 -0400
parents e75a2e506b1d
children
line wrap: on
line diff
--- a/dreactor/protocol/RawTcp.d	Fri Aug 01 16:30:45 2008 -0400
+++ b/dreactor/protocol/RawTcp.d	Tue Aug 12 16:59:56 2008 -0400
@@ -19,29 +19,19 @@
 class RawTCPListener
 {
 public
-    this(Dispatcher mgr, Vat sel, IPv4Address addr)
+
+    this(AsyncSocketConduit cond)
     {
-        manager = mgr;
-        mgr.events(Event.Read);
-        mgr.setOutgoingHandler(&RawTCPHandler.onSend);
-        mgr.setIncomingHandler(&onReceive);
-        mgr.setConnectHandler(&accept);
-        mgr.setErrorHandler(&RawTCPHandler.onError);
-        mgr.setDisconnectHandler(&RawTCPHandler.onHangup);
-        mgr.listen(addr);
-         
-        sel.addConnection(mgr);
-        vat = sel;
         log = Log.lookup("dreactor.protocol.RawTcpServer");
         log.info("log initialized");
         children = new CircularSeq!(Dispatcher);
     }
+
     this(Vat sel, IPv4Address addr)
     {
         AsyncSocketConduit cond = new AsyncSocketConduit;
         cond.socket().setAddressReuse(true);
-        Dispatcher lh = new Dispatcher(cond, true);
-        this(lh, sel, addr);
+        this(cond);
     }
 
     ~this()
@@ -49,25 +39,22 @@
         close();
     } 
 
-    int accept(Conduit cond, RegisterD reg)
+    AsyncSocketConduit accept(Conduit cond, RegisterD reg)
     {
         AsyncSocketConduit newcond = new AsyncSocketConduit;
         (cast(AsyncSocketConduit)cond).socket().accept(newcond.socket);
-        Dispatcher h = Dispatcher.New(newcond, manager);
         h.events(Event.Read);
         vat.addConnection(h);
         children.append(h);
         log.info("accepted new connection");
-        return 0;
+        return newcond;
     }
 
-    int broadcast(char[] outbuf, Dispatcher[] excluded = null)
+    int broadcast(char[] outbuf, AsyncSocketConduit[] recips)
     {
-        foreach(Dispatcher h; children)
+        foreach(AsyncSocketConduit c; recips)
         {
-            if (excluded && excluded.includes(h))
-                continue;
-            if (h.appendOutBuffer(outbuf))
+            if (c.appendOutBuffer(outbuf))
             {
                 h.addEvent(Event.Write);
                 vat.addConnection(h);
@@ -263,6 +250,7 @@
     {
         dataHandler = h;
     }
+
 private
     void delegate(char[], Dispatcher) dataHandler;
     Dispatcher manager;