Hi Kenton,

Have you received my email?

On 23 Aralık, 03:30, Kenton Varda <ken...@google.com> wrote:
> Email is fine.  That's what I use to read this list anyway.  :)
>
> On Mon, Dec 22, 2008 at 5:24 PM, <ufukalti...@gmail.com> wrote:
>
> > Is there a way to attach a compressed file here? It would be better if
> > i send you a VS solution.
>
> > Do you mind if i send you over email?
>
> > On 23 Aralık, 01:24, Kenton Varda <ken...@google.com> wrote:
> > > Sorry, I need an example which I can compile myself.  Can you write a
> > small
> > > example program that has the same problem and send me the full source
> > code
> > > so I can debug it?
>
> > > On Mon, Dec 22, 2008 at 2:58 PM, <ufukalti...@gmail.com> wrote:
>
> > > > Hello,
>
> > > > I'm using VS2008, here's the code:
>
> > > > //Math.Service.proto
>
> > > > package Math.Service;
>
> > > > option optimize_for = SPEED;
>
> > > > message MathBinaryOperationRequest {
> > > >    required float first = 1;
> > > >    required float second = 2;
> > > > }
>
> > > > message MathResponse {
> > > >    required float result = 1;
> > > > }
>
> > > > service Math {
> > > >    rpc Add( MathBinaryOperationRequest ) returns( MathResponse );
> > > >    rpc Multiply( MathBinaryOperationRequest ) returns
> > > > ( MathResponse );
> > > > }
>
> > > > // MathServiceServer.cpp
> > > > ....
> > > > MathService *service = new MathService();
> > > > RpcController* rpcCont;
>
> > > > MathServiceServer::MathServiceServer(ISocketHandler &h) : TcpSocket(h)
> > > > {
>
> > > > }
> > > > MathServiceServer::~MathServiceServer()
> > > > {
>
> > > > }
> > > > void MathServiceServer::OnRead()
> > > > {
> > > >        /**
> > > >         * Get the method name from socket buffer by parsing RPC message
> > > >         * Fill request with the encapsulated message inside RPC message
> > > >         * (I'm not including details on those...)
> > > >         */
>
> > > >        const MethodDescriptor* method = service->GetDescriptor()-
> > > > >FindMethodByName(methodName);
> > > >        rpcCont = new MathRpcController();
> > > >        Message* request = service->GetRequestPrototype(method).New();
> > > >        request->ParseFrom...(remainingSocketBuffer);
> > > >        Message* response = service->GetResponsePrototype(method).New();
> > > >        service->CallMethod(method, rpcCont, request, response,
> > NewCallback
> > > > (this,&MathServiceServer::ServiceDone,response));
>
> > > > }
> > > > void MathServiceServer::OnAccept()
> > > > {
>
> > > > }
> > > > void MathServiceServer::ServiceDone(const Math::Service::MathResponse*
> > > > response)
> > > > {
>
> > > > }
> > > > ...
>
> > > > //MathService.cpp
>
> > > > ...
>
> > > > void MathService::Add(google::protobuf::RpcController* controller,
> > > > const Math::Service::MathBinaryOperationRequest* request,
> > > > Math::Service::MathResponse* response, google::protobuf::Closure*
> > > > done)
> > > > {
> > > >        float num1 = request->first();
> > > >        float num2 = request->second();
>
> > > >        float result = num1 + num2;
>
> > > >        response->set_result(result);
> > > >        done->Run();
> > > > }
> > > > void MathService::Multiply(google::protobuf::RpcController*
> > > > controller, const Math::Service::MathBinaryOperationRequest* request,
> > > > Math::Service::MathResponse* response, google::protobuf::Closure*
> > > > done)
> > > > {
> > > >        float num1 = request->first();
> > > >        float num2 = request->second();
>
> > > >        float result = num1 * num2;
>
> > > >        response->set_result(result);
> > > >        done->Run();
> > > > }
>
> > > > ...
>
> > > > Is there anything wrong with this code? I just followed the
> > > > documentation but it doesn't work.
>
> > > > I'll be more than glad if anyone can help me.
>
> > > > Thanks.
>
> > > > On Dec 22, 7:20 pm, Kenton Varda <ken...@google.com> wrote:
> > > > > I can't reproduce this problem.  What compiler are you using?  Can
> > you
> > > > > provide example code which demonstrates the problem?
>
> > > > > On Mon, Dec 22, 2008 at 2:18 AM, <ufukalti...@gmail.com> wrote:
>
> > > > > > Btw, i'm using the latest svn version of the compiler and library
>
> > > > > > On Dec 20, 11:28 pm, ufukalti...@gmail.com wrote:
> > > > > > > Hello,
>
> > > > > > > I'm trying to implement a socket based RPC implementation with
> > > > > > > protobuf but i'm stuck at creating Closure.
>
> > > > > > > // Example that calls a method:
> > > > > > > //   class Handler {
> > > > > > > //    public:
> > > > > > > //     ...
> > > > > > > //
> > > > > > > //     void FooDone(const FooResponse* response) {
> > > > > > > //       ...
> > > > > > > //     }
> > > > > > > //
> > > > > > > //     void CallFoo() {
> > > > > > > //       ...
> > > > > > > //       // When done, call FooDone() and pass it a pointer to
> > the
> > > > > > > response.
> > > > > > > //       Closure* callback = NewCallback(this, &Handler::FooDone,
> > > > > > > response);
> > > > > > > //       // Make the call.
> > > > > > > //       service->Foo(controller, request, response, callback);
> > > > > > > //     }
> > > > > > > //   };
>
> > > > > > > I'm following this example but it gives an error complaining
> > about:
> > > > > > > "function does not take 3 arguments": NewCallback
>
> > > > > > > Can you please help me on this?
>
> > > > > > > Thank you.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to