本文整理了Java中org.jgroups.Message.setBuffer()
方法的一些代码示例,展示了Message.setBuffer()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Message.setBuffer()
方法的具体详情如下:
包路径:org.jgroups.Message
类名称:Message
方法名:setBuffer
[英]Sets the buffer
Note that the byte[] buffer passed as argument must not be modified. Reason: if we retransmit the message, it would still have a ref to the original byte[] buffer passed in as argument, and so we would retransmit a changed byte[] buffer !
[中]设置缓冲区
注释[]不能作为缓冲区参数传递。原因:如果我们重新传输消息,它仍然会将对原始字节[]缓冲区的引用作为参数传入,因此我们将重新传输更改后的字节[]缓冲区!
代码示例来源:origin: wildfly/wildfly
protected void sendException(Address requester, Throwable exception) {
try {
Message ex_msg=new Message(requester).setBuffer(Util.exceptionToBuffer(exception))
.putHeader(getId(), new StateHeader(StateHeader.STATE_EX));
down(ex_msg);
}
catch(Throwable t) {
log.error("%s: failed sending exception %s to %s", local_addr, exception.toString(), requester);
}
}
代码示例来源:origin: wildfly/wildfly
protected void sendJoinRejectionMessage(Address dest, String error_msg) {
if(dest == null)
return;
JoinRsp joinRes=new JoinRsp(error_msg); // specify the error message on the JoinRsp
Message msg = new Message(dest).putHeader(GMS_ID, new GMS.GmsHeader(GMS.GmsHeader.JOIN_RSP))
.setBuffer(GMS.marshal(joinRes));
if(this.authenticate_coord)
msg.putHeader(this.id, new AuthHeader(this.auth_token));
down_prot.down(msg);
}
代码示例来源:origin: wildfly/wildfly
protected void sendJoinRejectionMessage(Address dest, String error_msg) {
if (dest == null)
return;
JoinRsp joinRes = new JoinRsp(error_msg); // specify the error message on the JoinRsp
Message msg = new Message(dest).putHeader(GMS_ID, new GmsHeader(GmsHeader.JOIN_RSP)).setBuffer(
GMS.marshal(joinRes));
down_prot.down(msg);
}
代码示例来源:origin: wildfly/wildfly
protected void sendMessage(byte[] b, int off, int len) throws IOException {
Message m=new Message(stateRequester).putHeader(id, new StateHeader(StateHeader.STATE_PART));
// we're copying the buffer passed from the state provider here: if a BufferedOutputStream is used, the
// buffer (b) will always be the same and can be modified after it has been set in the message !
// Fix for https://issues.jboss.org/browse/JGRP-1598
byte[] data=new byte[len];
System.arraycopy(b, off, data, 0, len);
// m.setBuffer(b, off, len);
m.setBuffer(data);
bytesWrittenCounter+=len;
if(Thread.interrupted())
throw interrupted((int)bytesWrittenCounter);
down_prot.down(m);
if(log.isTraceEnabled())
log.trace("%s: sent chunk of %s to %s",local_addr,Util.printBytes(len),stateRequester);
}
代码示例来源:origin: wildfly/wildfly
public void sendJoinResponse(JoinRsp rsp, Address dest) {
Message m=new Message(dest).putHeader(this.id, new GmsHeader(GmsHeader.JOIN_RSP))
.setBuffer(marshal(rsp)).setFlag(OOB, INTERNAL);
getDownProtocol().down(m);
}
代码示例来源:origin: wildfly/wildfly
protected void sendException(Address requester, Throwable exception) {
try {
Message ex_msg=new Message(requester).setBuffer(Util.exceptionToBuffer(exception))
.putHeader(getId(), new StateHeader(StateHeader.STATE_EX));
down(ex_msg);
}
catch(Throwable t) {
log.error("%s: failed sending exception %s to %s", local_addr, exception, requester);
}
}
代码示例来源:origin: wildfly/wildfly
@Override
public void members(List<PingData> mbrs) {
PhysicalAddress own_physical_addr=(PhysicalAddress)down(new Event(Event.GET_PHYSICAL_ADDRESS, local_addr));
PingData data=new PingData(local_addr, false, org.jgroups.util.NameCache.get(local_addr), own_physical_addr);
PingHeader hdr=new PingHeader(PingHeader.GET_MBRS_REQ).clusterName(cluster_name);
Set<PhysicalAddress> physical_addrs=mbrs.stream().filter(ping_data -> ping_data != null && ping_data.getPhysicalAddr() != null)
.map(PingData::getPhysicalAddr).collect(Collectors.toSet());
for(PhysicalAddress physical_addr: physical_addrs) {
if(physical_addr != null && own_physical_addr.equals(physical_addr)) // no need to send the request to myself
continue;
// the message needs to be DONT_BUNDLE, see explanation above
final Message msg=new Message(physical_addr).setFlag(Message.Flag.INTERNAL, Message.Flag.DONT_BUNDLE, Message.Flag.OOB)
.putHeader(this.id, hdr).setBuffer(marshal(data));
log.trace("%s: sending discovery request to %s", local_addr, msg.getDest());
down_prot.down(msg);
}
}
代码示例来源:origin: wildfly/wildfly
private void rejectFlush(Collection<? extends Address> participants, long viewId) {
if(participants == null)
return;
for (Address flushMember : participants) {
if(flushMember == null)
continue;
Message reject = new Message(flushMember).src(localAddress).setFlag(Message.Flag.OOB, Message.Flag.INTERNAL)
.putHeader(this.id, new FlushHeader(FlushHeader.ABORT_FLUSH, viewId))
.setBuffer(marshal(participants, null));
down_prot.down(reject);
}
}
代码示例来源:origin: wildfly/wildfly
/**
* Starts the flush protocol
* @param members List of participants in the flush protocol. Guaranteed to be non-null
*/
private void onSuspend(final List<Address> members) {
Message msg = null;
Collection<Address> participantsInFlush = null;
synchronized (sharedLock) {
flushCoordinator = localAddress;
// start FLUSH only on group members that we need to flush
participantsInFlush = members;
participantsInFlush.retainAll(currentView.getMembers());
flushMembers.clear();
flushMembers.addAll(participantsInFlush);
flushMembers.removeAll(suspected);
msg = new Message(null).src(localAddress).setBuffer(marshal(participantsInFlush, null))
.putHeader(this.id, new FlushHeader(FlushHeader.START_FLUSH, currentViewId()));
}
if (participantsInFlush.isEmpty()) {
flush_promise.setResult(SUCCESS_START_FLUSH);
} else {
down_prot.down(msg);
if (log.isDebugEnabled())
log.debug(localAddress + ": flush coordinator "
+ " is starting FLUSH with participants " + participantsInFlush);
}
}
代码示例来源:origin: wildfly/wildfly
protected void retransmit(SeqnoList missing_msgs, final Address sender, boolean multicast_xmit_request) {
Address dest=(multicast_xmit_request || this.use_mcast_xmit_req)? null : sender; // to whom do we send the XMIT request ?
if(xmit_from_random_member && !local_addr.equals(sender)) {
Address random_member=Util.pickRandomElement(members);
if(random_member != null && !local_addr.equals(random_member))
dest=random_member;
}
Message retransmit_msg=new Message(dest).setBuffer(Util.streamableToBuffer(missing_msgs))
.setFlag(Message.Flag.OOB, Message.Flag.INTERNAL)
.putHeader(this.id, NakAckHeader2.createXmitRequestHeader(sender));
log.trace("%s: sending XMIT_REQ (%s) to %s", local_addr, missing_msgs, dest);
down_prot.down(retransmit_msg);
if(stats)
xmit_reqs_sent.add(missing_msgs.size());
}
代码示例来源:origin: wildfly/wildfly
.putHeader(this.id,hdr);
if(data != null)
msg.setBuffer(marshal(data));
代码示例来源:origin: wildfly/wildfly
/**
* Fetches the digests from all members and installs them again. Used only for diagnosis and support; don't
* use this otherwise !
*/
protected void fixDigests() {
Digest digest=fetchDigestsFromAllMembersInSubPartition(gms.view, null);
Message msg=new Message().putHeader(gms.getId(), new GMS.GmsHeader(GMS.GmsHeader.INSTALL_DIGEST))
.setBuffer(GMS.marshal(null, digest));
gms.getDownProtocol().down(msg);
}
代码示例来源:origin: wildfly/wildfly
Message copy=msg.copy(false).putHeader(this.id,new CompressHeader(length))
.setBuffer(compressed_payload, 0, compressed_size);
if(log.isTraceEnabled())
log.trace("compressed payload from %d bytes to %d bytes", length, compressed_size);
代码示例来源:origin: wildfly/wildfly
protected void encryptAndSend(Message msg) throws Exception {
EncryptHeader hdr=new EncryptHeader(EncryptHeader.ENCRYPT, symVersion());
// copy neeeded because same message (object) may be retransmitted -> prevent double encryption
Message msgEncrypted=msg.copy(false).putHeader(this.id, hdr);
if(msg.getLength() > 0)
msgEncrypted.setBuffer(code(msg.getRawBuffer(),msg.getOffset(),msg.getLength(),false));
else { // length is 0
byte[] payload=msg.getRawBuffer();
if(payload != null) // we don't encrypt empty buffers (https://issues.jboss.org/browse/JGRP-2153)
msgEncrypted.setBuffer(payload, msg.getOffset(), msg.getLength());
}
down_prot.down(msgEncrypted);
}
代码示例来源:origin: wildfly/wildfly
private Object handle(Message message) {
Header header = (Header) message.getHeader(this.id);
// If this is a request expecting a response, don't leave the requester hanging - send an identifiable response on which it can filter
if ((header != null) && (header.type == Header.REQ) && header.rspExpected()) {
Message response = message.makeReply().setFlag(message.getFlags()).clearFlag(Message.Flag.RSVP, Message.Flag.INTERNAL);
response.putHeader(FORK.ID, message.getHeader(FORK.ID));
response.putHeader(this.id, new Header(Header.RSP, header.req_id, header.corrId));
response.setBuffer(UNKNOWN_FORK_RESPONSE.array());
fork.getProtocolStack().getChannel().down(response);
}
return null;
}
});
代码示例来源:origin: wildfly/wildfly
m.putHeader(this.id, new FlushHeader(FlushHeader.FLUSH_COMPLETED, viewID)).setBuffer(marshal(null, digest));
down_prot.down(m);
代码示例来源:origin: wildfly/wildfly
/** Send back a response containing view and digest to sender */
protected void sendMergeResponse(Address sender, View view, Digest digest, MergeId merge_id) {
Message msg=new Message(sender).setBuffer(GMS.marshal(view, digest)).setFlag(Message.Flag.OOB,Message.Flag.INTERNAL)
.putHeader(gms.getId(), new GMS.GmsHeader(GMS.GmsHeader.MERGE_RSP).mergeId(merge_id));
gms.getDownProtocol().down(msg);
}
代码示例来源:origin: wildfly/wildfly
/** Sends a retransmit request to the given sender */
protected void retransmit(SeqnoList missing, Address sender) {
Message xmit_msg=new Message(sender).setBuffer(Util.streamableToBuffer(missing))
.setFlag(Message.Flag.OOB, Message.Flag.INTERNAL).putHeader(id, UnicastHeader3.createXmitReqHeader());
if(is_trace)
log.trace("%s: sending XMIT_REQ (%s) to %s", local_addr, missing, sender);
down_prot.down(xmit_msg);
xmit_reqs_sent.add(missing.size());
}
代码示例来源:origin: wildfly/wildfly
/**
* Sends a MERGE_REQ to all coords and populates a list of MergeData (in merge_rsps). Returns after coords.size()
* response have been received, or timeout msecs have elapsed (whichever is first).<p>
* If a subgroup coordinator rejects the MERGE_REQ (e.g. because of participation in a different merge),
* <em>that member will be removed from coords !</em>
* @param coords A map of coordinatgor addresses and associated membership lists
* @param new_merge_id The new merge id
* @param timeout Max number of msecs to wait for the merge responses from the subgroup coords
*/
protected boolean getMergeDataFromSubgroupCoordinators(Map<Address,Collection<Address>> coords, MergeId new_merge_id, long timeout) {
boolean gotAllResponses;
long start=System.currentTimeMillis();
merge_rsps.reset(coords.keySet());
log.trace("%s: sending MERGE_REQ to %s", gms.local_addr, coords.keySet());
for(Map.Entry<Address,Collection<Address>> entry: coords.entrySet()) {
Address coord=entry.getKey();
Collection<Address> mbrs=entry.getValue();
Message msg=new Message(coord).setFlag(Message.Flag.OOB, Message.Flag.INTERNAL)
.putHeader(gms.getId(), new GMS.GmsHeader(GMS.GmsHeader.MERGE_REQ).mbr(gms.local_addr).mergeId(new_merge_id))
.setBuffer(GMS.marshal(mbrs));
gms.getDownProtocol().down(msg);
}
// wait until num_rsps_expected >= num_rsps or timeout elapsed
merge_rsps.waitForAllResponses(timeout);
gotAllResponses=merge_rsps.hasAllResponses();
long time=System.currentTimeMillis() - start;
log.trace("%s: collected %d merge response(s) in %d ms", gms.local_addr, merge_rsps.numberOfValidResponses(), time);
return gotAllResponses;
}
代码示例来源:origin: wildfly/wildfly
msg = new Message().setFlag(Message.Flag.OOB);
reconcileOks.clear();
msg.putHeader(this.id, new FlushHeader(FlushHeader.FLUSH_RECONCILE, currentViewId()))
.setBuffer(marshal(flushMembers, d));
内容来源于网络,如有侵权,请联系作者删除!