/*******************************************************************************
 * Copyright (c) 2008, 2014 IBM Corp.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * and Eclipse Distribution License v1.0 which accompany this distribution. 
 *
 * The Eclipse Public License is available at 
 *    http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at 
 *   http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * Contributors:
 *    Ian Craggs - initial API and implementation and/or initial documentation
 *******************************************************************************/

package org.eclipse.paho.mqttsn.gateway.client;

import org.eclipse.paho.mqttsn.gateway.exceptions.MqttsException;
import org.eclipse.paho.mqttsn.gateway.messages.mqtts.MqttsMessage;
import org.eclipse.paho.mqttsn.gateway.utils.ClientAddress;


/**
 * 
 * This class represents the interface over which the clients send 
 * Mqtts messages to the gateway and vice versa.
 * 
 */
public interface ClientInterface {	
		
	/**
	 * The method that initializes the client interface.
	 */
	public void initialize() throws MqttsException;
	
	
	/**
	 * The method that sends a Mqtts message to the specified SA client (unicast).
	 * @param address The unique address of the SA client.
	 * @param msg The Mqtts message to be sent.
	 */
	public void sendMsg(ClientAddress address, MqttsMessage msg);
	
	
	/**
	 * The method that broadcasts a Mqtts Message to the network.
	 * @param msg The Mqtt message to be broadcasted.
	 */
	public void broadcastMsg(MqttsMessage msg);
	
	
	/**
	 * The method that broadcasts a Mqtts message to the network within a specific radius.
	 * @param radius The broadcast radius of the Mqtt message.
	 * @param msg The Mqtt message to be broadcasted.
	 */
	public void broadcastMsg(int radius, MqttsMessage msg);
}