Plugin refactoring.

This commit is contained in:
akwizgran
2011-10-07 13:17:13 +01:00
parent a37186d574
commit ea6beac011
2 changed files with 15 additions and 15 deletions

View File

@@ -39,13 +39,13 @@ class SimpleSocketPlugin extends SocketPlugin {
@Override
protected SocketAddress getLocalSocketAddress() {
assert started && localProperties != null;
assert started;
return createSocketAddress(localProperties);
}
@Override
protected SocketAddress getSocketAddress(ContactId c) {
assert started && remoteProperties != null;
assert started;
Map<String, String> properties = remoteProperties.get(c);
if(properties == null) return null;
return createSocketAddress(properties);
@@ -67,7 +67,7 @@ class SimpleSocketPlugin extends SocketPlugin {
@Override
protected void setLocalSocketAddress(SocketAddress s) {
assert started && localProperties != null;
assert started;
if(!(s instanceof InetSocketAddress))
throw new IllegalArgumentException();
InetSocketAddress i = (InetSocketAddress) s;

View File

@@ -66,7 +66,14 @@ implements StreamTransportPlugin {
return;
}
synchronized(this) {
if(!started) return;
if(!started) {
try {
ss.close();
} catch(IOException e) {
// FIXME: Logging
}
return;
}
socket = ss;
setLocalSocketAddress(ss.getLocalSocketAddress());
startListener();
@@ -151,13 +158,13 @@ implements StreamTransportPlugin {
private Runnable createConnector(final ContactId c) {
return new Runnable() {
public void run() {
connect(c);
connectAndCallBack(c);
}
};
}
private void connect(ContactId c) {
StreamTransportConnection conn = createAndConnectSocket(c);
private void connectAndCallBack(ContactId c) {
StreamTransportConnection conn = createConnection(c);
if(conn != null) {
synchronized(this) {
if(started) callback.outgoingConnectionCreated(c, conn);
@@ -165,7 +172,7 @@ implements StreamTransportPlugin {
}
}
private StreamTransportConnection createAndConnectSocket(ContactId c) {
public StreamTransportConnection createConnection(ContactId c) {
SocketAddress addr;
Socket s;
try {
@@ -181,11 +188,4 @@ implements StreamTransportPlugin {
}
return new SocketTransportConnection(s);
}
public StreamTransportConnection createConnection(ContactId c) {
synchronized(this) {
if(!started) return null;
}
return createAndConnectSocket(c);
}
}