private OperationResult invokeRemote(Operation operation)
{
OperationResult result = null;
TcpClient clientSocket = new TcpClient();
try
{
clientSocket.Connect(host, port);
NetworkStream serverStream = clientSocket.GetStream();
StreamWriter clientStreamWriter = new StreamWriter(serverStream);
StreamReader clientStreamReader = new StreamReader(serverStream);
String jsonOperation = JsonConvert.SerializeObject(operation);
clientStreamWriter.WriteLine(jsonOperation);
clientStreamWriter.Flush();
String replyJson = clientStreamReader.ReadLine();
if (replyJson != null)
{
result = JsonConvert.DeserializeObject<OperationResult>(replyJson);
}
clientStreamReader.Close();
clientStreamWriter.Close();
}
catch (SocketException e)
{
throw e;
}
finally
{
clientSocket.Close();
}
return result;
}