Skip to content

Commit

Permalink
perf(conn): move slave connector write to separate thread to allow wr…
Browse files Browse the repository at this point in the history
…iting to multiple slaves in parallel
  • Loading branch information
mchitre committed Jul 12, 2019
1 parent cc373a0 commit 521fadd
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
7 changes: 6 additions & 1 deletion src/main/java/org/arl/fjage/remote/ConnectionHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ class ConnectionHandler extends Thread {
private Logger log = Logger.getLogger(getClass().getName());
private RemoteContainer container;
private boolean alive, keepAlive;
private ExecutorService pool = Executors.newSingleThreadExecutor();


public ConnectionHandler(Connector conn, RemoteContainer container) {
this.conn = conn;
Expand All @@ -49,7 +51,6 @@ public ConnectionHandler(Connector conn, RemoteContainer container) {

@Override
public void run() {
ExecutorService pool = Executors.newSingleThreadExecutor();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
out = new DataOutputStream(conn.getOutputStream());
if (keepAlive) println(ALIVE);
Expand Down Expand Up @@ -149,6 +150,10 @@ synchronized void println(String s) {
}
}

void printlnQueued(String s) {
if (pool != null) pool.execute(() -> println(s));
}

JsonMessage printlnAndGetResponse(String s, String id, long timeout) {
if (conn == null) return null;
if (keepAlive && !alive && container instanceof MasterContainer) return null;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/arl/fjage/remote/MasterContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ public boolean send(Message m, boolean relay) {
if (needsCleanup) cleanupSlaves();
synchronized(slaves) {
for (ConnectionHandler slave: slaves)
slave.println(json);
slave.printlnQueued(json);
}
return true;
}
Expand Down

0 comments on commit 521fadd

Please sign in to comment.