Here are my observations. 1. Let's create wiki page where we will keep the protocol definition and reflect all the changes.
2. I would put op_code to the first place. This will make possible to eliminate length field for many messages. Look at your handshake request - it is always of fixed length. Why do we need length then? Variable length operations - puts, putalls, getalls, etc will definitely need length field (or keys count and length of each key separately in each binary object - let's discuss it later). 3. I would also add build date and revision hash to handshake. Same as we do for Ignite. 4. I would like to have explicit protocol version for client to make possible for newer clients to work with older servers. Moreover, I think there may be some third party protocol implementations on other platforms which may not be driven by Ignite community and their versioning may be different. So, explicit protocol version is really handy here. Thanks! --Yakov