diff options
5 files changed, 27 insertions, 3 deletions
| diff --git a/same-android/src/main/java/com/orbekk/same/android/ClientInterfaceBridge.java b/same-android/src/main/java/com/orbekk/same/android/ClientInterfaceBridge.java index 081b7ed..47a6535 100644 --- a/same-android/src/main/java/com/orbekk/same/android/ClientInterfaceBridge.java +++ b/same-android/src/main/java/com/orbekk/same/android/ClientInterfaceBridge.java @@ -18,6 +18,7 @@ import android.os.Messenger;  import android.os.RemoteException;  import com.orbekk.same.ClientInterface; +import com.orbekk.same.ConnectionState;  import com.orbekk.same.State;  import com.orbekk.same.State.Component;  import com.orbekk.same.StateChangedListener; @@ -193,4 +194,10 @@ public class ClientInterfaceBridge implements ClientInterface {          return VariableFactory.create(this);      } +    /** Doesn't work yet. Maybe we needs a listener interface? */ +    @Override +    public ConnectionState getConnectionState() { +        return null; +    } +  } diff --git a/same-android/src/main/java/com/orbekk/same/android/StateViewerActivity.java b/same-android/src/main/java/com/orbekk/same/android/StateViewerActivity.java index 679e3b6..fac73c0 100644 --- a/same-android/src/main/java/com/orbekk/same/android/StateViewerActivity.java +++ b/same-android/src/main/java/com/orbekk/same/android/StateViewerActivity.java @@ -9,12 +9,10 @@ import android.app.Activity;  import android.os.Bundle;  import android.widget.ArrayAdapter;  import android.widget.ListView; -import android.widget.Toast; -import com.orbekk.same.android.R;  import com.orbekk.same.State; -import com.orbekk.same.StateChangedListener;  import com.orbekk.same.State.Component; +import com.orbekk.same.StateChangedListener;  public class StateViewerActivity extends Activity {      private Logger logger = LoggerFactory.getLogger(getClass()); diff --git a/same/src/main/java/com/orbekk/same/Client.java b/same/src/main/java/com/orbekk/same/Client.java index 8401c4b..f48865d 100644 --- a/same/src/main/java/com/orbekk/same/Client.java +++ b/same/src/main/java/com/orbekk/same/Client.java @@ -16,6 +16,7 @@ import com.orbekk.util.WorkQueue;  public class Client implements DiscoveryListener {      private Logger logger = LoggerFactory.getLogger(getClass()); +    private ConnectionState connectionState = ConnectionState.DISCONNECTED;      private ConnectionManager connections;      private State state;      private String myUrl; @@ -69,6 +70,11 @@ public class Client implements DiscoveryListener {          public void removeStateListener(StateChangedListener listener) {              stateListeners.remove(listener);          } + +        @Override +        public ConnectionState getConnectionState() { +            return Client.this.getConnectionState(); +        }      }      private ClientInterface clientInterface = new ClientInterfaceImpl(); @@ -76,6 +82,7 @@ public class Client implements DiscoveryListener {      private ClientService serviceImpl = new ClientService() {          @Override          public void setState(String component, String data, long revision) throws Exception { +            connectionState = ConnectionState.STABLE;              boolean status = state.update(component, data, revision);              if (status) {                  for (StateChangedListener listener : stateListeners) { @@ -123,6 +130,7 @@ public class Client implements DiscoveryListener {      }      public void interrupt() { +        connectionState = ConnectionState.DISCONNECTED;          discoveryThread.interrupt();      } @@ -130,8 +138,13 @@ public class Client implements DiscoveryListener {          return myUrl;      } +    public ConnectionState getConnectionState() { +        return connectionState; +    } +          public void joinNetwork(String masterUrl) {          logger.info("joinNetwork({})", masterUrl); +        connectionState = ConnectionState.UNSTABLE;          MasterService master = connections.getMaster(masterUrl);          state.clear();          try { diff --git a/same/src/main/java/com/orbekk/same/ClientInterface.java b/same/src/main/java/com/orbekk/same/ClientInterface.java index af8edfa..d7de30b 100644 --- a/same/src/main/java/com/orbekk/same/ClientInterface.java +++ b/same/src/main/java/com/orbekk/same/ClientInterface.java @@ -7,4 +7,5 @@ public interface ClientInterface {      DelayedOperation set(State.Component component);      void addStateListener(StateChangedListener listener);      void removeStateListener(StateChangedListener listener); +    ConnectionState getConnectionState();  }
\ No newline at end of file diff --git a/same/src/main/java/com/orbekk/same/ConnectionState.java b/same/src/main/java/com/orbekk/same/ConnectionState.java new file mode 100644 index 0000000..9d8fc15 --- /dev/null +++ b/same/src/main/java/com/orbekk/same/ConnectionState.java @@ -0,0 +1,5 @@ +package com.orbekk.same; + +public enum ConnectionState { +    DISCONNECTED, STABLE, UNSTABLE; +} | 
