package io.homeassistant.android; import android.os.Handler; import android.os.Message; import java.lang.ref.WeakReference; public class CommunicationHandler extends Handler { public static final int MESSAGE_LOGIN_SUCCESS = 0x04; public static final int MESSAGE_LOGIN_FAILED = 0x08; public static final int MESSAGE_STATES_AVAILABLE = 0x10; public static final int FAILURE_REASON_GENERIC = 0x1; public static final int FAILURE_REASON_WRONG_PASSWORD = 0x2; public static final int FAILURE_REASON_SSL_MISMATCH = 0x4; private final WeakReference<ServiceCommunicator> activity; public CommunicationHandler(ServiceCommunicator a) { activity = new WeakReference<>(a); } @Override public void handleMessage(Message msg) { if (activity.get() == null) { return; } switch (msg.what) { case MESSAGE_LOGIN_SUCCESS: activity.get().loginSuccess(); break; case MESSAGE_LOGIN_FAILED: activity.get().loginFailed(msg.arg1); break; case MESSAGE_STATES_AVAILABLE: activity.get().updateStates(); break; } } public interface ServiceCommunicator { void loginSuccess(); void loginFailed(int reason); void updateStates(); } }