public int connectSocket(int reqID, ASSocket socket, string ipaddress, int port) { long sel = 1; ASNetService selected = theServices[sel]; return(selected.connectSocket(reqID, socket, ipaddress, port)); }
internal int registerSocket(TcpClient acceptedclient, ASSocket prototype) { ASNetService selected = theServices[currentid]; int ret = selected.registerSocket(acceptedclient, prototype); if (maxcnt < ++currentid) { currentid = 1; } return(ret); }
// io * maxconnect * multiple 만큼 버퍼가 할당됩니다. public ASIOManager(int cnt, INetworkReceiver receiver, int io, int maxconnect, int multiple) { if (Min_NetContainer > cnt) { cnt = Min_NetContainer; } if (Max_NetContainer < cnt) { cnt = Max_NetContainer; } maxcnt = cnt; theReceiver = receiver; for (long index = 1; index <= maxcnt; index++) { ASNetService theone = new ASNetService(theReceiver, this); theone.idx = index; theServices.Add(index, theone); } currentid = 1; iosize = io; ioframemax = maxconnect * multiple; buffermanager = new BufferManager(iosize * ioframemax, iosize); buffermanager.InitBuffer(); saeaPool = new SocketAsyncEventArgsPool(ioframemax); //SocketAsyncEventArgs saea; //for (int i = 0; i < ioframemax; i++) //{ // // completed와 usertoken은 실제 사용하는 문맥에서 결정한다. // saea = new SocketAsyncEventArgs(); // buffermanager.SetBuffer(saea); // saeaPool.Push(saea); //} }