package org.deviceconnect.android.deviceplugin.alljoyn; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; /** * A helper class to perform a one-shot AllJoyn session task. * * @author NTT DOCOMO, INC. */ public class OneShotSessionHandler { private OneShotSessionHandler() { } public static void run(@NonNull final Context context, @NonNull final String busName, final short port, @NonNull final SessionJoinCallback callback) { final AllJoynDeviceApplication app = (AllJoynDeviceApplication) context.getApplicationContext(); AllJoynDeviceApplication.ResultReceiver resultReceiver = app.new ResultReceiver() { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { if (resultCode != AllJoynDeviceApplication.RESULT_OK) { callback.onSessionFailed(busName, port); return; } int sessionId = resultData.getInt(AllJoynDeviceApplication.PARAM_SESSION_ID); callback.onSessionJoined(busName, port, sessionId); app.leaveSession(sessionId, app.new ResultReceiver()); } }; app.joinSession(busName, port, resultReceiver); } public interface SessionJoinCallback { void onSessionJoined(@NonNull String busName, short port, int sessionId); void onSessionFailed(@NonNull String busName, short port); } }