public async Task <Result <MessageData> > ReceiveMessageAsync() { byte[] data = new byte[CliServDefaults.BufferSize]; MessageData mData = null; try { var recvResult = await _clientSocket.ReceiveWithTimeoutAsync( data, 0, data.Length, SocketFlags.None, ReceiveTypeEnum.ReceiveTypeDelay, // Wait forever -1 ) .ConfigureAwait(false); if (recvResult.Value > 0) { mData = SerializeDeserialize.DeserializeFromByteArray <MessageData>(data); } return(Result.Ok(mData)); } catch (SocketException e) { throw; } }
public async Task <Result <string> > SendMessageAsync(object message) { // Encode a string message before sending it to the server var messageData = SerializeDeserialize.SerializeToByteArray(message); // Send it away var sendResult = await _clientSocket.SendWithTimeoutAsync( messageData, 0, messageData.Length, 0, SendTypeEnum.SendTypeCycle, CliServDefaults.SendTimeoutMs ) .ConfigureAwait(false); // If Task did not complete successfully, report the error if (sendResult.Failure) { return(Result.Fail <string>("There was an error sending data to the server")); } // Sent return(Result.Ok("Message sent.")); }