CreateDeepCopy() public method

public CreateDeepCopy ( ) : ServerAsyncEventArgs
return ServerAsyncEventArgs
Exemplo n.º 1
0
        private ArraySegment <byte> Detach(ref ServerAsyncEventArgs e, int size)
        {
            ServerAsyncEventArgs serverAsyncEventArgs = null;

            if (e.BytesTransferred > size)
            {
                serverAsyncEventArgs = e.CreateDeepCopy();
            }
            ArraySegment <byte> result = e.DetachBuffer();

            EventArgsManager.Put(ref e);
            if (serverAsyncEventArgs != null)
            {
                e = serverAsyncEventArgs;
            }
            return(result);
        }
Exemplo n.º 2
0
        private ArraySegment <byte> Detach(ref ServerAsyncEventArgs e, int size)
        {
            ServerAsyncEventArgs copy = null;

            if (e.BytesTransferred > size)
            {
                copy = e.CreateDeepCopy();
            }

            var result = e.DetachBuffer();

            EventArgsManager.Put(ref e);
            if (copy != null)
            {
                e = copy;
            }

            return(result);
        }
		public int ProccessTransactionUser(int statusCode, ServerAsyncEventArgs e)
		{
			int action = 0;

			switch (State)
			{
				case Transaction.States.Trying:

					action |= Transaction.Action.SendOutgoingMessage;

					if (statusCode >= 100 && statusCode <= 199)
					{
						eventArgs = e.CreateDeepCopy();
						SetState(Transaction.States.Proceeding, ref action);
					}
					else if (statusCode >= 200 && statusCode <= 699)
					{
						if (e.LocalEndPoint.IsTransportUnreliable())
							SetState(Transaction.States.Completed, ref action);
						else
							SetState(Transaction.States.Terminated, ref action);
					}

					break;


				case Transaction.States.Proceeding:

					action |= Transaction.Action.SendOutgoingMessage;

					if (statusCode >= 200 && statusCode <= 699)
					{
						if (e.LocalEndPoint.IsTransportUnreliable())
						{
							eventArgs = e.CreateDeepCopy();
							SetState(Transaction.States.Completed, ref action);
						}
						else
						{
							SetState(Transaction.States.Terminated, ref action);
						}
					}
					break;


				case Transaction.States.Completed:
				case Transaction.States.Terminated:
					break;
			}

			return action;
		}
Exemplo n.º 4
0
        private ArraySegment<byte> Detach(ref ServerAsyncEventArgs e, int size)
        {
            ServerAsyncEventArgs copy = null;
            if (e.BytesTransferred > size)
                copy = e.CreateDeepCopy();

            var result = e.DetachBuffer();

            EventArgsManager.Put(ref e);
            if (copy != null)
                e = copy;

            return result;
        }
		public int ProccessTransactionUser(bool isAck, ServerAsyncEventArgs e)
		{
			int action = 0;

			switch (State)
			{
				case Transaction.States.Created:

					action |= Transaction.Action.SendOutgoingMessage;

					eventArgs = e.CreateDeepCopy();
					action |= SetState(Transaction.States.Calling);
					break;

				case Transaction.States.Calling:
				case Transaction.States.Proceeding:
					break;

				case Transaction.States.Completed:
					if (isAck && IsTransportUnreliable)
					{
						if (eventArgs != null)
							eventArgs.Dispose();
						eventArgs = e.CreateDeepCopy();
						isAckCached = true;
					}
					break;

				case Transaction.States.Terminated:
					break;
			}

			return action;
		}
		private void CacheMessage(ServerAsyncEventArgs e)
		{
			if (eventArgs != null)
				eventArgs.Dispose();
			eventArgs = e.CreateDeepCopy();
		}
		public int ProccessTransactionUser(bool isAck, ServerAsyncEventArgs e)
		{
			int action = 0;

			switch (State)
			{
				case Transaction.States.Created:

					action |= Transaction.Action.SendOutgoingMessage;

					if (e.LocalEndPoint.IsTransportUnreliable())
						eventArgs = e.CreateDeepCopy();

					action |= SetState(Transaction.States.Trying);
					break;

				case Transaction.States.Trying:
				case Transaction.States.Proceeding:
				case Transaction.States.Completed:
				case Transaction.States.Terminated:
					break;
			}

			return action;
		}