Aegis.Network.AwaitableMethod.SendAndWaitResponse C# (CSharp) Method

SendAndWaitResponse() public method

public SendAndWaitResponse ( Packet packet, ushort responsePacketId ) : Task
packet Packet
responsePacketId ushort
return Task
        public virtual async Task<Packet> SendAndWaitResponse(Packet packet, ushort responsePacketId)
        {
            TaskCompletionSource<Packet> tcs = new TaskCompletionSource<Packet>();
            TCSData data = new TCSData() { packetId = responsePacketId, tcs = tcs, predicate = null };
            Packet response = null;


            lock (_listTCS)
            {
                _listTCS.Add(data);
            }


            await Task.Run(() =>
            {
                try
                {
                    _session.SendPacket(packet);
                    response = tcs.Task.Result;
                }
                catch (Exception)
                {
                    //  Nothing to do.
                }
            });

            return response;
        }

Same methods

AwaitableMethod::SendAndWaitResponse ( Packet packet, ushort responsePacketId, bool>.Func predicate ) : Task
AwaitableMethod::SendAndWaitResponse ( Packet packet, ushort responsePacketId, bool>.Func predicate, int timeout ) : Task
AwaitableMethod::SendAndWaitResponse ( Packet packet, ushort responsePacketId, int timeout ) : Task