comparison dreactor/core/Vat.d @ 9:5412a1ff2e49

adding chat client and more updates
author rick@minifunk
date Sat, 12 Jul 2008 10:42:41 -0400
parents 60cf25102fb2
children
comparison
equal deleted inserted replaced
8:60cf25102fb2 9:5412a1ff2e49
55 } 55 }
56 56
57 void exit() 57 void exit()
58 { 58 {
59 running = false; 59 running = false;
60 }
61
62 void wait()
63 {
64 thread.join();
60 } 65 }
61 66
62 bool addConnection(Dispatcher handler) 67 bool addConnection(Dispatcher handler)
63 { 68 {
64 log.trace("adding handler"); 69 log.trace("adding handler");
124 log.error("Selector.select returned {}", eventCount); 129 log.error("Selector.select returned {}", eventCount);
125 } 130 }
126 //add Conduits to listener 131 //add Conduits to listener
127 freshList.processAll( (ref Dispatcher h) 132 freshList.processAll( (ref Dispatcher h)
128 { 133 {
129 selector.reregister(h.transport, h.events(), h); 134 selector.register(h.transport, h.events(), h);
130 return 1; 135 return 1;
131 }); 136 });
132 remList.processAll( (ref Dispatcher h) 137 remList.processAll( (ref Dispatcher h)
133 { 138 {
134 selector.unregister(h.transport); 139 selector.unregister(h.transport);
143 { 148 {
144 switch(result) 149 switch(result)
145 { 150 {
146 case CLOSE: 151 case CLOSE:
147 s.unregister(h.transport); 152 s.unregister(h.transport);
148 (cast (AsyncSocketConduit) h.transport).shutdown(); 153 h.transport.detach();
149 (cast (AsyncSocketConduit) h.transport).detach();
150 break; 154 break;
151 case UNREGISTER: 155 case UNREGISTER:
152 s.unregister(h.transport); 156 s.unregister(h.transport);
153 break; 157 break;
154 case REMAIN: 158 case REMAIN:
156 break; 160 break;
157 case REGISTER: 161 case REGISTER:
158 s.register(h.transport, h.events(), h); 162 s.register(h.transport, h.events(), h);
159 break; 163 break;
160 case REREGISTER: 164 case REREGISTER:
161 s.reregister(h.transport, h.events(), h); 165 s.register(h.transport, h.events(), h);
162 break; 166 break;
163 default: 167 default:
164 log.error("processReturn: unknown return value"); 168 log.error("processReturn: unknown return value");
165 } 169 }
166 } 170 }