Search in sources :

Example 1 with AddrAndPort

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);
    }
}
Also used : IPAndPort(com.ms.silverking.net.IPAndPort) AddrAndPort(com.ms.silverking.net.AddrAndPort) Pair(com.ms.silverking.collection.Pair)

Example 2 with AddrAndPort

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);
}
Also used : AddrAndPort(com.ms.silverking.net.AddrAndPort) InputStreamReader(java.io.InputStreamReader) BufferedReader(java.io.BufferedReader)

Example 3 with AddrAndPort

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);
        }
    }
}
Also used : AddrAndPort(com.ms.silverking.net.AddrAndPort) UnknownHostException(java.net.UnknownHostException)

Aggregations

AddrAndPort (com.ms.silverking.net.AddrAndPort)3 Pair (com.ms.silverking.collection.Pair)1 IPAndPort (com.ms.silverking.net.IPAndPort)1 BufferedReader (java.io.BufferedReader)1 InputStreamReader (java.io.InputStreamReader)1 UnknownHostException (java.net.UnknownHostException)1