All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.almende.eve.transport.ws.WebsocketTransport Maven / Gradle / Ivy

The newest version!
/*
 * Copyright: Almende B.V. (2014), Rotterdam, The Netherlands
 * License: The Apache Software License, Version 2.0
 */
package com.almende.eve.transport.ws;

import java.io.IOException;
import java.net.URI;
import java.util.logging.Logger;

import javax.websocket.CloseReason;
import javax.websocket.EndpointConfig;
import javax.websocket.RemoteEndpoint.Async;
import javax.websocket.Session;

import com.almende.eve.capabilities.handler.Handler;
import com.almende.eve.transport.AbstractTransport;
import com.almende.eve.transport.Receiver;
import com.almende.eve.transport.TransportService;
import com.fasterxml.jackson.databind.node.ObjectNode;

/**
 * The Class WebsocketTransport.
 */
public abstract class WebsocketTransport extends AbstractTransport {
	private static final Logger	LOG			= Logger.getLogger(WebsocketTransport.class
													.getName());
	private boolean				connected	= false;
	
	/**
	 * Instantiates a new websocket transport.
	 * 
	 * @param address
	 *            the address
	 * @param handle
	 *            the handle
	 * @param service
	 *            the service
	 * @param params
	 *            the params
	 */
	public WebsocketTransport(final URI address,
			final Handler handle, final TransportService service,
			final ObjectNode params) {
		super(address, handle, service, params);
	}
	
	protected abstract void registerRemote(String key, Async remote);
	
	/**
	 * Receive.
	 * 
	 * @param body
	 *            the body
	 * @param id
	 *            the id
	 * @throws IOException
	 *             Signals that an I/O exception has occurred.
	 */
	public abstract void receive(final String body, final String id)
			throws IOException;
	
	/**
	 * On close.
	 * 
	 * @param session
	 *            the session
	 * @param closeReason
	 *            the close reason
	 */
	public void onClose(final Session session, final CloseReason closeReason) {
		LOG.info("Connection closed:" + closeReason.getReasonPhrase() + "("
				+ closeReason.getCloseCode().getCode() + ":"
				+ closeReason.getCloseCode().toString() + ")");
		setConnected(false);
	}
	
	/**
	 * On open.
	 * 
	 * @param session
	 *            the session
	 * @param config
	 *            the config
	 */
	public void onOpen(final Session session, final EndpointConfig config) {
		setConnected(true);
	}
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.almende.eve.transport.Transport#connect()
	 */
	@Override
	public void connect() throws IOException {
		// Nothing to do on the server side.
	}
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.almende.eve.transport.Transport#disconnect()
	 */
	@Override
	public void disconnect() {
		// Nothing to do on the server side.
	}
	
	/**
	 * Checks if is connected.
	 * 
	 * @return true, if is connected
	 */
	public boolean isConnected() {
		return connected;
	}
	
	/**
	 * Sets the connected.
	 * 
	 * @param connected
	 *            the new connected
	 */
	public void setConnected(final boolean connected) {
		this.connected = connected;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy