/** Sends a request to a single destination */ public void sendUnicastRequest(Address dest, Buffer data, Request req, RequestOptions opts) throws Exception { if(transport == null) { if(log.isWarnEnabled()) log.warn("transport is not available !"); return; } Header hdr=new Header(Header.REQ, 0, this.corr_id); Message msg=new Message(dest, data).putHeader(this.corr_id, hdr) .setFlag(opts.flags()).setTransientFlag(opts.transientFlags()); if(req != null) { // sync RPC long req_id=REQUEST_ID.getAndIncrement(); req.requestId(req_id); hdr.requestId(req_id); // set the request-id only for *synchronous RPCs* if(log.isTraceEnabled()) log.trace("%s: invoking unicast RPC [req-id=%d] on %s", local_addr, req_id, msg.dest()); requests.putIfAbsent(req_id, req); // make sure no view is received before we add ourself as a view handler (https://issues.jboss.org/browse/JGRP-1428) req.viewChange(view); if(rpc_stats.extendedStats()) req.start_time=System.nanoTime(); } else // async RPC rpc_stats.add(RpcStats.Type.UNICAST, dest, false, 0); transport.down(msg); }
/** Handle a request msg for this correlator */ protected void handleRequest(Message req, Header hdr) { Object retval; boolean threw_exception=false; if(log.isTraceEnabled()) log.trace("calling (%s) with request %d", request_handler != null? request_handler.getClass().getName() : "null", hdr.req_id); if(async_dispatching && request_handler != null) { Response rsp=hdr.rspExpected()? new ResponseImpl(req, hdr.req_id) : null; try { request_handler.handle(req, rsp); } catch(Throwable t) { if(rsp != null) rsp.send(wrap_exceptions ? new InvocationTargetException(t) : t, true); else log.error("%s: failed dispatching request asynchronously: %s", local_addr, t); } return; } try { retval=request_handler.handle(req); } catch(Throwable t) { threw_exception=true; retval=wrap_exceptions ? new InvocationTargetException(t) : t; } if(hdr.rspExpected()) sendReply(req, hdr.req_id, retval, threw_exception); }
public String toString() { String str=super.toString(); if(exclusion_list != null) str=str+ ", exclusion_list=" + Arrays.toString(exclusion_list); return str; } }
hdr=new Header(Header.REQ, id, (coll != null), name); hdr.dest_mbrs=dest_mbrs;
if(rsp_buf != null) rsp.setBuffer(rsp_buf); rsp_hdr=new Header(Header.RSP, hdr.id, false, name); rsp.putHeader(name, rsp_hdr); if(log.isTraceEnabled())
/** Handle a request msg for this correlator */ protected void handleRequest(Message req, Header hdr) { Object retval; boolean threw_exception=false; if(log.isTraceEnabled()) log.trace("calling (%s) with request %d", request_handler != null? request_handler.getClass().getName() : "null", hdr.req_id); if(async_dispatching && request_handler != null) { Response rsp=hdr.rspExpected()? new ResponseImpl(req, hdr.req_id) : null; try { request_handler.handle(req, rsp); } catch(Throwable t) { if(rsp != null) rsp.send(wrap_exceptions ? new InvocationTargetException(t) : t, true); else log.error("%s: failed dispatching request asynchronously: %s", local_addr, t); } return; } try { retval=request_handler.handle(req); } catch(Throwable t) { threw_exception=true; retval=wrap_exceptions ? new InvocationTargetException(t) : t; } if(hdr.rspExpected()) sendReply(req, hdr.req_id, retval, threw_exception); }
/** Sends a request to a single destination */ public void sendUnicastRequest(Address dest, Buffer data, Request req, RequestOptions opts) throws Exception { if(transport == null) { if(log.isWarnEnabled()) log.warn("transport is not available !"); return; } Header hdr=new Header(Header.REQ, 0, this.corr_id); Message msg=new Message(dest, data).putHeader(this.corr_id, hdr) .setFlag(opts.flags()).setTransientFlag(opts.transientFlags()); if(req != null) { // sync RPC long req_id=REQUEST_ID.getAndIncrement(); req.requestId(req_id); hdr.requestId(req_id); // set the request-id only for *synchronous RPCs* if(log.isTraceEnabled()) log.trace("%s: invoking unicast RPC [req-id=%d] on %s", local_addr, req_id, msg.dest()); requests.putIfAbsent(req_id, req); // make sure no view is received before we add ourself as a view handler (https://issues.jboss.org/browse/JGRP-1428) req.viewChange(view); if(rpc_stats.extendedStats()) req.start_time=System.nanoTime(); } else // async RPC rpc_stats.add(RpcStats.Type.UNICAST, dest, false, 0); transport.down(msg); }
public String toString() { StringBuilder ret=new StringBuilder(); ret.append("corr_id=" + corrId + ", type="); switch(type) { case REQ: ret.append("REQ"); break; case RSP: ret.append("RSP"); break; case EXC_RSP: ret.append("EXC_RSP"); break; default: ret.append("<unknown>"); } ret.append(", req_id=" + req_id).append(", rsp_expected=" + rspExpected()); return ret.toString(); }
public int serializedSize() { return (int)(super.serializedSize() + Util.size(exclusion_list)); }
public void readFrom(DataInput in) throws Exception { super.readFrom(in); exclusion_list=Util.readAddresses(in); }
private Object handle(Message message) { 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); response.putHeader(FORK.ID, message.getHeader(FORK.ID)); response.putHeader(this.id, new Header(Header.RSP, header.req_id, this.id)); response.setBuffer(UNKNOWN_FORK_RESPONSE.array()); channel.down(response); } return null; } };
public void writeTo(DataOutput out) throws Exception { super.writeTo(out); Util.writeAddresses(exclusion_list, out); }
private Object handle(Message message) { short id = ClassConfigurator.getProtocolId(RequestCorrelator.class); RequestCorrelator.Header header = message.getHeader(id); if (header != null) { log.debugf("Sending CacheNotFoundResponse reply for %s", header); short flags = JGroupsTransport.REPLY_FLAGS; Message response = message.makeReply().setFlag(flags); response.putHeader(FORK.ID, message.getHeader(FORK.ID)); response.putHeader(id, new RequestCorrelator.Header(RequestCorrelator.Header.RSP, header.req_id, id)); response.setBuffer(FORK_NOT_FOUND_BUFFER); fork.down(response); } return null; } });
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; } });
public String toString() { String str=super.toString(); if(exclusion_list != null) str=str+ ", exclusion_list=" + Arrays.toString(exclusion_list); return str; } }
protected void sendResponse(Message rsp, long req_id, boolean is_exception) { Header rsp_hdr=new Header(is_exception? Header.EXC_RSP : Header.RSP, req_id, corr_id); rsp.putHeader(corr_id, rsp_hdr); if(log.isTraceEnabled()) log.trace("sending rsp for %d to %s", req_id, rsp.getDest()); transport.down(rsp); }
public String toString() { StringBuilder ret=new StringBuilder(); ret.append("corr_id=" + corrId + ", type="); switch(type) { case REQ: ret.append("REQ"); break; case RSP: ret.append("RSP"); break; case EXC_RSP: ret.append("EXC_RSP"); break; default: ret.append("<unknown>"); } ret.append(", req_id=" + req_id).append(", rsp_expected=" + rspExpected()); return ret.toString(); }
public void readFrom(DataInput in) throws Exception { super.readFrom(in); exclusion_list=Util.readAddresses(in); }