//[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; }
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); } }
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); }