currently, any change to any rpc message breaks the protocol, with mysterious exceptions occurring at run time.
a versioning sceme would have two benefits:
- intelligent error messages, indicating that an upgrade is required
- backwards compatibility could be supported.
the proposal is to add a "const version" for each protocol, and a method: int getVersion(int version) that sends the client's version and receives the server's version. This would be the first method invoked on connection. Both sides then either agree on the lowest version number, providing backwards compatibility support, or abort the connection as "unsupported version".