I'm not sure I'm usign the right terminology in my question, but I hope you 
will understand my problem with the following example.

I'm developing a media library where the user can play/pause/stop different 
kinds of "pipelines" (source ~ camera, filter ~ processing, sink ~ 
display). Depending on their type, these pipeline can listen to each other, 
or not (e.g: a source pipeline cannot listen). I'm now working on a "capnp 
wrapper" of the library, so that it can be controlled via RPC.

I have replicated the class inheritance with success:

interface Publisher {}

interface Subscriber {
listenTo @0 (publisher :Publisher);
}

interface Pipeline {
play @0 ();
pause @1 ();
stop @2 (); 
}

interface SourcePipeline extends(Pipeline, Publisher) {}

interface FilterPipeline extends(Pipeline, Publisher, Subscriber) {}

interface SinkPipeline extends(Pipeline, Subscriber) {}

Server-side I have those impl classes, which holds the references to the 
underlying objects of the media library (pub_ & sub_).

class PublisherImpl : public virtual GstDaemon::Publisher::Server {
protected:
PublisherImpl(my_underlying_library::Publisher* pub) : pub_(pub) {}
private:
my_underlying_library::Publisher* pub_;
};

class SubscriberImpl : public virtual GstDaemon::Subscriber::Server {
protected:
SubscriberImpl(my_underlying_library::Subscriber* sub) : sub_(sub) {}

kj::Promise<void> listenTo(ListenToContext context) override {
auto pub = context.getParams().getPublisher(); // GstDaemon::Publisher
::Client
// ??? = PublisherImpl::pub_
sub_->listenTo(???)
}

private:
my_underlying_library::Subscriber* sub_;
};

Now, from the client, I wanted to do something like this:
//GstDaemon::Subscriber::Client subscriber; // already returned by the 
server
//GstDaemon::Publisher::Client publisher; // already returned by the server
auto request = subscriber.listenToRequest();
request.setPublisher(publisher);
auto promise = request.send();

However, as you can see, on the server it's not possible to get the pub_ 
pointer when the listenTo method is called. Is there any way I can get a 
reference to the PublisherImpl here ?

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capnproto+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/488a63c6-92bc-4bc8-9ab8-e648d3a577bfn%40googlegroups.com.

Reply via email to