Example #1
0
 public void Dispose()
 {
     WrappedSocketsMap.Clear();
     IdentitySocketsMap.Clear();
     IdentityConnectionSocketsMap.Clear();
     StoredResponses.Clear();
     StopProtocolJobs();
     socket?.Dispose();
     socket = null;
 }
Example #2
0
        public Message Request(Message msg, int millisecondsTimeout = 500)
        {
            if (socket == null)
            {
                var errorPackage = new Message();
                errorPackage.Success = false;
                return(errorPackage);
            }

            var msgId           = GenerateStoredAwaiter();
            var responseAwaiter = StoredResponses[msgId];

            var envelop = new Envelope(msg);

            envelop.Append(RequestProtocol.Command);
            envelop.Append(msgId);

            var networkSuccess = socket.Send(envelop.ToByteArray());
            var msgReceived    = responseAwaiter.Signal.Wait(millisecondsTimeout);

            if (networkSuccess && msgReceived)
            {
                var dataEnvelop = responseAwaiter.Data.GetMessage();
                dataEnvelop.Success = true;

                StoredResponses.Remove(msgId);

                return(dataEnvelop);
            }
            else
            {
                var errorPackage = new Message();
                errorPackage.Success = false;
                return(errorPackage);
            }
        }