ANTS v2.0 API

ants.route
Class DynamicRouteCapsule

java.lang.Object
  |
  +--ants.core.Capsule
        |
        +--ants.route.DynamicRouteCapsule

public class DynamicRouteCapsule
extends Capsule

Route update capsule.

Used to be a built-in capsule type. Now it is not.

XXX fix the -accessible fields. (Need to be accessible in DynamicRouteApp.)

Author:
Utah Janos Team, David Wetherall

Fields inherited from class ants.core.Capsule
MAX_TTL
 
Constructor Summary
DynamicRouteCapsule()
          Construct an empty DynamicRouteCapsule.
DynamicRouteCapsule(int activeDest, java.lang.String protocolSpec, java.lang.String addressSpec, java.util.Vector routeVec)
          Create a DynamicRouteCapsule to send to a remote host.
 
Method Summary
 Xdr decode()
          Decode a capsule header from this Capsule's xdr field.
 Xdr encode()
          Encode this capsule's header into a new Xdr.
 boolean evaluate(Node node)
          When an update capsule arrives at its destination Node, it gets delivered to the app that maintains the routing table.
 int length()
          The length of this capsule.
 java.lang.String toString()
          String representation of a Capsule.
 
Methods inherited from class ants.core.Capsule
create, encodeCapsuleForSend, findExtension, findMID, findPID, getDst, getPrevious, getSrc, getTTL, prime, setDst
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DynamicRouteCapsule

public DynamicRouteCapsule()
Construct an empty DynamicRouteCapsule. This is only invoked when a node receives a DynamicRouteCapsule.

DynamicRouteCapsule

public DynamicRouteCapsule(int activeDest,
                           java.lang.String protocolSpec,
                           java.lang.String addressSpec,
                           java.util.Vector routeVec)
Create a DynamicRouteCapsule to send to a remote host. This capsule will be sent to the activeDest host.

It contains the *physical address* of the host that sends it. (Because, hey, that's what routing does.)

Lastly, it will contain a suite of DynamicRouteEntries for the destination host to store in its RouteTable.

Parameters:
activeDest - the destination for this capsule. Must be 1 hop away.
protocolSpec - the protocol spec for the sender's input.
addressSpec - the address spec for the sender's input.
routeVec - a list of updated route entries for the remote node
Method Detail

length

public int length()
The length of this capsule. Adds the length of the physAddr string, 4 bytes for the nroutes word, and zero or more bytes for the routes array.
Overrides:
length in class Capsule
Tags copied from class: Capsule
Returns:
the length of the capsule header

encode

public Xdr encode()
Description copied from class: Capsule
Encode this capsule's header into a new Xdr. Return the new Xdr.

Because this header must go first in the Xdr, this encoder unilaterally sets the xdr buffer pointer to the beginning of the buffer and writes its data there.

The format of the Xdr is:

 MethodID         (16 bytes)
 src address      ( 4 bytes)
 dst address      ( 4 bytes)
 previous address ( 4 bytes)
 TTL              ( 4 bytes)
 
Overrides:
encode in class Capsule
Tags copied from class: Capsule
Returns:
the new Xdr representing this capsule.
See Also:
#xdr

decode

public Xdr decode()
Description copied from class: Capsule
Decode a capsule header from this Capsule's xdr field.
Overrides:
decode in class Capsule
Tags copied from class: Capsule
Returns:
the new Xdr based on the current xdr.

evaluate

public boolean evaluate(Node node)
When an update capsule arrives at its destination Node, it gets delivered to the app that maintains the routing table.
Overrides:
evaluate in class Capsule
Tags copied from class: Capsule
Parameters:
node - the local node interface
Returns:
an indicationof whether the forwarding was successful.

toString

public java.lang.String toString()
Description copied from class: Capsule
String representation of a Capsule. Includes the class name, source and destination.
Overrides:
toString in class Capsule

ANTS v2.0 API

This documentation is Copyright (C) 1998-2001 The University of Utah and the University of Washington. All Rights Reserved. See the individual source files for distribution terms.
Documentation, software, and mailing lists for ANTS v2.0 can be found at the Janos Project: http://www.cs.utah.edu/flux/janos/