Ejemplo n.º 1
0
        //[MethodImpl(MethodImplOptions.NoOptimization | MethodImplOptions.NoInlining)]
        private void ProcessConnected(UniNetObject uniObject)
        {
            if (_isRunning != true)
            {
                ProcessStop(uniObject);
                return;
            }
            NetCore.Error.NetCoreException err;
            var state = _Callback.Connected(uniObject, out err);

            if (err != null)
            {
                ProcessBadConnection(uniObject);
                return;
            }
            uniObject.stateObject = state;
            //connectionArgs.UserToken = new SocketStateObject(connectionArgs.ConnectSocket,state);
            _BufferManager.SetBuffer(uniObject.SetBuffer, 32768);
            uniObject.LastOperation = UniNetOperation.Receive;
            if (!uniObject.ReceiveAsync(uniObject))
            {
                ProcessReceive(uniObject);
            }
            uniObject.ObjectError = Error.NetCoreError.IOPending;
        }
Ejemplo n.º 2
0
 private void ProcessIO(UniNetObject uniObject)
 {
     if (uniObject.ObjectError != Error.NetCoreError.Success)
     {
         ProcessBadConnection(uniObject);
         return;
     }
     if (_isRunning != true)
     {
         ProcessStop(uniObject);
         return;
     }
     if (uniObject.LastOperation == UniNetOperation.Accept)
     {
         StartAccept(uniObject);
     }
     else if (uniObject.LastOperation == UniNetOperation.Receive)
     {
         ProcessReceive(uniObject);
         if (uniObject.innerObject == null)
         {
             return;
             //ProcessBadConnection(connectionArgs)
         }
         if (!uniObject.ReceiveAsync(uniObject))
         {
             ProcessReceive(uniObject);
         }
     }
     else if (uniObject.LastOperation == UniNetOperation.Connect)
     {
         ProcessConnected(uniObject);
     }
 }
Ejemplo n.º 3
0
        private void GetAccepted(UniNetObject AcceptedUniObject)
        {
            if (AcceptedUniObject.ObjectError != Error.NetCoreError.Success)
            {
                StartAccept(AcceptedUniObject);
                return;
            }
            NetCore.Error.NetCoreException err;
            UniNetObject clientUniObject = new UniNetObject();

            clientUniObject.SetProtocol(_Callback._ProtocolOp);
            _BufferManager.SetBuffer(clientUniObject.SetBuffer, 4096);
            clientUniObject.SetCompletedHandler(ProcessIO);
            clientUniObject = _Callback._ProtocolOp.GetAcceptedUniObject(AcceptedUniObject, ref clientUniObject);
            _Callback.Accepted(clientUniObject, out err);
            if (clientUniObject.BufferLength != 0)
            {
                _Callback.Received(clientUniObject.Buffer, clientUniObject, out err, clientUniObject.stateObject);
            }
            clientUniObject.BufferLength = 0;
            if (err != null)
            {
                //ProcessBadConnection(uniObject);
                StartAccept(AcceptedUniObject);
                return;
            }
            //var clientArgs=_ConnectPool.Pop();
            //clientArgs.UserToken=new SocketStateObject(clientSocket);
            clientUniObject.LastOperation = UniNetOperation.Receive;
            if (!clientUniObject.ReceiveAsync(clientUniObject))
            {
                ProcessReceive(clientUniObject);
            }
            clientUniObject.ObjectError = Error.NetCoreError.IOPending;
            StartAccept(AcceptedUniObject);
        }