public synchronized void sendUnreliable(Message msg, int msgSize) { setupDrip(msg, msgSize); state = SENDING_NEW; wakeupMsg = false; sendCount = 0; maxSendCount = 1; trickle.schedule(trickleTask, 0, SEND_RATE); try { wait(); } catch (InterruptedException e) { // return } }
public synchronized void sendWakeup(Message msg, int msgSize) { setupDrip(msg, msgSize); state = SENDING_NEW; wakeupMsg = true; sendCount = 0; maxSendCount = WAKEUP_SEND_COUNT; trickle.schedule(trickleTask, 0, WAKEUP_SEND_RATE); try { wait(); } catch (InterruptedException e) { // return } }
public synchronized void send(Message msg, int msgSize) { setupDrip(msg, msgSize); state = PROBING; wakeupMsg = false; sendCount = 0; maxSendCount = SEND_COUNT; trickle.schedule(trickleTask, 0, 500); try { wait(); } catch (InterruptedException e) { // return } }
public void messageReceived(int to, Message m) { DripMsg msg = (DripMsg) m; int newId = msg.get_metadata_id(); int newSeqno = msg.get_metadata_seqno(); log.debug("Received Msg: id=" + newId + ",seqno=" + newSeqno); if (newId != id) { log.debug("dropped, not ID " + id); return; } if ((newSeqno & ~DripConsts.DRIP_WAKEUP_BIT) == DripConsts.DRIP_SEQNO_NEWEST) { log.debug("dropped, a special seqno " + newSeqno); return; } switch (state) { case PROBING: seqno = newSeqno; log.info( "Receive: id=" + id + ",seqno=" + dripMsg.get_metadata_seqno() + " Heard Old Seqno"); incrementSeqno(); state = SENDING_SEQNO; case SENDING_SEQNO: if (seqno == newSeqno) { log.info( "Receive: id=" + id + ",seqno=" + dripMsg.get_metadata_seqno() + " Heard New Seqno"); trickle.cancel(); trickleTask.cancel(); sendDone(); } default: } }