import java.util.List; import java.util.Map; public interface IChannelNode extends Comparable { enum Direction { INCOMING(0), // Users incoming from outside channel (aka: other channel forwarded this channel's post) OUTGOING(1), // Users outgoing from this channel (aka: this channel forwarded someone else's post) BOTH(2); // Modify both incoming and outgoing counts at once private final int val; Direction(int val) {this.val = val;} public int getVal() {return this.val;} } void setConnections(Map conmap, Direction dir); void setNumConnections(IChannelNode node, Direction dir, int num); void addConnection(IChannelNode node, Direction dir); void addConnections(Iterable nodes, Direction dir); void removeConnection(IChannelNode node, Direction dir); void removeConnections(Iterable nodes, Direction dir); void clearConnections(Direction dir); boolean connectionExists(IChannelNode node, Direction dir); int getNumConnections(Direction dir); Map getIncomingConnections(); Map getOutgoingConnections(); List> getConnections(Direction dir); }