package no.divvun.Analyzer.Client;

import no.divvun.Analyzer.Communication.Request;
import no.divvun.Analyzer.Communication.Response;

/**
 * Divvun server connection interface. Implemented by all classes providing
 * connection to the Divvun server. 
 * @author tomi
 */
public interface DivvunServerConnection {
	/**
	 * Initializes connection.
	 * @param divvunrequestlistener Connection listener.
	 * @param serverAddress Hostname of the Divvun server.
	 * @param serverPort Port of the Divvun server
	 * @throws DivvunServerConnectionException
	 */
	public abstract void initialize(DivvunRequestListener divvunrequestlistener,
								  String serverAddress, int serverPort)
		throws DivvunServerConnectionException;
	
	/**
	 * Sends the given request to the server.
	 * @param request Request to send.
	 */
	public abstract Response sendRequest(Request request);
}
