/* AWSIotWebClientManager.java Copyright (c) 2016 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.awsiot.remote; import android.content.Context; import android.util.Log; import org.deviceconnect.android.deviceplugin.awsiot.cores.core.RemoteDeviceConnectManager; import org.deviceconnect.android.deviceplugin.awsiot.cores.p2p.WebClient; import org.deviceconnect.android.deviceplugin.awsiot.cores.util.AWSIotUtil; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class AWSIotWebClientManager { private static final boolean DEBUG = BuildConfig.DEBUG; private static final String TAG = "AWS-Remote"; private final List<WebClient> mWebClientList = Collections.synchronizedList(new ArrayList<WebClient>()); private AWSIotRemoteManager mManager; private Context mContext; public AWSIotWebClientManager(final Context context, final AWSIotRemoteManager manager) { mContext = context; mManager = manager; } public void destroy() { synchronized (mWebClientList) { for (WebClient client : mWebClientList) { client.close(); } } mWebClientList.clear(); } public void onReceivedSignaling(final RemoteDeviceConnectManager remote, final String message) { if (DEBUG) { Log.i(TAG, "AWSIotWebLocalClientManager#onReceivedSignaling: " + remote); Log.i(TAG, "message=" + message); } WebClient webClient = new WebClient(mContext) { @Override public void onNotifySignaling(final String signaling) { mManager.publish(remote, AWSIotUtil.createLocalP2P(signaling)); } @Override public void onDisconnected(final WebClient webClient) { mWebClientList.remove(webClient); } }; webClient.onReceivedSignaling(message); mWebClientList.add(webClient); } }