I have a server application running on Linux. This application was
developed using protobuf c and protobuf.rpc.c files for RPC communication.
I have a client application which was running on windows.It was developed in c# using protobuf-net.dll and ProtobufRemote.dll for RPC communication.Both application using the same proto file having same service methods.
I can able to create a proxy from C# client application with the below code.
using System.Configuration;
using System.Net.Sockets;
using ProtoBufRemote;
using StarCall;
#region Create client connection
Int32 port = Convert.ToInt32(ConfigurationManager.AppSettings["PORT"]);
TcpClient tcpClient = new TcpClient(ConfigurationManager.AppSettings["SERVERIP"].ToString(), port);
var controller = new RpcController();
var client = new RpcClient(controller);
var channel = new NetworkStreamRpcChannel(controller, tcpClient.GetStream());
channel.Start();
var service = client.GetProxy<Istarcall_services>();
if (service == null)
Console.WriteLine("error creating client..");
Console.WriteLine("Client connected to Server....\n");
#endregion
But whenever I am trying to invoke a service method from C# client application as shown below, the application is hanging and not getting any response from Linux c server application.
try
{
Room_Config room = new Room_Config();
room.Room_Dial_Num = 1;
Room_Config roomRet = service.read_room(room);
}
catch (Exception)
{
throw;
}
The application is hanging in the below code.
protected RpcMessage.Parameter EndAsyncCallHelper(string methodName, IAsyncResult asyncResult)
{
PendingCall pendingCall = (PendingCall)asyncResult;
pendingCall.AsyncWaitHandle.WaitOne();
pendingCall.AsyncWaitHandle.Close();
if (pendingCall.IsFailed)
throw new InvalidRpcCallException(serviceName, methodName,
String.Format("Server failed to process call, returned error message: \"{0}\".",
pendingCall.ServerErrorMessage));
return pendingCall.Result;
}
According to above mentioned scenarios, I have the following queries.
1. Whether this protobuf remote c# dll can help to create a communicatgion from the linux c code. If not please help me how to create a communication channel with the linux c code.
2. Please provide if any alternative rpc dll for c# client application to communicate to linux protobuf c and protobuf rpc.c file.
3. Please tell me if my above approach is wrong and rectify with the suitable solution.
Please help me out. If not clear please send to mail mentioned below.