Exemplo n.º 1
0
 /**
  * Received Sequencer message
  *
  * @param message
  */
 private void handleSequencerMessage(SeqOrderEvent message) {
   log.debug(
       "Received SEQ message from "
           + message.orig
           + " timestamp is "
           + timeProvider.currentTimeMillis());
   if (message.getDir() == Direction.DOWN)
     log.error("Wrong direction (DOWN) in event " + message.getClass().getName());
   else reliableSEQDeliver(message);
 }
Exemplo n.º 2
0
 /**
  * Multicast a SEQUENCER message to the group.
  *
  * @param container the container of the message to be sequenced.
  */
 private void reliableSEQMulticast(ListContainer container) {
   SEQHeader header = new SEQHeader(container.header.sender(), container.header.sn(), globalSN);
   SeqOrderEvent event;
   try {
     event =
         new SeqOrderEvent(container.event.getChannel(), Direction.DOWN, this, vs.group, vs.id);
     SEQHeader.push(header, event.getMessage());
     Message msg = event.getMessage();
     for (int i = 0; i < lastOrderList.length; i++) msg.pushLong(lastOrderList[i]);
     log.debug("Sending SEQ message. Rank=" + ls.my_rank + " Header: " + header);
     event.go();
   } catch (AppiaEventException e2) {
     e2.printStackTrace();
   }
 }
Exemplo n.º 3
0
 /** Deliver a SEQUENCER message received from the network. */
 private void reliableSEQDeliver(SeqOrderEvent event) {
   Message msg = event.getMessage();
   long[] uniformInfo = new long[vs.view.length];
   for (int i = uniformInfo.length; i > 0; i--) uniformInfo[i - 1] = msg.popLong();
   mergeUniformInfo(uniformInfo);
   SEQHeader header = SEQHeader.pop(event.getMessage());
   log.debug(
       "["
           + ls.my_rank
           + "] Received SEQ message "
           + header.id
           + ":"
           + header.sn
           + " timestamp is "
           + timeProvider.currentTimeMillis());
   lastOrderList[ls.my_rank] = header.order;
   newUniformInfo = true;
   // add it to the sequencer list
   S.add(new ListSEQContainer(header, timeProvider.currentTimeMillis()));
   log.debug("Received SEQ from " + event.orig + " at time " + timeProvider.currentTimeMillis());
   // and tries to deliver messages that already have the order
   deliverRegular();
   deliverUniform();
 }