public virtual Message Receive() { lock (this) if (buffer.Count > 0) { return(buffer.Pop()); } if (IsLocal) { if (Role == Roles.Client) { return(client.Dequeue()); } else { return(server.Dequeue()); } } var len = reader.ReadInt32(); var buf = new byte[len]; //while (socket.Available <= 0) System.Threading.Thread.Sleep(10); reader.Read(buf, 0, len); var m = new MemoryStream(buf); var msg = (Message)serializer.Deserialize(m); if (msg == null) { throw new InvalidOperationException("Message must not be null."); } if (!msg.CheckSecurityToken(this)) { SendAsync(new StatusMessage(Commands.InvalidPassword)); MonoDebugServer.InvalidPassword(); } if (msg is IExtendedMessage) { ((IExtendedMessage)msg).Receive(this); } return(msg); }
public bool MoveNext() { Value = Queue.Dequeue(); hasValue = true; return(Queue.Closed); }