Refactored and added comments for the TransportHandler interface

Shabirmean 9 years ago
parent f19d6ff8ed
commit f1d389011d

@ -22,29 +22,87 @@ package org.wso2.carbon.device.mgt.iot.transport;
* This interface consists of the core functionality related to the transport between any device and the server. The
* interface is an abstraction, regardless of the underlying protocol used for the transport. Implementation of this
* interface by any class that caters a specific protocol (ex: HTTP, XMPP, MQTT, CoAP) would ideally have methods
* specific to the protocol used for communication and thees methods that implement the logic related to the devices
* using the protocol.
* specific to the protocol used for communication and other methods that implement the logic related to the devices
* using the protocol. The methods of the interface are identified as generic ones for implementing transport
* protocols for device communication. The implementation can utilize the appropriate method signatures applicable for
* intended protocol.
*
* @param <T> a message type specific to the protocol implemented
* @param <T> an object of the message type specific to the protocol implemented. To be set to 'String' if there
* isn't anything specific.
*/
public interface TransportHandler<T> {
int DEFAULT_TIMEOUT_INTERVAL = 5000; // millis ~ 10 sec
// a default timeout interval to be used for the protocol specific connections
int DEFAULT_TIMEOUT_INTERVAL = 5000; // millis ~ 5 sec
/**
* Implements the underlying connect mechanism specific to the protocol enabled by the interface. An object of a
* class that implements this interface would call this method before any communication is started via the
* intended protocol.
*/
void connect();
/**
* Used to check whether a connection (via the implemented protocol) to the external-endpoint exists. Ideally
* used to verify that the connection persists and to spawn a reconnection attempt if not.
*
* @return 'true' if connection is already made & exists, else 'false'.
*/
boolean isConnected();
/**
* @throws TransportHandlerException in the event of any exceptions that occur whilst processing the message.
* @see TransportHandler#processIncomingMessage(Object, String...)
*/
void processIncomingMessage() throws TransportHandlerException;
/**
* @param message the message (of the type specific to the protocol) received from the device.
* @throws TransportHandlerException
* @see TransportHandler#processIncomingMessage(Object, String...)
*/
void processIncomingMessage(T message) throws TransportHandlerException;
/**
* This is an overloaded method with three different method-signatures. This method is used to process any
* incoming messages via the implemented protocol. It would ideally be invoked at a point where a message
* received event is activated (Ex: `MessageArrived` callback in Eclipse-Paho-MQTT Client & `PacketListener`(s)
* in XMPP).
* <p/>
*
* @param message the message (of the type specific to the protocol) received from the device.
* @param messageParams one or more other parameters received as part-of & relevant-to the message (Ex: MQTT Topic).
* @throws TransportHandlerException in the event of any exceptions that occur whilst processing the message.
*/
void processIncomingMessage(T message, String... messageParams) throws TransportHandlerException;
/**
* @throws TransportHandlerException in the event of any exceptions that occur whilst sending the message.
* @see TransportHandler#publishDeviceData(String...)
*/
void publishDeviceData() throws TransportHandlerException;
/**
* @param publishData the message (of the type specific to the protocol) to be sent to the device.
* @throws TransportHandlerException in the event of any exceptions that occur whilst sending the message.
* @see TransportHandler#publishDeviceData(String...)
*/
void publishDeviceData(T publishData) throws TransportHandlerException;
/**
* This is an overloaded method with three different method-signatures. This method is used to publish messages
* to an external-endpoint/device via the implemented protocol. It could in itself call the (communicating)
* external-endpoint or invoke any method provided by the protocol specific library.
* <p/>
*
* @param publishData one or more parameters specific to the message and the data to be sent.
* @throws TransportHandlerException in the event of any exceptions that occur whilst sending the message.
*/
void publishDeviceData(String... publishData) throws TransportHandlerException;
/**
* Implements the underlying disconnect mechanism specific to the protocol enabled by the interface. An object of a
* class that implements this interface would call this method upon completion of all communication. In the case of
* the IoT-Server invoking this would only be required if the server shuts-down.
*/
void disconnect();
}

Loading…
Cancel
Save