Search in sources :

Example 1 with Tuple

use of org.jgroups.util.Tuple in project JGroups by belaban.

the class MFC method handleDownMessage.

@Override
protected Object handleDownMessage(final Message msg) {
    Address dest = msg.dest();
    if (// 2nd line of defense, not really needed
    dest != null)
        return down_prot.down(msg);
    int length = msg.length();
    long block_time = max_block_times != null ? getMaxBlockTime(length) : max_block_time;
    while (running) {
        boolean rc = credits.decrement(msg, length, block_time);
        if (rc || max_block_times != null || !running)
            break;
        if (needToSendCreditRequest()) {
            List<Tuple<Address, Long>> targets = credits.getMembersWithCreditsLessThan(min_credits);
            for (Tuple<Address, Long> tuple : targets) sendCreditRequest(tuple.getVal1(), Math.min(max_credits, max_credits - tuple.getVal2()));
        }
    }
    // send message - either after regular processing, or after blocking (when enough credits are available again)
    return down_prot.down(msg);
}
Also used : Address(org.jgroups.Address) Tuple(org.jgroups.util.Tuple)

Example 2 with Tuple

use of org.jgroups.util.Tuple in project JGroups by belaban.

the class DH_KEY_EXCHANGE method handleSecretKeyRequest.

protected void handleSecretKeyRequest(PublicKey dh_public_key, Address sender) throws Exception {
    KeyPair kp = key_pair_gen.generateKeyPair();
    PrivateKey private_key = kp.getPrivate();
    // sent back as part of the response
    PublicKey public_key_rsp = kp.getPublic();
    byte[] version;
    byte[] encrypted_secret_key;
    log.debug("%s: received public key %s.. from %s", local_addr, print16(dh_public_key), sender);
    synchronized (this) {
        key_agreement.init(private_key);
        key_agreement.doPhase(dh_public_key, true);
        // Diffie-Hellman secret session key, to encrypt secret key
        byte[] secret_session_key = key_agreement.generateSecret();
        SecretKey hashed_session_key = hash(secret_session_key);
        Cipher encrypter = Cipher.getInstance(secret_key_algorithm);
        encrypter.init(Cipher.ENCRYPT_MODE, hashed_session_key);
        Tuple<SecretKey, byte[]> tuple = (Tuple<SecretKey, byte[]>) up_prot.up(new Event(Event.GET_SECRET_KEY));
        SecretKey secret_key = tuple.getVal1();
        version = tuple.getVal2();
        encrypted_secret_key = encrypter.doFinal(secret_key.getEncoded());
    }
    log.debug("%s: sending public key rsp %s.. to %s", local_addr, print16(public_key_rsp), sender);
    // send response to sender with public_key_rsp, encrypted secret key and secret key version
    Message rsp = new EmptyMessage(sender).putHeader(id, DhHeader.createSecretKeyResponse(public_key_rsp.getEncoded(), encrypted_secret_key, version));
    down_prot.down(rsp);
}
Also used : SecretKey(javax.crypto.SecretKey) Cipher(javax.crypto.Cipher) Tuple(org.jgroups.util.Tuple)

Example 3 with Tuple

use of org.jgroups.util.Tuple in project fabric8 by jboss-fuse.

the class KubernetesDiscovery method down.

public Object down(Event evt) {
    Object retval = super.down(evt);
    switch(evt.getType()) {
        case Event.VIEW_CHANGE:
            for (Address logical_addr : members) {
                PhysicalAddress physical_addr = (PhysicalAddress) down_prot.down(new Event(Event.GET_PHYSICAL_ADDRESS, logical_addr));
                if (physical_addr != null && !kubernetesHosts.contains(physical_addr)) {
                    dynamic_hosts.addIfAbsent(physical_addr);
                }
            }
            break;
        case Event.SET_PHYSICAL_ADDRESS:
            Tuple<Address, PhysicalAddress> tuple = (Tuple<Address, PhysicalAddress>) evt.getArg();
            PhysicalAddress physical_addr = tuple.getVal2();
            if (physical_addr != null && !kubernetesHosts.contains(physical_addr))
                dynamic_hosts.addIfAbsent(physical_addr);
            break;
    }
    return retval;
}
Also used : IpAddress(org.jgroups.stack.IpAddress) PhysicalAddress(org.jgroups.PhysicalAddress) Address(org.jgroups.Address) Event(org.jgroups.Event) PhysicalAddress(org.jgroups.PhysicalAddress) Tuple(org.jgroups.util.Tuple)

Example 4 with Tuple

use of org.jgroups.util.Tuple in project JGroups by belaban.

the class MFC_NB method handleDownMessage.

@Override
protected Object handleDownMessage(final Message msg) {
    Address dest = msg.dest();
    if (// 2nd line of defense, not really needed
    dest != null)
        return down_prot.down(msg);
    int length = msg.length();
    if (running) {
        if (// timeout is ignored
        credits.decrement(msg, length, 0))
            return down_prot.down(msg);
        // message was queued
        if (needToSendCreditRequest()) {
            List<Tuple<Address, Long>> targets = credits.getMembersWithCreditsLessThan(min_credits);
            for (Tuple<Address, Long> tuple : targets) sendCreditRequest(tuple.getVal1(), Math.min(max_credits, max_credits - tuple.getVal2()));
        }
        return null;
    }
    return down_prot.down(msg);
}
Also used : Address(org.jgroups.Address) Tuple(org.jgroups.util.Tuple)

Example 5 with Tuple

use of org.jgroups.util.Tuple in project JGroups by belaban.

the class STATE method createStreamToProvider.

protected Tuple<InputStream, Object> createStreamToProvider(final Address provider, final StateHeader hdr) {
    Util.close(input_stream);
    input_stream = new BlockingInputStream(buffer_size);
    return new Tuple<>(input_stream, null);
}
Also used : BlockingInputStream(org.jgroups.util.BlockingInputStream) Tuple(org.jgroups.util.Tuple)

Aggregations

Tuple (org.jgroups.util.Tuple)9 Address (org.jgroups.Address)4 Event (org.jgroups.Event)4 SecretKey (javax.crypto.SecretKey)3 IpAddress (org.jgroups.stack.IpAddress)3 PhysicalAddress (org.jgroups.PhysicalAddress)2 AttributeType (org.jgroups.conf.AttributeType)2 InetSocketAddress (java.net.InetSocketAddress)1 ServerSocket (java.net.ServerSocket)1 Socket (java.net.Socket)1 RejectedExecutionException (java.util.concurrent.RejectedExecutionException)1 Cipher (javax.crypto.Cipher)1 SecretKeySpec (javax.crypto.spec.SecretKeySpec)1 BlockingInputStream (org.jgroups.util.BlockingInputStream)1