📄 networkmanager.java
字号:
public NetworkConnection createConnection( ConnectionEndpoint target, MessageStreamEncoder encoder, MessageStreamDecoder decoder, boolean connect_with_crypto, boolean allow_fallback, byte[][] shared_secrets ) {
return NetworkConnectionFactory.create( target, encoder, decoder, connect_with_crypto, allow_fallback, shared_secrets );
}
/**
* Request the acceptance and routing of new incoming connections that match the given initial byte sequence.
* @param matcher initial byte sequence used for routing
* @param listener for handling new inbound connections
* @param factory to use for creating default stream encoder/decoders
*/
public void
requestIncomingConnectionRouting(
ByteMatcher matcher,
final RoutingListener listener,
final MessageStreamFactory factory )
{
IncomingConnectionManager.getSingleton().registerMatchBytes( matcher, new IncomingConnectionManager.MatchListener() {
public boolean
autoCryptoFallback()
{
return( listener.autoCryptoFallback());
}
public void connectionMatched( Transport transport, Object routing_data ) {
listener.connectionRouted( NetworkConnectionFactory.create( transport, factory.createEncoder(), factory.createDecoder() ), routing_data );
}
});
}
/**
* Cancel a request for inbound connection routing.
* @param matcher byte sequence originally used to register
*/
public void cancelIncomingConnectionRouting( ByteMatcher matcher ) {
IncomingConnectionManager.getSingleton().deregisterMatchBytes( matcher );
}
/**
* Add an upload entity for write processing.
* @param entity to add
*/
public void addWriteEntity( RateControlledEntity entity ) {
write_controller.addWriteEntity( entity );
}
/**
* Remove an upload entity from write processing.
* @param entity to remove
*/
public void removeWriteEntity( RateControlledEntity entity ) {
write_controller.removeWriteEntity( entity );
}
/**
* Add a download entity for read processing.
* @param entity to add
*/
public void addReadEntity( RateControlledEntity entity ) {
read_controller.addReadEntity( entity );
}
/**
* Remove a download entity from read processing.
* @param entity to remove
*/
public void removeReadEntity( RateControlledEntity entity ) {
read_controller.removeReadEntity( entity );
}
/**
* 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.
* @param peer_connection to register for network transfer processing
* @param upload_group upload rate limit group
* @param download_group download rate limit group
*/
public void startTransferProcessing( NetworkConnectionBase peer_connection, LimitedRateGroup upload_group, LimitedRateGroup download_group ) {
if( peer_connection.isLANLocal() && lan_rate_enabled ) {
lan_upload_processor.registerPeerConnection( peer_connection, unlimited_rate_group );
lan_download_processor.registerPeerConnection( peer_connection, unlimited_rate_group );
}
else {
upload_processor.registerPeerConnection( peer_connection, upload_group );
download_processor.registerPeerConnection( peer_connection, download_group );
}
}
/**
* Cancel network upload and download handling for the given connection.
* @param peer_connection to cancel
*/
public void stopTransferProcessing( NetworkConnectionBase peer_connection ) {
if( lan_upload_processor.isRegistered( peer_connection )) {
lan_upload_processor.deregisterPeerConnection( peer_connection );
lan_download_processor.deregisterPeerConnection( peer_connection );
}
else {
upload_processor.deregisterPeerConnection( peer_connection );
download_processor.deregisterPeerConnection( peer_connection );
}
}
/**
* Upgrade the given connection to high-speed network transfer handling.
* @param peer_connection to upgrade
*/
public void upgradeTransferProcessing( NetworkConnectionBase peer_connection ) {
if( lan_upload_processor.isRegistered( peer_connection )) {
lan_upload_processor.upgradePeerConnection( peer_connection );
lan_download_processor.upgradePeerConnection( peer_connection );
}
else {
upload_processor.upgradePeerConnection( peer_connection );
download_processor.upgradePeerConnection( peer_connection );
}
}
/**
* Downgrade the given connection back to a normal-speed network transfer handling.
* @param peer_connection to downgrade
*/
public void downgradeTransferProcessing( NetworkConnectionBase peer_connection ) {
if( lan_upload_processor.isRegistered( peer_connection )) {
lan_upload_processor.downgradePeerConnection( peer_connection );
lan_download_processor.downgradePeerConnection( peer_connection );
}
else {
upload_processor.downgradePeerConnection( peer_connection );
download_processor.downgradePeerConnection( peer_connection );
}
}
public NetworkManagerStats
getStats()
{
return( stats );
}
/**
* Byte stream match filter for routing.
*/
public interface ByteMatcher {
/**
* Number of bytes of buffer at or beyond which the "match" method will be called to test for a match
* @return
*/
public int matchThisSizeOrBigger();
/**
* Get the max number of bytes this matcher requires. If it fails with this (or more) bytes then
* the connection will be dropped
* @return size in bytes
*/
public int maxSize();
/**
* Get the minimum number of bytes required to determine if this matcher applies
* @return
*/
public int minSize();
/**
* Check byte stream for match.
* @param address the originator of the connection
* @param to_compare
* @return return "routing data" in case of a match, null otherwise
*/
public Object matches( TransportHelper transport, ByteBuffer to_compare, int port );
/**
* Check for a minimum match
* @param to_compare
* @return return "routing data" in case of a match, null otherwise
*/
public Object minMatches( TransportHelper transport, ByteBuffer to_compare, int port );
public byte[][] getSharedSecrets();
public int getSpecificPort();
}
/**
* Listener for routing events.
*/
public interface RoutingListener {
/**
* Currently if message crypto is on and default fallback for incoming not
* enabled then we would bounce incoming messages from non-crypto transports
* For example, NAT check
* This method allows auto-fallback for such transports
* @return
*/
public boolean
autoCryptoFallback();
/**
* The given incoming connection has been accepted.
* @param connection accepted
*/
public void connectionRouted( NetworkConnection connection, Object routing_data );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -