Hi,
first of all, thanks to Kenton for all the great work and the new release 
candidate (which works for me, but I am just playing around currently so my 
coverage is below that of the various tests and that's why I didn't answer 
your request).

My question is regarding RPC interface implementation with inheritance in 
C++:

Given some legacy classes A and B like
class A {
    // some A features
};
class B : public A {
    // some B features on top of A
}

I'd like to make the A and B classes' features available via Capnproto RPC 
interfaces like

interface AA {
    aFunc @0 () -> (foo :Foo);
}

interface BB(AA) {
    bFunc @0 () -> (bar :Bar);
}

Implementation of the AA interface is straightforward like

class A : public AA::Server {
    // aFunc impl. for access of A's functionality
}

but when I now want to implement class B to inherit both from A (and thus 
indirectly from AA) and from BB::Server, I get a conflict on the ::Server 
classes' dispatch methods which I have no Idea how to resolve. 

class B : public A, public BB::Server {
    // bFunc impl. for access of B's additional functionality

This in turn also raises a related question: How to implement multiple RPC 
interfaces on one legacy class (say I want to have different capabilities 
for different operations of my class' data)? My original hope was that I 
can just inherit from all the interfaces. But since they are no "pure 
virtual" interfaces, again the dispatch methods will collide.

Still hoping I just didn't get it - thanks in advance for any advice!

Regards
Henning

-- 
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 [email protected].
Visit this group at https://groups.google.com/group/capnproto.

Reply via email to