use of org.jgroups.Message in project JGroups by belaban.
the class NonBlockingCreditTest method testDecrementAndQueing.
public void testDecrementAndQueing() {
MessageSender msg_sender = new MessageSender();
NonBlockingCredit cred = new NonBlockingCredit(max_credits, 500_000, new ReentrantLock(), msg_sender);
Message msg = msg(1000);
boolean success = cred.decrementIfEnoughCredits(msg, msg.getLength(), 500);
assert success && cred.get() == 9000;
msg = msg(9000);
success = cred.decrementIfEnoughCredits(msg, msg.getLength(), 500);
assert success && cred.get() == 0;
for (int i = 0; i < 5; i++) {
msg = msg(1000);
success = cred.decrementIfEnoughCredits(msg, msg.getLength(), 500);
assert !success && cred.get() == 0;
}
assert cred.isQueuing();
assert cred.getQueuedMessages() == 5;
assert cred.getQueuedMessageSize() == 5000;
// not enough to trigger a message send
cred.increment(500, max_credits);
assert cred.isQueuing();
assert cred.get() == 500 && cred.getQueuedMessages() == 5 && cred.getQueuedMessageSize() == 5000;
// this is enough to send the first queued message
cred.increment(500, max_credits);
assert cred.isQueuing();
assert cred.get() == 0 && cred.getQueuedMessages() == 4 && cred.getQueuedMessageSize() == 4000;
assert msg_sender.sent_msgs == 1;
cred.increment(20000, max_credits);
assert !cred.isQueuing();
assert cred.get() == 6000 && cred.getQueuedMessages() == 0 && cred.getQueuedMessageSize() == 0;
assert msg_sender.sent_msgs == 5;
}
use of org.jgroups.Message in project JGroups by belaban.
the class NioMessageTest method testSetObject.
public void testSetObject() throws Exception {
Person person = new Person(53, "Bela");
Message msg = new NioMessage(null).setObject(person);
_testSize(msg);
byte[] buf = marshal(msg);
Message msg2 = unmarshal(NioMessage.class, buf);
Person p = msg2.getObject();
assert p != null && p.name.equals("Bela") && p.age == 53;
}
use of org.jgroups.Message in project JGroups by belaban.
the class NioMessageTest method testSetObjectDirect.
public void testSetObjectDirect() throws Exception {
Person person = new Person(53, "Bela");
NioMessage msg = new NioMessage(null).useDirectMemory(true).setObject(person).useDirectMemory(false);
_testSize(msg);
byte[] buf = marshal(msg);
ByteBuffer tmp = ByteBuffer.wrap(buf);
Message msg2 = unmarshal(NioMessage.class, tmp);
Person p = msg2.getObject();
assert p != null && p.name.equals("Bela") && p.age == 53;
}
use of org.jgroups.Message in project JGroups by belaban.
the class Route method createMessage.
protected Message createMessage(Address target, Address final_destination, Address original_sender, final Message msg) {
Message copy = relay.copy(msg).setDest(target).setSrc(null);
RELAY2.Relay2Header hdr = new RELAY2.Relay2Header(RELAY2.Relay2Header.DATA, final_destination, original_sender);
copy.putHeader(relay.getId(), hdr);
return copy;
}
use of org.jgroups.Message in project JGroups by belaban.
the class MessageBatch method last.
// not very efficient, but this is only used inside a trace log statement
public <T extends Message> T last() {
Iterator<Message> it = iterator();
Message last = null;
while (it.hasNext()) last = it.next();
return (T) last;
}
Aggregations