예제 #1
0
  void recoverReliableEndpoint(Endpoint endpoint, Conduit conduit) {
    if (null == store || null == retransmissionQueue) {
      return;
    }

    String id = RMUtils.getEndpointIdentifier(endpoint, getBus());

    Collection<SourceSequence> sss = store.getSourceSequences(id);
    Collection<DestinationSequence> dss = store.getDestinationSequences(id);
    if ((null == sss || 0 == sss.size()) && (null == dss || 0 == dss.size())) {
      return;
    }
    LOG.log(Level.FINE, "Number of source sequences: {0}", sss.size());
    LOG.log(Level.FINE, "Number of destination sequences: {0}", dss.size());

    LOG.log(
        Level.FINE,
        "Recovering {0} endpoint with id: {1}",
        new Object[] {null == conduit ? "client" : "server", id});
    RMEndpoint rme = createReliableEndpoint(endpoint);
    rme.initialise(getConfiguration(), conduit, null, null, null);
    synchronized (reliableEndpoints) {
      reliableEndpoints.put(endpoint, rme);
    }
    for (SourceSequence ss : sss) {
      recoverSourceSequence(endpoint, conduit, rme.getSource(), ss);
    }

    for (DestinationSequence ds : dss) {
      reconverDestinationSequence(endpoint, conduit, rme.getDestination(), ds);
    }
    retransmissionQueue.start();
  }
예제 #2
0
 public void clientCreated(final Client client) {
   if (null == store || null == retransmissionQueue) {
     return;
   }
   String id = RMUtils.getEndpointIdentifier(client.getEndpoint(), getBus());
   Collection<SourceSequence> sss = store.getSourceSequences(id /*, protocol*/);
   if (null == sss || 0 == sss.size()) {
     return;
   }
   LOG.log(Level.FINE, "Number of source sequences: {0}", sss.size());
   recoverReliableEndpoint(client.getEndpoint(), client.getConduit() /*, protocol*/);
 }