diff options
Diffstat (limited to 'same/src/main')
4 files changed, 30 insertions, 3 deletions
| diff --git a/same/src/main/java/com/orbekk/same/Client.java b/same/src/main/java/com/orbekk/same/Client.java index ce3947c..2a5f11e 100644 --- a/same/src/main/java/com/orbekk/same/Client.java +++ b/same/src/main/java/com/orbekk/same/Client.java @@ -19,6 +19,19 @@ public class Client implements DiscoveryListener {      private StateChangedListener stateListener;      private NetworkNotificationListener networkListener; +    public class ClientInterface { +        private ClientInterface() { +        } +         +        /** Get a copy of all the client state. +         */ +        public State getState() { +            return new State(state); +        } +    } +     +    private ClientInterface clientInterface = new ClientInterface(); +          private ClientService serviceImpl = new ClientService() {          @Override          public void setState(String component, String data, long revision) throws Exception { @@ -87,6 +100,10 @@ public class Client implements DiscoveryListener {          }                } +    ClientInterface getInterface() { +        return clientInterface; +    } +          String lib_get(String name) {          return state.getDataOf(name);      } diff --git a/same/src/main/java/com/orbekk/same/SameController.java b/same/src/main/java/com/orbekk/same/SameController.java index abf97c1..6b18115 100644 --- a/same/src/main/java/com/orbekk/same/SameController.java +++ b/same/src/main/java/com/orbekk/same/SameController.java @@ -45,7 +45,7 @@ public class SameController {          PaxosServiceImpl paxos = new PaxosServiceImpl("");          ServerContainer server = new ServerBuilder(port) -                .withServlet(new StateServlet(), "/_/state") +                .withServlet(new StateServlet(client.getInterface()), "/_/state")                  .withService(client.getService(), ClientService.class)                  .withService(master, MasterService.class)                  .withService(paxos, PaxosService.class) diff --git a/same/src/main/java/com/orbekk/same/State.java b/same/src/main/java/com/orbekk/same/State.java index f8ba6a4..ea13582 100644 --- a/same/src/main/java/com/orbekk/same/State.java +++ b/same/src/main/java/com/orbekk/same/State.java @@ -30,6 +30,10 @@ public class State {          updateFromObject(".participants", new ArrayList<String>(), 1);      } +    public State(State other) { +        state.putAll(other.state); +    } +          public synchronized void clear() {          logger.info("Clearing state.");          updatedComponents.clear(); diff --git a/same/src/main/java/com/orbekk/same/http/StateServlet.java b/same/src/main/java/com/orbekk/same/http/StateServlet.java index 62b304c..0ccf062 100644 --- a/same/src/main/java/com/orbekk/same/http/StateServlet.java +++ b/same/src/main/java/com/orbekk/same/http/StateServlet.java @@ -9,15 +9,21 @@ import javax.servlet.http.HttpServletResponse;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import com.orbekk.same.Client; +  public class StateServlet extends HttpServlet {      private Logger logger = LoggerFactory.getLogger(getClass()); +    private Client.ClientInterface client; +     +    public StateServlet(Client.ClientInterface client) { +        this.client = client; +    }      @Override      protected void doGet(HttpServletRequest request,              HttpServletResponse response) throws IOException { -        logger.error("GOT HERE");          response.setContentType("text/plain; charset=utf8"); -        response.getWriter().println("HI"); +        response.getWriter().println(client.getState());          response.setStatus(HttpServletResponse.SC_OK);      }  } | 
