private bool ReadMessage(List<IScsMessage> messages) { Stream.Position = 0; if (Stream.Length < 4) return false; byte[] headerBytes = new byte[4]; Stream.Read(headerBytes, 0, 4); int length = BitConverter.ToUInt16(headerBytes, 0); if (Stream.Length < length) return false; InnerNetworkMessage message = new InnerNetworkMessage { OpCode = BitConverter.ToInt16(headerBytes, 2), Data = new byte[length - 4] }; Stream.Read(message.Data, 0, message.Data.Length); messages.Add(message); TrimStream(); return true; }
private bool ReadMessage(List <IScsMessage> messages) { Stream.Position = 0; if (Stream.Length < 4) { return(false); } byte[] headerBytes = new byte[4]; Stream.Read(headerBytes, 0, 4); int length = BitConverter.ToUInt16(headerBytes, 0); if (Stream.Length < length) { return(false); } InnerNetworkMessage message = new InnerNetworkMessage { OpCode = BitConverter.ToInt16(headerBytes, 2), Data = new byte[length - 4] }; Stream.Read(message.Data, 0, message.Data.Length); messages.Add(message); TrimStream(); return(true); }
private bool Send() { InnerNetworkMessage message; if (SendLock == null) { return(false); } lock (SendLock) { if (SendData.Count == 0) { return(InnerClient.CommunicationState == CommunicationStates.Connected); } message = new InnerNetworkMessage { Data = new byte[SendDataSize] }; int pointer = 0; for (int i = 0; i < SendData.Count; i++) { Array.Copy(SendData[i], 0, message.Data, pointer, SendData[i].Length); pointer += SendData[i].Length; } SendData.Clear(); SendDataSize = 0; } try { InnerClient.SendMessage(message); } catch { //Already closed return(false); } return(true); }
private bool Send() { InnerNetworkMessage message; if (SendLock == null) return false; lock (SendLock) { if (SendData.Count == 0) return InnerClient.CommunicationState == CommunicationStates.Connected; message = new InnerNetworkMessage { Data = new byte[SendDataSize] }; int pointer = 0; for (int i = 0; i < SendData.Count; i++) { Array.Copy(SendData[i], 0, message.Data, pointer, SendData[i].Length); pointer += SendData[i].Length; } SendData.Clear(); SendDataSize = 0; } try { InnerClient.SendMessage(message); } catch { //Already closed return false; } return true; }