public static TransferFileJobRequest GetTransferRequest(Stream stream) { TransferFileJobRequest result = null; var lenBytes = new byte[LengthMessageSize]; int st = stream.Read(lenBytes, 0, lenBytes.Length); if (st < 0) { throw new InvalidOperationException("Read fail"); } var responseLength = BitConverter.ToInt64(lenBytes, 0); var responseBytes = new byte[responseLength]; int readThisTime = 0; for (var rsf = 0; rsf < responseLength; rsf += readThisTime) { st = stream.Read(responseBytes, rsf, (int)(responseLength - rsf)); if (st > 0) { readThisTime += st; } } using (var ms = new MemoryStream(responseBytes)) { var responseSerializer = new DataContractJsonSerializer(typeof(TransferFileJobRequest)); result = responseSerializer.ReadObject(ms) as TransferFileJobRequest; } return(result); }
public static void SendTransferRequest(Stream stream, TransferFileJobRequest request) { using (var ms = new MemoryStream()) { var ser = new DataContractJsonSerializer(typeof(TransferFileJobRequest)); ser.WriteObject(ms, request); var msgArray = ms.ToArray(); var lenBytes = BitConverter.GetBytes((long)msgArray.Length); stream.Write(lenBytes, 0, lenBytes.Length); stream.Write(msgArray, 0, msgArray.Length); } }