package org.torproject.jtor.control.events;
import java.util.ArrayList;
import java.util.List;
import org.torproject.jtor.control.ControlConnectionHandler;
import org.torproject.jtor.directory.Directory;
public class ControlEventQueue {
private List<String> events = new ArrayList<String>();
private ControlEventHandler newconsensus;
public void addMessage(final String message) {
synchronized (this) {
events.add(message);
}
}
public synchronized void writeQueue(ControlConnectionHandler cch) {
synchronized (this) {
String[] messages = new String[events.size()];
events.toArray(messages);
for (String msg : messages) {
cch.write(msg);
}
events.clear();
}
}
public void resetAllHandlers(Directory dir) {
dir.unregisterConsensusChangedHandler(newconsensus);
newconsensus = null;
System.gc();
}
public void addNewConsensusHandler(Directory dir) {
if (newconsensus == null) {
newconsensus = new NewConsensusHandler(this);
dir.registerConsensusChangedHandler(newconsensus);
}
}
}