Class ClientInstanceManagerImpl
- java.lang.Object
-
- com.biglybt.core.instancemanager.impl.ClientInstanceManagerImpl
-
- All Implemented Interfaces:
ClientInstanceManager
,MCGroupAdapter
public class ClientInstanceManagerImpl extends java.lang.Object implements ClientInstanceManager, MCGroupAdapter
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
ClientInstanceManagerImpl.Request
protected static class
ClientInstanceManagerImpl.trackedInstance
-
Field Summary
Fields Modifier and Type Field Description private ClientInstanceManagerAdapter
adapter
private static long
ALIVE_PERIOD
private static AEMonitor
class_mon
(package private) boolean
closing
(package private) static java.util.Set<java.lang.String>
data_socks_proxies
private static boolean
DISABLE_LAN_LOCAL_STUFF
private CopyOnWriteSet<java.net.InetSocketAddress>
explicit_addresses
private java.util.List<java.net.InetSocketAddress>
explicit_peers
private boolean
include_well_known_lans
private boolean
init_wait_abandoned
(package private) AESemaphore
initial_search_sem
private boolean
initialised
private IpFilter
ip_filter
private java.util.Set<java.net.InetAddress>
lan_addresses
private java.util.List<java.util.regex.Pattern>
lan_subnets
private java.util.List
listeners
private static LogIDs
LOGID
private static int
MC_CONTROL_PORT
private MCGroup
mc_group
private static java.lang.String
MC_GROUP_ADDRESS
private static int
MC_GROUP_PORT
private static int
MT_ALIVE
private static int
MT_BYE
private static int
MT_REPLY
private static int
MT_REQUEST
private static int
MT_REQUEST_SEARCH
private static int
MT_REQUEST_TRACK
private static int
MT_VERSION
(package private) ClientMyInstanceImpl
my_instance
private java.util.Map<java.lang.String,ClientOtherInstanceImpl>
other_instances
(package private) java.util.List<ClientInstanceManagerImpl.Request>
requests
(package private) long
search_id_next
private static ClientInstanceManagerImpl
singleton
private java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress>
tcp_ext_to_lan
private java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress>
tcp_lan_to_ext
(package private) AEMonitor
this_mon
private java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress>
udp_ext_to_lan
private java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress>
udp_lan_to_ext
private java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress>
udp2_ext_to_lan
private java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress>
udp2_lan_to_ext
-
Fields inherited from interface com.biglybt.core.instancemanager.ClientInstanceManager
AT_TCP, AT_UDP, AT_UDP_NON_DATA
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ClientInstanceManagerImpl(ClientInstanceManagerAdapter _adapter)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addAddresses(ClientInstance inst)
void
addExplicitLANAddress(java.net.InetSocketAddress isa)
boolean
addInstance(java.net.InetAddress explicit_address)
protected boolean
addInstanceSupport(java.net.InetAddress explicit_address, boolean force_send_alive)
boolean
addLANSubnet(java.lang.String subnet)
void
addListener(ClientInstanceManagerListener l)
protected ClientOtherInstanceImpl
checkAdd(ClientOtherInstanceImpl inst)
protected void
checkRemove(ClientOtherInstanceImpl inst)
protected void
checkTimeouts()
long
getClockSkew()
private MCGroup
getDummyMCGroup()
java.net.InetSocketAddress
getExternalAddress(java.net.InetSocketAddress lan_address, int address_type)
boolean
getIncludeWellKnownLANs()
java.net.InetSocketAddress
getLANAddress(java.net.InetSocketAddress external_address, int address_type)
ClientInstance
getMyInstance()
int
getOtherInstanceCount(boolean block_if_needed)
ClientInstance[]
getOtherInstances()
static ClientInstanceManager
getSingleton(ClientInstanceManagerAdapter core)
protected void
informAdded(ClientInstance inst)
protected void
informChanged(ClientInstance inst)
protected void
informRemoved(ClientOtherInstanceImpl inst)
protected void
informTracked(ClientInstanceTracked inst)
void
initialize()
void
interfaceChanged(java.net.NetworkInterface network_interface)
protected boolean
isClosing()
boolean
isExplicitLANAddress(java.net.InetSocketAddress isa)
boolean
isInitialized()
boolean
isLANAddress(java.net.InetSocketAddress isa)
void
log(java.lang.Throwable e)
protected java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress>
modifyAddress(java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> map, java.net.InetSocketAddress key, java.net.InetSocketAddress value, boolean add)
protected void
modifyAddresses(java.net.InetAddress internal_address, java.net.InetAddress external_address, int tcp, int udp, int udp2, boolean add)
void
received(java.net.NetworkInterface network_interface, java.net.InetAddress local_address, java.net.InetSocketAddress originator, byte[] data, int length)
protected void
removeAddresses(ClientInstance inst)
void
removeExplicitLANAddress(java.net.InetSocketAddress isa)
void
removeListener(ClientInstanceManagerListener l)
protected java.util.Map
requestReceived(ClientInstance instance, java.util.Map body)
protected void
search()
protected void
sendAlive()
protected void
sendAlive(java.net.InetSocketAddress target)
protected void
sendByeBye()
protected void
sendByeBye(java.net.InetSocketAddress target)
protected void
sendMessage(int type)
protected void
sendMessage(int type, java.net.InetSocketAddress target)
protected void
sendMessage(int type, java.util.Map body)
protected void
sendMessage(int type, java.util.Map body, java.net.InetSocketAddress member)
protected java.util.Map
sendRequest(int type)
protected java.util.Map
sendRequest(int type, java.util.Map body)
void
setIncludeWellKnownLANs(boolean include)
private java.net.InetSocketAddress
setPort(java.net.InetSocketAddress isa, int port)
void
trace(java.lang.String str)
ClientInstanceTracked[]
track(byte[] hash, ClientInstanceTracked.TrackTarget target)
void
updateNow()
private void
waitForInit()
-
-
-
Field Detail
-
DISABLE_LAN_LOCAL_STUFF
private static final boolean DISABLE_LAN_LOCAL_STUFF
- See Also:
- Constant Field Values
-
LOGID
private static final LogIDs LOGID
-
MC_GROUP_ADDRESS
private static final java.lang.String MC_GROUP_ADDRESS
- See Also:
- Constant Field Values
-
MC_GROUP_PORT
private static final int MC_GROUP_PORT
- See Also:
- Constant Field Values
-
MC_CONTROL_PORT
private static final int MC_CONTROL_PORT
- See Also:
- Constant Field Values
-
MT_VERSION
private static final int MT_VERSION
- See Also:
- Constant Field Values
-
MT_ALIVE
private static final int MT_ALIVE
- See Also:
- Constant Field Values
-
MT_BYE
private static final int MT_BYE
- See Also:
- Constant Field Values
-
MT_REQUEST
private static final int MT_REQUEST
- See Also:
- Constant Field Values
-
MT_REPLY
private static final int MT_REPLY
- See Also:
- Constant Field Values
-
MT_REQUEST_SEARCH
private static final int MT_REQUEST_SEARCH
- See Also:
- Constant Field Values
-
MT_REQUEST_TRACK
private static final int MT_REQUEST_TRACK
- See Also:
- Constant Field Values
-
ALIVE_PERIOD
private static final long ALIVE_PERIOD
- See Also:
- Constant Field Values
-
singleton
private static ClientInstanceManagerImpl singleton
-
listeners
private final java.util.List listeners
-
class_mon
private static final AEMonitor class_mon
-
data_socks_proxies
static java.util.Set<java.lang.String> data_socks_proxies
-
adapter
private final ClientInstanceManagerAdapter adapter
-
mc_group
private MCGroup mc_group
-
search_id_next
long search_id_next
-
requests
final java.util.List<ClientInstanceManagerImpl.Request> requests
-
my_instance
final ClientMyInstanceImpl my_instance
-
other_instances
private final java.util.Map<java.lang.String,ClientOtherInstanceImpl> other_instances
-
initialised
private volatile boolean initialised
-
ip_filter
private final IpFilter ip_filter
-
tcp_lan_to_ext
private volatile java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> tcp_lan_to_ext
-
udp_lan_to_ext
private volatile java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> udp_lan_to_ext
-
udp2_lan_to_ext
private volatile java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> udp2_lan_to_ext
-
tcp_ext_to_lan
private volatile java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> tcp_ext_to_lan
-
udp_ext_to_lan
private volatile java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> udp_ext_to_lan
-
udp2_ext_to_lan
private volatile java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> udp2_ext_to_lan
-
lan_addresses
private volatile java.util.Set<java.net.InetAddress> lan_addresses
-
lan_subnets
private volatile java.util.List<java.util.regex.Pattern> lan_subnets
-
explicit_peers
private volatile java.util.List<java.net.InetSocketAddress> explicit_peers
-
explicit_addresses
private CopyOnWriteSet<java.net.InetSocketAddress> explicit_addresses
-
include_well_known_lans
private volatile boolean include_well_known_lans
-
initial_search_sem
final AESemaphore initial_search_sem
-
init_wait_abandoned
private boolean init_wait_abandoned
-
this_mon
final AEMonitor this_mon
-
closing
boolean closing
-
-
Constructor Detail
-
ClientInstanceManagerImpl
protected ClientInstanceManagerImpl(ClientInstanceManagerAdapter _adapter)
-
-
Method Detail
-
getSingleton
public static ClientInstanceManager getSingleton(ClientInstanceManagerAdapter core)
-
initialize
public void initialize()
- Specified by:
initialize
in interfaceClientInstanceManager
-
getDummyMCGroup
private MCGroup getDummyMCGroup()
-
getClockSkew
public long getClockSkew()
- Specified by:
getClockSkew
in interfaceClientInstanceManager
-
trace
public void trace(java.lang.String str)
- Specified by:
trace
in interfaceMCGroupAdapter
-
log
public void log(java.lang.Throwable e)
- Specified by:
log
in interfaceMCGroupAdapter
-
isInitialized
public boolean isInitialized()
- Specified by:
isInitialized
in interfaceClientInstanceManager
-
updateNow
public void updateNow()
- Specified by:
updateNow
in interfaceClientInstanceManager
-
isClosing
protected boolean isClosing()
-
sendAlive
protected void sendAlive()
-
sendAlive
protected void sendAlive(java.net.InetSocketAddress target)
-
sendByeBye
protected void sendByeBye()
-
sendByeBye
protected void sendByeBye(java.net.InetSocketAddress target)
-
sendMessage
protected void sendMessage(int type)
-
sendMessage
protected void sendMessage(int type, java.net.InetSocketAddress target)
-
sendMessage
protected void sendMessage(int type, java.util.Map body)
-
sendMessage
protected void sendMessage(int type, java.util.Map body, java.net.InetSocketAddress member)
-
received
public void received(java.net.NetworkInterface network_interface, java.net.InetAddress local_address, java.net.InetSocketAddress originator, byte[] data, int length)
- Specified by:
received
in interfaceMCGroupAdapter
-
requestReceived
protected java.util.Map requestReceived(ClientInstance instance, java.util.Map body)
-
interfaceChanged
public void interfaceChanged(java.net.NetworkInterface network_interface)
- Specified by:
interfaceChanged
in interfaceMCGroupAdapter
-
checkAdd
protected ClientOtherInstanceImpl checkAdd(ClientOtherInstanceImpl inst)
-
checkRemove
protected void checkRemove(ClientOtherInstanceImpl inst)
-
getMyInstance
public ClientInstance getMyInstance()
- Specified by:
getMyInstance
in interfaceClientInstanceManager
-
search
protected void search()
-
getOtherInstanceCount
public int getOtherInstanceCount(boolean block_if_needed)
- Specified by:
getOtherInstanceCount
in interfaceClientInstanceManager
-
getOtherInstances
public ClientInstance[] getOtherInstances()
- Specified by:
getOtherInstances
in interfaceClientInstanceManager
-
waitForInit
private void waitForInit()
-
addAddresses
protected void addAddresses(ClientInstance inst)
-
removeAddresses
protected void removeAddresses(ClientInstance inst)
-
modifyAddresses
protected void modifyAddresses(java.net.InetAddress internal_address, java.net.InetAddress external_address, int tcp, int udp, int udp2, boolean add)
-
modifyAddress
protected java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> modifyAddress(java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> map, java.net.InetSocketAddress key, java.net.InetSocketAddress value, boolean add)
-
getLANAddress
public java.net.InetSocketAddress getLANAddress(java.net.InetSocketAddress external_address, int address_type)
- Specified by:
getLANAddress
in interfaceClientInstanceManager
-
getExternalAddress
public java.net.InetSocketAddress getExternalAddress(java.net.InetSocketAddress lan_address, int address_type)
- Specified by:
getExternalAddress
in interfaceClientInstanceManager
-
isLANAddress
public boolean isLANAddress(java.net.InetSocketAddress isa)
- Specified by:
isLANAddress
in interfaceClientInstanceManager
-
addExplicitLANAddress
public void addExplicitLANAddress(java.net.InetSocketAddress isa)
- Specified by:
addExplicitLANAddress
in interfaceClientInstanceManager
-
isExplicitLANAddress
public boolean isExplicitLANAddress(java.net.InetSocketAddress isa)
- Specified by:
isExplicitLANAddress
in interfaceClientInstanceManager
-
removeExplicitLANAddress
public void removeExplicitLANAddress(java.net.InetSocketAddress isa)
- Specified by:
removeExplicitLANAddress
in interfaceClientInstanceManager
-
setPort
private java.net.InetSocketAddress setPort(java.net.InetSocketAddress isa, int port)
-
addLANSubnet
public boolean addLANSubnet(java.lang.String subnet) throws java.util.regex.PatternSyntaxException
- Specified by:
addLANSubnet
in interfaceClientInstanceManager
- Throws:
java.util.regex.PatternSyntaxException
-
setIncludeWellKnownLANs
public void setIncludeWellKnownLANs(boolean include)
- Specified by:
setIncludeWellKnownLANs
in interfaceClientInstanceManager
-
getIncludeWellKnownLANs
public boolean getIncludeWellKnownLANs()
- Specified by:
getIncludeWellKnownLANs
in interfaceClientInstanceManager
-
addInstance
public boolean addInstance(java.net.InetAddress explicit_address)
- Specified by:
addInstance
in interfaceClientInstanceManager
-
addInstanceSupport
protected boolean addInstanceSupport(java.net.InetAddress explicit_address, boolean force_send_alive)
-
track
public ClientInstanceTracked[] track(byte[] hash, ClientInstanceTracked.TrackTarget target)
- Specified by:
track
in interfaceClientInstanceManager
-
checkTimeouts
protected void checkTimeouts()
-
informRemoved
protected void informRemoved(ClientOtherInstanceImpl inst)
-
informAdded
protected void informAdded(ClientInstance inst)
-
informChanged
protected void informChanged(ClientInstance inst)
-
informTracked
protected void informTracked(ClientInstanceTracked inst)
-
sendRequest
protected java.util.Map sendRequest(int type)
-
sendRequest
protected java.util.Map sendRequest(int type, java.util.Map body)
-
addListener
public void addListener(ClientInstanceManagerListener l)
- Specified by:
addListener
in interfaceClientInstanceManager
-
removeListener
public void removeListener(ClientInstanceManagerListener l)
- Specified by:
removeListener
in interfaceClientInstanceManager
-
-