com.aelitis.azureus.core.networkmanager
Class NetworkManager

java.lang.Object
  extended by com.aelitis.azureus.core.networkmanager.NetworkManager

public class NetworkManager
extends java.lang.Object


Nested Class Summary
static interface NetworkManager.ByteMatcher
          Byte stream match filter for routing.
static interface NetworkManager.RoutingListener
          Listener for routing events.
 
Field Summary
static int CRYPTO_OVERRIDE_NONE
           
static int CRYPTO_OVERRIDE_NOT_REQUIRED
           
static int CRYPTO_OVERRIDE_REQUIRED
           
static boolean INCOMING_CRYPTO_ALLOWED
           
static boolean INCOMING_HANDSHAKE_FALLBACK_ALLOWED
           
static boolean OUTGOING_HANDSHAKE_FALLBACK_ALLOWED
           
static boolean REQUIRE_CRYPTO_HANDSHAKE
           
static int UNLIMITED_RATE
           
 
Method Summary
 void addRateLimiter(NetworkConnectionBase peer_connection, LimitedRateGroup group, boolean upload)
           
 void addReadEntity(RateControlledEntity entity, int partition_id)
          Add a download entity for read processing.
 void addWriteEntity(RateControlledEntity entity, int partition_id)
          Add an upload entity for write processing.
 NetworkConnection bindTransport(Transport transport, MessageStreamEncoder encoder, MessageStreamDecoder decoder)
           
 void cancelIncomingConnectionRouting(NetworkManager.ByteMatcher matcher)
          Cancel a request for inbound connection routing.
 NetworkConnection createConnection(ConnectionEndpoint target, MessageStreamEncoder encoder, MessageStreamDecoder decoder, boolean connect_with_crypto, boolean allow_fallback, byte[][] shared_secrets)
          Create a new unconnected remote network connection (for outbound-initiated connections).
 void downgradeTransferProcessing(NetworkConnectionBase peer_connection)
          Downgrade the given connection back to a normal-speed network transfer handling.
 java.util.Set<NetworkConnectionBase> getConnections()
           
static boolean getCryptoRequired(int override_level)
           
static int getMaxDownloadRateBPS()
          This method is for display purposes only, the internal rate limiting is 10% higher than returned by this method!
static int getMaxUploadRateBPSNormal()
           
static int getMaxUploadRateBPSSeedingOnly()
           
static int getMinMssSize()
           
 RateHandler getRateHandler(boolean upload, boolean lan)
           
 RateHandler getRateHandler(NetworkConnectionBase peer_connection, boolean upload)
           
static NetworkManager getSingleton()
          Get the singleton instance of the network manager.
 TransferProcessor getUploadProcessor()
           
 void initialize(AzureusCore core)
           
static boolean isLANRateEnabled()
           
static boolean isSeedingOnlyUploadRate()
           
 void removeRateLimiter(NetworkConnectionBase peer_connection, LimitedRateGroup group, boolean upload)
           
 void removeReadEntity(RateControlledEntity entity)
          Remove a download entity from read processing.
 void removeWriteEntity(RateControlledEntity entity)
          Remove an upload entity from write processing.
 void requestIncomingConnectionRouting(NetworkManager.ByteMatcher matcher, NetworkManager.RoutingListener listener, MessageStreamFactory factory)
          Request the acceptance and routing of new incoming connections that match the given initial byte sequence.
 void startTransferProcessing(NetworkConnectionBase peer_connection)
          Register peer connection for network upload and download handling.
 void stopTransferProcessing(NetworkConnectionBase peer_connection)
          Cancel network upload and download handling for the given connection.
 void upgradeTransferProcessing(NetworkConnectionBase peer_connection, int partition_id)
          Upgrade the given connection to high-speed network transfer handling.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UNLIMITED_RATE

public static final int UNLIMITED_RATE
See Also:
Constant Field Values

REQUIRE_CRYPTO_HANDSHAKE

public static boolean REQUIRE_CRYPTO_HANDSHAKE

INCOMING_HANDSHAKE_FALLBACK_ALLOWED

public static boolean INCOMING_HANDSHAKE_FALLBACK_ALLOWED

OUTGOING_HANDSHAKE_FALLBACK_ALLOWED

public static boolean OUTGOING_HANDSHAKE_FALLBACK_ALLOWED

INCOMING_CRYPTO_ALLOWED

public static boolean INCOMING_CRYPTO_ALLOWED

CRYPTO_OVERRIDE_NONE

public static final int CRYPTO_OVERRIDE_NONE
See Also:
Constant Field Values

CRYPTO_OVERRIDE_REQUIRED

public static final int CRYPTO_OVERRIDE_REQUIRED
See Also:
Constant Field Values

CRYPTO_OVERRIDE_NOT_REQUIRED

public static final int CRYPTO_OVERRIDE_NOT_REQUIRED
See Also:
Constant Field Values
Method Detail

isLANRateEnabled

public static boolean isLANRateEnabled()

getMinMssSize

public static int getMinMssSize()

isSeedingOnlyUploadRate

public static boolean isSeedingOnlyUploadRate()

getMaxUploadRateBPSNormal

public static int getMaxUploadRateBPSNormal()

getMaxUploadRateBPSSeedingOnly

public static int getMaxUploadRateBPSSeedingOnly()

getMaxDownloadRateBPS

public static int getMaxDownloadRateBPS()
This method is for display purposes only, the internal rate limiting is 10% higher than returned by this method!


getCryptoRequired

public static boolean getCryptoRequired(int override_level)

initialize

public void initialize(AzureusCore core)

getSingleton

public static NetworkManager getSingleton()
Get the singleton instance of the network manager.

Returns:
the network manager

createConnection

public NetworkConnection createConnection(ConnectionEndpoint target,
                                          MessageStreamEncoder encoder,
                                          MessageStreamDecoder decoder,
                                          boolean connect_with_crypto,
                                          boolean allow_fallback,
                                          byte[][] shared_secrets)
Create a new unconnected remote network connection (for outbound-initiated connections).

Parameters:
remote_address - to connect to
encoder - default message stream encoder to use for the outgoing queue
decoder - default message stream decoder to use for the incoming queue
Returns:
a new connection

requestIncomingConnectionRouting

public void requestIncomingConnectionRouting(NetworkManager.ByteMatcher matcher,
                                             NetworkManager.RoutingListener listener,
                                             MessageStreamFactory factory)
Request the acceptance and routing of new incoming connections that match the given initial byte sequence.

Parameters:
matcher - initial byte sequence used for routing
listener - for handling new inbound connections
factory - to use for creating default stream encoder/decoders

bindTransport

public NetworkConnection bindTransport(Transport transport,
                                       MessageStreamEncoder encoder,
                                       MessageStreamDecoder decoder)

cancelIncomingConnectionRouting

public void cancelIncomingConnectionRouting(NetworkManager.ByteMatcher matcher)
Cancel a request for inbound connection routing.

Parameters:
matcher - byte sequence originally used to register

addWriteEntity

public void addWriteEntity(RateControlledEntity entity,
                           int partition_id)
Add an upload entity for write processing.

Parameters:
entity - to add

removeWriteEntity

public void removeWriteEntity(RateControlledEntity entity)
Remove an upload entity from write processing.

Parameters:
entity - to remove

addReadEntity

public void addReadEntity(RateControlledEntity entity,
                          int partition_id)
Add a download entity for read processing.

Parameters:
entity - to add

removeReadEntity

public void removeReadEntity(RateControlledEntity entity)
Remove a download entity from read processing.

Parameters:
entity - to remove

getConnections

public java.util.Set<NetworkConnectionBase> getConnections()

startTransferProcessing

public void startTransferProcessing(NetworkConnectionBase peer_connection)
Register peer connection for network upload and download handling. NOTE: The given max rate limits are ignored until the connection is upgraded. NOTE: The given max rate limits are ignored for LANLocal connections.

Parameters:
peer_connection - to register for network transfer processing
upload_group - upload rate limit group
download_group - download rate limit group

stopTransferProcessing

public void stopTransferProcessing(NetworkConnectionBase peer_connection)
Cancel network upload and download handling for the given connection.

Parameters:
peer_connection - to cancel

upgradeTransferProcessing

public void upgradeTransferProcessing(NetworkConnectionBase peer_connection,
                                      int partition_id)
Upgrade the given connection to high-speed network transfer handling.

Parameters:
peer_connection - to upgrade

downgradeTransferProcessing

public void downgradeTransferProcessing(NetworkConnectionBase peer_connection)
Downgrade the given connection back to a normal-speed network transfer handling.

Parameters:
peer_connection - to downgrade

getUploadProcessor

public TransferProcessor getUploadProcessor()

addRateLimiter

public void addRateLimiter(NetworkConnectionBase peer_connection,
                           LimitedRateGroup group,
                           boolean upload)

removeRateLimiter

public void removeRateLimiter(NetworkConnectionBase peer_connection,
                              LimitedRateGroup group,
                              boolean upload)

getRateHandler

public RateHandler getRateHandler(boolean upload,
                                  boolean lan)

getRateHandler

public RateHandler getRateHandler(NetworkConnectionBase peer_connection,
                                  boolean upload)