===== Communication Protocol =====
April 28, 2009
== Communication Protocol - structure ==
{{expres:fabric:evlbisystem:comm_protocol_2.1.png|}}
== Soap detail ==
- Soap version
* Soap 1.0 and HTTP 1.0 is used to communicate with Jive modules written in Python. In order to enable this, each Axis stub needs to have the following options enabled
* _serviceClient.getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
* _serviceClient.getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.HTTP_PROTOCOL_VERSION,org.apache.axis2.transport.http.HTTPConstants.HEADER_PROTOCOL_10);
== Protocol description ==
- Version
* Current Protocol Version: 2.1
- History of changes
* Chunk information removed from MessageHeader structure and moved to ChunkInfo structure
* Callback location added to MessageHeader
* Each message sent between components consist of Message Header and Chunk Info structures. Please note that some fields can be used depending on the context.
* The content of the MessageHeader and ChunkInfo is presetened below
- **Message Header** - contains all the common fields which are exchanged between modules.
*
/**
* Experiment name - in fact experiment identifier, because experiment names
* are unique.
*/
private String experimentName;
/**
* Job identifier - used to differentiate data in case where the same
* experiment data is being correlated at the same time, but with different
* parameters
*/
private String jobId;
/** Sender identifier, unique string or abbreviation */
private Sender senderCode;
/** Specifies an URL of the message sender */
private String senderLocation;
/** Specifies a location of the service where return message should be sent */
private String callbackLocation;
- **Chunk Info** - contains information about a chunk
*
/** Identifier of a data chunk - chunks are numbered starting from 0 */
private long chunkId;
/** Specifies number of chunks in the current experiment */
private long chunkCount;
/** Specifies a size of a single data chunk */
private long chunkSize;
/** Specifies location of the data chunk (URL) */
private String chunkLocation;
/** Specifies the start time of data chunk */
private String chunkStartTime;
/** Specifies the end time of the data chunk */
private String chunkEndTime;
/** Telescope abbreviation - two letter abbreviation */
private String telescopeAbbr;