📄 networkmanager.java
字号:
/**
* Cancel a request for inbound connection routing.
* @param matcher byte sequence originally used to register
*/
public void cancelIncomingConnectionRouting( ByteMatcher matcher ) {
incoming_socketchannel_manager.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 );
}
/**
* Get the manager for new incoming socket channel connections.
* @return manager
*/
public IncomingSocketChannelManager getIncomingSocketChannelManager() { return incoming_socketchannel_manager; }
/**
* Get the socket channel connect / disconnect manager.
* @return connect manager
*/
public ConnectDisconnectManager getConnectDisconnectManager() { return connect_disconnect_manager; }
/**
* Asynchronously close the given socket channel.
* @param channel to close
*/
public void closeSocketChannel( SocketChannel channel ) {
connect_disconnect_manager.closeConnection( channel );
}
public void closeSocketChannel( SocketChannel channel, int delay ) {
connect_disconnect_manager.closeConnection( channel, delay );
}
/**
* Get the virtual selector used for socket channel read readiness.
* @return read readiness selector
*/
public VirtualChannelSelector getReadSelector() { return read_controller.getReadSelector(); }
/**
* Get the virtual selector used for socket channel write readiness.
* @return write readiness selector
*/
public VirtualChannelSelector getWriteSelector() { return write_controller.getWriteSelector(); }
/**
* 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( NetworkConnection peer_connection, LimitedRateGroup upload_group, LimitedRateGroup download_group ) {
if( peer_connection.isLANLocal() ) {
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( NetworkConnection peer_connection ) {
if( peer_connection.isLANLocal() ) {
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( NetworkConnection peer_connection ) {
if( peer_connection.isLANLocal() ) {
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( NetworkConnection peer_connection ) {
if( peer_connection.isLANLocal() ) {
lan_upload_processor.downgradePeerConnection( peer_connection );
lan_download_processor.downgradePeerConnection( peer_connection );
}
else {
upload_processor.downgradePeerConnection( peer_connection );
download_processor.downgradePeerConnection( peer_connection );
}
}
/**
* Get the configured TCP MSS (Maximum Segment Size) unit, i.e. the max (preferred) packet payload size.
* NOTE: MSS is MTU-40bytes for TCPIP headers, usually 1460 (1500-40) for standard ethernet
* connections, or 1452 (1492-40) for PPPOE connections.
* @return mss size in bytes
*/
public static int getTcpMssSize() { return tcp_mss_size; }
/**
* Get port that the TCP server socket is listening for incoming connections on.
* @return port number
*/
public int getTCPListeningPortNumber() { return incoming_socketchannel_manager.getTCPListeningPortNumber(); }
public NetworkManagerStats
getStats()
{
return( stats );
}
/**
* Byte stream match filter for routing.
*/
public interface ByteMatcher {
/**
* Get the number of bytes this matcher requires.
* @return size in bytes
*/
public int size();
/**
* Get the minimum number of bytes required to determine if this matcher applies
* @return
*/
public int minSize();
/**
* Check byte stream for match.
* @param to_compare
* @return true if a match, false if not a match
*/
public boolean matches( ByteBuffer to_compare );
/**
* Check for a minimum match
* @param to_compare
* @return
*/
public boolean minMatches( ByteBuffer to_compare );
/**
* Returns true if this shared secret is recognised by the matcher
* @param shared_secret
* @return
*/
public byte[] getSharedSecret();
}
/**
* 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 );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -