use of com.ms.silverking.net.AddrAndPort in project SilverKing by Morgan-Stanley.
the class MessageGroupBase method readAliasMapEntry.
private Pair<AddrAndPort, AddrAndPort[]> readAliasMapEntry(String s, int port) {
String[] toks;
toks = s.trim().split("\\s+");
if (toks.length != 2) {
throw new RuntimeException("Invalid map entry: " + s);
} else {
AddrAndPort addr;
AddrAndPort[] aliases;
addr = new IPAndPort(toks[0], port);
aliases = IPAndPort.parseToArray(toks[1], port);
return new Pair<>(addr, aliases);
}
}
use of com.ms.silverking.net.AddrAndPort in project SilverKing by Morgan-Stanley.
the class MessageGroupBase method readAliasMap.
private Map<AddrAndPort, AddrAndPort[]> readAliasMap(InputStream in, int port) throws IOException {
BufferedReader reader;
String line;
HashMap<AddrAndPort, AddrAndPort[]> map;
map = new HashMap<>();
reader = new BufferedReader(new InputStreamReader(in));
do {
line = reader.readLine();
if (line != null) {
Pair<AddrAndPort, AddrAndPort[]> entry;
entry = readAliasMapEntry(line, port);
map.put(entry.getV1(), entry.getV2());
}
} while (line != null);
reader.close();
return ImmutableMap.copyOf(map);
}
use of com.ms.silverking.net.AddrAndPort in project SilverKing by Morgan-Stanley.
the class MessageGroupBase method send.
/*
@Override
public void receive(MessageGroup message, MessageGroupConnection connection) {
Log.warning("\t*** Received: ", message);
message.displayForDebug();
for (MessageGroupEntry entry : message.getKeyIterator()) {
System.out.println(entry);
}
}
*/
public void send(MessageGroup mg, AddrAndPort dest) {
if (debug) {
System.out.println("Sending: " + mg + " to " + dest);
}
if (this._getIPAndPort().equals(dest)) {
// Short circuit local
messageGroupReceiver.receive(MessageGroup.clone(mg), null);
} else {
try {
AddrAndPort _dest;
if (addrAliases != null) {
AddrAndPort[] aliases;
aliases = addrAliases.get(dest);
if (aliases != null) {
// _dest = aliases[ThreadLocalRandom.current().nextInt(aliases.length)];
_dest = aliases[aliasIndex.getAndIncrement() % aliases.length];
// System.out.printf("%s ==> %s\n", dest, _dest);
} else {
_dest = dest;
}
} else {
_dest = dest;
}
paServer.sendAsynchronous(_dest.toInetSocketAddress(), mg, null, null, mg.getDeadlineAbsMillis(deadlineTimeSource));
} catch (UnknownHostException uhe) {
throw new RuntimeException(uhe);
}
}
}
Aggregations