An implementation of the broker pattern for distributed network components implemented in C using TCP/IP sockets.
This implements a basic RPC-based system whereby servers could register with a central broker component, advertise its capabilities which would be method names.
Clients can also register with the broker and ask for methods that it can invoke. When these methods are invoked through a request made to the broker, the broker marshals the request to the server that registered that message.
The solution was designed such that the clients appear to be calling native c-based methods, which they do however these methods are generated from the server's implementation .c files and an autogenerated implementation deals with constructing the request for the called methods to be made to the broker.
The autogenerated code is called the proxy stubs and these are generated using Perl.
The broker will forward these request and their responses back to the requesting client.
The requests are constructed using a custom protocol based on msgpack.