/*
DConnectServer.java
Copyright (c) 2014 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.server;
import org.deviceconnect.server.websocket.DConnectWebSocket;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* Device Connect用HTTPサーバー.
*
* @author NTT DOCOMO, INC.
*/
public abstract class DConnectServer {
/** サーバーイベントの通知を受けるリスナークラス. */
protected DConnectServerEventListener mListener;
/** WebSocketのセッション. */
protected final Map<String, DConnectWebSocket> mSockets;
/** サーバー設定情報. */
protected final DConnectServerConfig mConfig;
/**
* コンストラクタ. サーバーを生成します
*
* @param config サーバー設定情報。
* @throws NullPointerException configに{@code null}が設定された場合に発生
*/
public DConnectServer(final DConnectServerConfig config) {
if (config == null) {
throw new IllegalArgumentException("Configuration must not be null.");
}
mConfig = config;
mSockets = new ConcurrentHashMap<String, DConnectWebSocket>();
}
/**
* サーバーを非同期で起動する. オーバーライドするクラスで非同期処理を実装すること。
*/
public abstract void start();
/**
* サーバーを終了させる.
*/
public abstract void shutdown();
/**
* サーバーが起動しているか調査する.
*
* @return 起動中の場合true、その他はfalseを返す
*/
public abstract boolean isRunning();
/**
* サーバーのバージョンを返す.
*
* @return サーバーバージョン
*/
public abstract String getVersion();
/**
* 設定されたコンフィグ情報を取得します.
* @return DConnectServerConfigのインスタンス
*/
public DConnectServerConfig getConfig() {
return mConfig;
}
/**
* イベントリスナーを設定します.
*
* @param listener リスナーオブジェクト
*/
public void setServerEventListener(final DConnectServerEventListener listener) {
mListener = listener;
}
/**
* 指定したIDのWebSocketを取得します.
* <p>
* 指定されたIDのWebSocketが存在しない場合には{@code null}を返却します。
* </p>
* @param webSocketId webSocketのID
* @return DConnectWebSocketのインスタンス
*/
public DConnectWebSocket getWebSocket(final String webSocketId) {
return mSockets.get(webSocketId);
}
/**
* 接続されているWebSocketの一覧を取得します.
* @return DConnectWebSocketのマップ
*/
public Map<String, DConnectWebSocket> getWebSockets() {
return mSockets;
}
}