Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

A message is a series of bytes which contains the request or response. If the message is large, then we will have provision to divide the message into small messages. In that case, client/server needs to collect all messages to parse the request/response. The message will be sent in following way.  A client can send the multiple messages on the connection and the server will respond to those messages in same order. 

...

Message => MessageHeader (Request | Response | Error )
MessageHeader => defined below
Request => defined below
Response => defined below

...

CorrelationId => fixedSize = 4 bytes, type = int32
ResponseHeader => (ResponseTypeId | ErrorCode) hasMetaData CorrelationIdDescription
ResponseTypeId => fixedSize = 2 bytes, type = int16 
ErrorCode => fixedSize = 2 bytes, type = int16When there is error response will have error message(String) for it
hasMetaData => fixedSize = 1 byte, type = booleanif there is any meta data associated with this requestThe id which comes in the request message.

ErrorResponse

The server will raise the error when it failed to execute api request from the client. The error code and message should help the client to diagnose the issue.

...

PutRequestMessagePutResponseMessage
Code Block
PutRequestMessage {
	MessageHeader {
  		Size, 4 byte, int32
 		isPartialMessage, 1 byte, boolean
		CorrelationId, 4 byte, int32
 	}
 
 	RequestHeader {
 		ApiId, 2 byte, int16
 		ApiVersion, 1 byte, int8
	    hasMetaData, 1 byte, boolean
 	}
 	PutRequest {
 		regionName, varaible , String {
			len, 2 byte, int16
			variable, utf encoding		
		}
 		key, variable, bytes
		CallbaclArg, variable, bytes
 		Value {
 			ValueHeader {
				Size, 4 byte, int32
				hasPartialBytes, 1 byte, boolean
 			}
			value {
 				bytes, series of bytes
			}
 		}
 	}
}
Code Block
PutResponseMessage {
	MessageHeader {
    	Size, 4 byte, int32
        isPartialMessage, 1 byte, boolean
		CorrelationId, 4 byte, int32
    }
  	Success, 1 byte, boolean
}
GetRequestMessageGetResponseMessage
Code Block
GetRequestMessage ResponseHeader {
	MessageHeader {
  		SizeResponseTypeId, 42 byte, int16
 		hasMetaData, 1 byte, boolean
 	}
  	Success, 1 byte, boolean
}
GetRequestMessageGetResponseMessage
Code Block
GetRequestMessage {
	MessageHeader {
  		Size, 4 byte, int32
 		isPartialMessage, 1 byte, boolean
		CorrelationId, 4 byte, int32
 	}
 
 	RequestHeader {
 		ApiId, 2 byte, int16
 		ApiVersion, 1 byte, int8
	    hasMetaData, 1 byte, boolean
 	}
 	GetRequest {
 		regionName, varaible , String {
			len, 2 byte, int16
			variable, utf encoding		
		}
 		key, variable, bytes
		CallbaclArg, variable, bytes
 	}
}
Code Block
GetResponseMessage {
	MessageHeader {
    	Size, 4 byte, int32
        isPartialMessage, 1 byte, boolean
		CorrelationId, 4 byte, int32
    }
     isPartialMessageResponseHeader {
 		ResponseTypeId, 12 byte, booleanint16
 		CorrelationIdhasMetaData, 41 byte, int32boolean
    	}
  	Result, variable, bytes
}
PutAllRequestMessagePutAllResponseMessage
Code Block
PutAllRequestMessage {
	MessageHeader {
  		Size, 4 byte, int32
 		isPartialMessage, 1 byte, boolean
		CorrelationId, 4 byte, int32
 	}
 
 	RequestHeader {
 		ApiId, 2 byte, int16
 		ApiVersion, 1 byte, int8
	    hasMetaData, 1 byte, boolean
 	}
 	PutRequest {
 		regionName, varaible , String {
			len, 2 byte, int16
			variable, utf encoding		
		}
		NumberOfKeyValuePair, 4 byte, int32 
		KeyValuePair  { 
	 		key, variable, bytes		
 			Value {
 				ValueHeader {
					Size, 4 byte, int32
					hasPartialBytes, 1 byte, boolean
 				}
				value {
 					bytes, series of bytes
				}
			}
 		}
		CallbaclArg, variable, bytes
 	}
}
Code Block
PutAllResponseMessage {
	MessageHeader {
    	Size, 4 byte, int32
        isPartialMessage, 1 byte, boolean
		CorrelationId, 4 byte, int32
     isPartialMessage}
	ResponseHeader {
 		ResponseTypeId, 12 byte, booleanint16
 		CorrelationIdhasMetaData, 41 byte, int32boolean
    	}
  	Success, 1 byte, boolean
}
GetAllRequestMessageGetAllResponseMessage
Code Block
GetAllRequestMessage {
	MessageHeader {
  		Size, 4 byte, int32
 		isPartialMessage, 1 byte, boolean
		CorrelationId, 4 byte, int32
 	}
 
 	RequestHeader {
 		ApiId, 2 byte, int16
 		ApiVersion, 1 byte, int8
	    hasMetaData, 1 byte, boolean
 	}
 	GetRequest {
 		regionName, varaible , String {
			len, 2 byte, int16
			variable, utf encoding		
		}
		NumberOfKeys, 4 byte, int32 
		keys {
 			key, variable, bytes
		}
		CallbaclArg, variable, bytes
 	}
}
Code Block
GetAllResponseMessage {
	MessageHeader {
    	Size, 4 byte, int32
        isPartialMessage, 1 byte, boolean
		CorrelationId, 4 byte, int32
    }
    ResponseHeader {
 		ResponseTypeId, 2 byte, int16
 		hasMetaData, 1 byte, boolean
 	}
  	NumberOfKeyValuePair, 4 byte, int32 
	KeyValuePair  { 
		key, variable, bytes		
 		Value {
 			ValueHeader {
				Size, 4 byte, int32
				hasPartialBytes, 1 byte, boolean
 			}
			value {
 				bytes, series of bytes
			}
		}
 	}
}

...