ucr.core
Class Router

java.lang.Object
  extended byjava.lang.Thread
      extended byucr.core.Router
All Implemented Interfaces:
java.lang.Runnable

class Router
extends java.lang.Thread

Routes messages read from the network to appropriate Connections


Field Summary
private  ConnectionList connectionList
           
 HostCache hostCache
           
private  java.util.Hashtable keywordsRouteTable
           
private static int MAX_ROUTER_TABLE
           
private static byte MAX_TTL
           
private  BoundedQueue messageQueue
           
 ProfileTableMng mng
           
private  OriginateTable originateTable
           
(package private)  long queriesRoutedCount
           
 RouteTable queryHitRouteTable
           
(package private)  java.util.Hashtable queryMessageDEPTHTable
           
(package private)  java.util.Hashtable queryMessageTable
           
 RouteTable queryRouteTable
           
private  java.util.Vector searchReceivers
           
private  boolean shutDownFlag
           
(package private)  int WINDOW
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
(package private) Router(ConnectionList connectionList, HostCache hostCache)
          Collection of active connections to the network
 
Method Summary
(package private)  void addSearchMessageReceiver(MessageReceiver receiver)
          Adds a search listener
(package private)  boolean allVisited(boolean[] ConnectionWasVisited)
           
(package private)  void fireQueryMessage(SearchMessage searchMessage)
          Sends a search message to listeners
(package private)  void fireSearchMessage(SearchMessage searchMessage)
          Sends a search message to listeners
(package private)  void fireSearchReplyMessage(SearchReplyMessage searchReplyMessage, java.lang.String host, int port)
          Sends a searchereply message to listeners
(package private)  void fireTraceMessage(TraceMessage traceMessage)
          Sends a trace message to listeners
(package private)  int[] generateRandomSet(int connectioncount, int TSIZE)
           
 ConnectionList getConnectionList()
           
(package private)  RouteMessage getNextMessage()
          Query the next message to route, blocks if no message are available
(package private)  NodeConnection[] getNumberHighestPeerSet(java.util.List connections, int number, RouteMessage message)
           
(package private)  NodeConnection getQuerySource(SearchMessage message)
          Get the source of a previously received message query message
(package private)  int getSmallestIdx(long[] intarray)
           
 void initProfileMng(int PSIZE)
           
private  void local_println(java.lang.String str)
           
(package private)  void prepareMessage(Message message)
          Updates a message for sending
(package private)  void removeMessageSender(java.util.List messageGUIDs)
          Removes a message sender's origination data
(package private)  void removeSearchMessageReceiver(MessageReceiver receiver)
          Removes a search receiver
(package private)  boolean route(Message m, NodeConnection connection)
          Routes a message, used by Connections
(package private)  void routeBack(Message m, MessageReceiver receiver)
          Record a message we originate, so we can route it back
(package private)  void routeBFSQuery(RouteMessage m)
           
(package private)  void routeGreatestResultsQuery(RouteMessage m)
           
(package private)  void routeQueryReplyMessage(RouteMessage m)
           
(package private)  void routeRandomBFSQuery(RouteMessage m)
           
(package private)  boolean routerSend(Connection connection, Message message)
          Utility method for common send
 void run()
          Runs along routing messages
 boolean shouldProceed(Message message)
          shouldProceed(Message) : Checks if this message was forwarded in past (based on GUID).
(package private)  void shutdown()
          Stops the operation of the router
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MAX_ROUTER_TABLE

private static int MAX_ROUTER_TABLE

MAX_TTL

private static byte MAX_TTL

connectionList

private ConnectionList connectionList

hostCache

public HostCache hostCache

queryRouteTable

public RouteTable queryRouteTable

keywordsRouteTable

private java.util.Hashtable keywordsRouteTable

queryHitRouteTable

public RouteTable queryHitRouteTable

originateTable

private OriginateTable originateTable

searchReceivers

private java.util.Vector searchReceivers

messageQueue

private BoundedQueue messageQueue

shutDownFlag

private boolean shutDownFlag

mng

public ProfileTableMng mng

queryMessageTable

java.util.Hashtable queryMessageTable

queryMessageDEPTHTable

java.util.Hashtable queryMessageDEPTHTable

queriesRoutedCount

long queriesRoutedCount

WINDOW

int WINDOW
Constructor Detail

Router

Router(ConnectionList connectionList,
       HostCache hostCache)
Collection of active connections to the network

Parameters:
connectionList - the list of connections in the system
hostCache - which contains this peer's neighbors
Method Detail

getConnectionList

public ConnectionList getConnectionList()

initProfileMng

public void initProfileMng(int PSIZE)

shouldProceed

public boolean shouldProceed(Message message)
shouldProceed(Message) : Checks if this message was forwarded in past (based on GUID). If it was forwarded but the forwarded message had a smaller TTL than the ones of m, m is forwarded again

Returns:
message true if should proceed, false if should drop this message.

shutdown

void shutdown()
Stops the operation of the router


local_println

private void local_println(java.lang.String str)

prepareMessage

void prepareMessage(Message message)
Updates a message for sending

Parameters:
message - message to update

route

boolean route(Message m,
              NodeConnection connection)
Routes a message, used by Connections

Returns:
false if routing failed because of overload

routeBack

void routeBack(Message m,
               MessageReceiver receiver)
Record a message we originate, so we can route it back


removeMessageSender

void removeMessageSender(java.util.List messageGUIDs)
Removes a message sender's origination data

Parameters:
messageGUIDs - the originated message guids

addSearchMessageReceiver

void addSearchMessageReceiver(MessageReceiver receiver)
Adds a search listener

Parameters:
receiver - search receiver

removeSearchMessageReceiver

void removeSearchMessageReceiver(MessageReceiver receiver)
Removes a search receiver

Parameters:
receiver - message receiver

getNextMessage

RouteMessage getNextMessage()
Query the next message to route, blocks if no message are available

Returns:
message to route

run

public void run()
Runs along routing messages


getQuerySource

NodeConnection getQuerySource(SearchMessage message)
Get the source of a previously received message query message

Parameters:
message - a search message

routeBFSQuery

void routeBFSQuery(RouteMessage m)

routeRandomBFSQuery

void routeRandomBFSQuery(RouteMessage m)

generateRandomSet

int[] generateRandomSet(int connectioncount,
                        int TSIZE)

allVisited

boolean allVisited(boolean[] ConnectionWasVisited)

getSmallestIdx

int getSmallestIdx(long[] intarray)

routeGreatestResultsQuery

void routeGreatestResultsQuery(RouteMessage m)

getNumberHighestPeerSet

NodeConnection[] getNumberHighestPeerSet(java.util.List connections,
                                         int number,
                                         RouteMessage message)

routeQueryReplyMessage

void routeQueryReplyMessage(RouteMessage m)

routerSend

boolean routerSend(Connection connection,
                   Message message)
Utility method for common send

Parameters:
connection - connection
message - message

fireTraceMessage

void fireTraceMessage(TraceMessage traceMessage)
Sends a trace message to listeners

Parameters:
traceMessage - trace message to send

fireQueryMessage

void fireQueryMessage(SearchMessage searchMessage)
Sends a search message to listeners

Parameters:
searchMessage - search message to send

fireSearchReplyMessage

void fireSearchReplyMessage(SearchReplyMessage searchReplyMessage,
                            java.lang.String host,
                            int port)
Sends a searchereply message to listeners

Parameters:
searchReplyMessage - message to send
host - the host which sent this reply message
port - of the host that sent this reply message

fireSearchMessage

void fireSearchMessage(SearchMessage searchMessage)
Sends a search message to listeners

Parameters:
searchMessage - search message to send