net.i2p.router
Class OutNetMessage

java.lang.Object
  extended by net.i2p.router.OutNetMessage
All Implemented Interfaces:
CDPQEntry, CDQEntry, PQEntry

public class OutNetMessage
extends Object
implements CDPQEntry

Wrap up an outbound I2NP message, along with the information associated with its delivery and jobs to be fired off if particular events occur.


Field Summary
static int PRIORITY_BUILD_REPLY
           
static int PRIORITY_EXPLORATORY
           
static int PRIORITY_HIGHEST
          Priorities, higher is higher priority.
static int PRIORITY_HIS_BUILD_REQUEST
           
static int PRIORITY_HIS_NETDB_STORE
           
static int PRIORITY_LOWEST
           
static int PRIORITY_MY_BUILD_REQUEST
           
static int PRIORITY_MY_DATA
          may be adjusted +/- 25 for outbound traffic
static int PRIORITY_MY_NETDB_LOOKUP
           
static int PRIORITY_MY_NETDB_STORE
           
static int PRIORITY_MY_NETDB_STORE_LOW
           
static int PRIORITY_NETDB_EXPLORE
           
static int PRIORITY_NETDB_FLOOD
           
static int PRIORITY_NETDB_HARVEST
           
static int PRIORITY_NETDB_REPLY
           
static int PRIORITY_PARTICIPATING
           
 
Constructor Summary
OutNetMessage(RouterContext context)
           
 
Method Summary
 void beginSend()
           
 void discardData()
          We've done what we need to do with the data from this message, though we may keep the object around for a while to use its ID, jobs, etc.
 void drop()
          For CDQ
 long getCreated()
           
 Exception getCreatedBy()
          Deprecated.  
 long getEnqueueTime()
          For CDQ
 long getExpiration()
          Specify the # ms since the epoch after which if the message has not been sent the OnFailedSend job should be fired and the message should be removed from the pool.
 Set getFailedTransports()
          not thread safe - dont fail transports and iterate over this at the same time
 long getLifetime()
          time since the message was created
 I2NPMessage getMessage()
          Specifies the message to be sent
 int getMessageData(byte[] outBuffer)
           
 long getMessageId()
           
 long getMessageSize()
           
 String getMessageType()
          For debugging only.
 int getMessageTypeId()
           
 Job getOnFailedReplyJob()
          If the Message selector is specified but it doesn't find a reply before its expiration passes, this job is enqueued.
 Job getOnFailedSendJob()
          If the router could not be reached or the expiration passed, this job is enqueued.
 ReplyJob getOnReplyJob()
          If the MessageSelector detects a reply, this job is enqueued
 Job getOnSendJob()
          After the message is successfully passed to the router specified, the given job is enqueued.
 int getPriority()
          Specify the priority of the message, where higher numbers are higher priority.
 MessageSelector getReplySelector()
          Defines a MessageSelector to find a reply to this message.
 long getSendBegin()
          when did the sending process begin
 long getSendTime()
          time the transport tries to send the message (including any queueing)
 long getSeqNum()
          For CDPQ
 RouterInfo getTarget()
          Specifies the router to which the message should be delivered.
 Long getTimestamp(String eventName)
          Deprecated. unused
 Map<String,Long> getTimestamps()
          Deprecated. unused
 void prepared(Object buf)
           
 Object releasePreparationBuffer()
           
 void setEnqueueTime(long now)
          For CDQ
 void setExpiration(long expiration)
           
 void setMessage(I2NPMessage msg)
           
 void setOnFailedReplyJob(Job job)
           
 void setOnFailedSendJob(Job job)
           
 void setOnReplyJob(ReplyJob job)
           
 void setOnSendJob(Job job)
           
 void setPriority(int priority)
           
 void setReplySelector(MessageSelector selector)
           
 void setSeqNum(long num)
          For CDPQ
 void setTarget(RouterInfo target)
           
 long timestamp(String eventName)
          Stamp the message's progress.
 String toString()
           
 void transportFailed(String transportStyle)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

PRIORITY_HIGHEST

public static final int PRIORITY_HIGHEST
Priorities, higher is higher priority.

Since:
0.9.3
See Also:
Constant Field Values

PRIORITY_MY_BUILD_REQUEST

public static final int PRIORITY_MY_BUILD_REQUEST
See Also:
Constant Field Values

PRIORITY_MY_NETDB_LOOKUP

public static final int PRIORITY_MY_NETDB_LOOKUP
See Also:
Constant Field Values

PRIORITY_MY_NETDB_STORE

public static final int PRIORITY_MY_NETDB_STORE
See Also:
Constant Field Values

PRIORITY_EXPLORATORY

public static final int PRIORITY_EXPLORATORY
See Also:
Constant Field Values

PRIORITY_MY_DATA

public static final int PRIORITY_MY_DATA
may be adjusted +/- 25 for outbound traffic

See Also:
Constant Field Values

PRIORITY_MY_NETDB_STORE_LOW

public static final int PRIORITY_MY_NETDB_STORE_LOW
See Also:
Constant Field Values

PRIORITY_HIS_BUILD_REQUEST

public static final int PRIORITY_HIS_BUILD_REQUEST
See Also:
Constant Field Values

PRIORITY_BUILD_REPLY

public static final int PRIORITY_BUILD_REPLY
See Also:
Constant Field Values

PRIORITY_NETDB_REPLY

public static final int PRIORITY_NETDB_REPLY
See Also:
Constant Field Values

PRIORITY_HIS_NETDB_STORE

public static final int PRIORITY_HIS_NETDB_STORE
See Also:
Constant Field Values

PRIORITY_NETDB_FLOOD

public static final int PRIORITY_NETDB_FLOOD
See Also:
Constant Field Values

PRIORITY_PARTICIPATING

public static final int PRIORITY_PARTICIPATING
See Also:
Constant Field Values

PRIORITY_NETDB_EXPLORE

public static final int PRIORITY_NETDB_EXPLORE
See Also:
Constant Field Values

PRIORITY_NETDB_HARVEST

public static final int PRIORITY_NETDB_HARVEST
See Also:
Constant Field Values

PRIORITY_LOWEST

public static final int PRIORITY_LOWEST
See Also:
Constant Field Values
Constructor Detail

OutNetMessage

public OutNetMessage(RouterContext context)
Method Detail

timestamp

public long timestamp(String eventName)
Stamp the message's progress. Only useful if log level is INFO or DEBUG

Parameters:
eventName - what occurred
Returns:
how long this message has been 'in flight'

getTimestamps

public Map<String,Long> getTimestamps()
Deprecated. unused


getTimestamp

public Long getTimestamp(String eventName)
Deprecated. unused


getCreatedBy

public Exception getCreatedBy()
Deprecated. 

Returns:
null always

getTarget

public RouterInfo getTarget()
Specifies the router to which the message should be delivered.


setTarget

public void setTarget(RouterInfo target)

getMessage

public I2NPMessage getMessage()
Specifies the message to be sent


setMessage

public void setMessage(I2NPMessage msg)

getMessageType

public String getMessageType()
For debugging only.

Returns:
the simple class name

getMessageTypeId

public int getMessageTypeId()

getMessageId

public long getMessageId()

getMessageSize

public long getMessageSize()

getMessageData

public int getMessageData(byte[] outBuffer)

getPriority

public int getPriority()
Specify the priority of the message, where higher numbers are higher priority. Higher priority messages should be delivered before lower priority ones, though some algorithm may be used to avoid starvation.

Specified by:
getPriority in interface PQEntry

setPriority

public void setPriority(int priority)

getExpiration

public long getExpiration()
Specify the # ms since the epoch after which if the message has not been sent the OnFailedSend job should be fired and the message should be removed from the pool. If the message has already been sent, this expiration is ignored and the expiration from the ReplySelector is used.


setExpiration

public void setExpiration(long expiration)

getOnSendJob

public Job getOnSendJob()
After the message is successfully passed to the router specified, the given job is enqueued.


setOnSendJob

public void setOnSendJob(Job job)

getOnFailedSendJob

public Job getOnFailedSendJob()
If the router could not be reached or the expiration passed, this job is enqueued.


setOnFailedSendJob

public void setOnFailedSendJob(Job job)

getOnReplyJob

public ReplyJob getOnReplyJob()
If the MessageSelector detects a reply, this job is enqueued


setOnReplyJob

public void setOnReplyJob(ReplyJob job)

getOnFailedReplyJob

public Job getOnFailedReplyJob()
If the Message selector is specified but it doesn't find a reply before its expiration passes, this job is enqueued.


setOnFailedReplyJob

public void setOnFailedReplyJob(Job job)

getReplySelector

public MessageSelector getReplySelector()
Defines a MessageSelector to find a reply to this message.


setReplySelector

public void setReplySelector(MessageSelector selector)

transportFailed

public void transportFailed(String transportStyle)

getFailedTransports

public Set getFailedTransports()
not thread safe - dont fail transports and iterate over this at the same time


getSendBegin

public long getSendBegin()
when did the sending process begin


beginSend

public void beginSend()

prepared

public void prepared(Object buf)

releasePreparationBuffer

public Object releasePreparationBuffer()

getCreated

public long getCreated()

getLifetime

public long getLifetime()
time since the message was created


getSendTime

public long getSendTime()
time the transport tries to send the message (including any queueing)


setEnqueueTime

public void setEnqueueTime(long now)
For CDQ

Specified by:
setEnqueueTime in interface CDQEntry
Since:
0.9.3

getEnqueueTime

public long getEnqueueTime()
For CDQ

Specified by:
getEnqueueTime in interface CDQEntry
Since:
0.9.3

drop

public void drop()
For CDQ

Specified by:
drop in interface CDQEntry
Since:
0.9.3

setSeqNum

public void setSeqNum(long num)
For CDPQ

Specified by:
setSeqNum in interface PQEntry
Since:
0.9.3

getSeqNum

public long getSeqNum()
For CDPQ

Specified by:
getSeqNum in interface PQEntry
Since:
0.9.3

discardData

public void discardData()
We've done what we need to do with the data from this message, though we may keep the object around for a while to use its ID, jobs, etc.


toString

public String toString()
Overrides:
toString in class Object