示例#1
0
        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));
        }
示例#2
0
        internal int registerSocket(TcpClient acceptedclient, ASSocket prototype)
        {
            ASNetService selected = theServices[currentid];
            int          ret      = selected.registerSocket(acceptedclient, prototype);

            if (maxcnt < ++currentid)
            {
                currentid = 1;
            }
            return(ret);
        }
示例#3
0
        // 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);
            //}
        }