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);
}
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);
}
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;
}
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);
}
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);
}
Aggregations