public Object up(Message msg) { try { Message ret=deserialize(msg); return up_prot.up(ret); } catch(Exception e) { throw new RuntimeException(String.format("failed deserialize message from %s", msg.src()), e); } }
protected static void dump(String type, Message msg) { StringBuilder sb=new StringBuilder(); sb.append(String.format("\n%s from %s (%d bytes):\nhdrs: %s\n", type, msg.src(), msg.getLength(), msg.printHeaders())); if(msg.getLength() > 0) { sb.append("payload: "); printPayload(msg, sb); sb.append("\n"); } System.out.println(sb.toString()); }
public static String dump(byte[] buf, int offset, int length) { StringBuilder sb=new StringBuilder(); List<Message> msgs=parse(new ByteArrayInputStream(buf, offset, length)); if(msgs != null) for(Message msg: msgs) sb.append(String.format("dst=%s src=%s (%d bytes): hdrs= %s\n", msg.dest(), msg.src(), msg.getLength(), msg.printHeaders())); return sb.toString(); }
protected Object handleMessage(Message msg, Header hdr) { switch(hdr.type) { case CACHE_REQ: handleCacheRequest(msg.src()); break; case CACHE_RSP: handleCacheResponse(msg); break; } return null; }
public Object down(Message msg) { System.out.println("------------------- TRACE (sent) -----------------------"); System.out.printf("msg from %s to %s (%d bytes): hdrs=%s\n", msg.src(), msg.dest(), msg.length(), msg.printHeaders()); System.out.println("--------------------------------------------------------"); return down_prot.down(msg); }
public Object up(Message msg) { if(print_up) System.out.printf("-- [s] from %s (%d bytes): %s\n", msg.src(), msg.getLength(), msg.printHeaders()); return up_prot.up(msg); // Pass up to the layer above us }
protected static void dump(GossipData data) { System.out.println(""); List<Message> messages=Util.parse(data.buffer, data.offset, data.length); if(messages != null) for(Message msg : messages) System.out.printf("dst=%s src=%s (%d bytes): hdrs= %s\n", msg.dest(), msg.src(), msg.getLength(), msg.printHeaders()); }
public void up(MessageBatch batch) { if(print_up) { for(Message msg : batch) System.out.printf("-- [b] from %s (%d bytes): %s\n", msg.src(), msg.getLength(), msg.printHeaders()); } if(!batch.isEmpty()) up_prot.up(batch); }
public Object up(Message msg) { DhHeader hdr=msg.getHeader(id); if(hdr != null) { handle(hdr, msg.src()); return null; } return up_prot.up(msg); }
protected Object handleEncryptedMessage(Message msg, byte[] version) throws Exception { if(!Arrays.equals(sym_version, version)) { // only check if msg needs to be queued if versions differ versionMismatch(msg); return null; } // try and decrypt the message - we need to copy msg as we modify its // buffer (http://jira.jboss.com/jira/browse/JGRP-538) Message tmpMsg=decryptMessage(null, msg.copy()); // need to copy for possible xmits if(tmpMsg != null) return up_prot.up(tmpMsg); log.warn("%s: unrecognized cipher; discarding message from %s", local_addr, msg.src()); return null; }
protected void handleCacheResponse(Message msg) { Header hdr=msg.getHeader(id); if(hdr != null && hdr.addr != null && hdr.name != null) { if(log.isTraceEnabled()) log.trace("%s: received %s from %s", local_addr, hdr, msg.src()); NameCache.add(hdr.addr, hdr.name); } }
public void up(MessageBatch batch) { for(Message msg: batch) { DhHeader hdr=msg.getHeader(id); if(hdr != null) { batch.remove(msg); handle(hdr, msg.src()); } } if(!batch.isEmpty()) up_prot.up(batch); }
public void receive(Message msg) { if(receiver == null) return; try { receiver.receive(msg.src(), msg.getRawBuffer(), msg.getOffset(), msg.getLength()); } catch(Throwable t) { log.error("failed delivering message", t); } }
protected Message createMessage(Address target, Address final_destination, Address original_sender, final Message msg) { Message copy=relay.copy(msg).dest(target).src(null); RELAY2.Relay2Header hdr=new RELAY2.Relay2Header(RELAY2.Relay2Header.DATA, final_destination, original_sender); copy.putHeader(relay.getId(), hdr); return copy; } }
public void receive(MessageBatch batch) { if(receiver == null) return; for(Message msg: batch) { try { receiver.receive(msg.src(), msg.getRawBuffer(), msg.getOffset(), msg.getLength()); } catch(Throwable t) { log.error("failed delivering message from batch", t); } } }
protected Object handleUpMessage(Message msg) throws Exception { EncryptHeader hdr=msg.getHeader(this.id); if(hdr == null) { log.error("%s: received message without encrypt header from %s; dropping it", local_addr, msg.src()); return null; } switch(hdr.type()) { case EncryptHeader.ENCRYPT: return handleEncryptedMessage(msg, hdr.version); default: return handleUpEvent(msg,hdr); } }
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); } }
protected void sendSecretKey(Key secret_key, PublicKey public_key, Address source) throws Exception { byte[] encryptedKey=encryptSecretKey(secret_key, public_key); Message newMsg=new Message(source, encryptedKey).src(local_addr) .putHeader(this.id, new EncryptHeader(EncryptHeader.SECRET_KEY_RSP, symVersion())); log.debug("%s: sending secret key response to %s (version: %s)", local_addr, source, Util.byteArrayToHexString(sym_version)); down_prot.down(newMsg); }
protected void handleSecretKeyRequest(final Message msg) { if(!inView(msg.src(), "key requester %s is not in current view %s; ignoring key request")) return; log.debug("%s: received secret key request from %s", local_addr, msg.getSrc()); try { PublicKey tmpKey=generatePubKey(msg.getBuffer()); sendSecretKey(secret_key, tmpKey, msg.getSrc()); } catch(Exception e) { log.warn("%s: unable to reconstitute peer's public key", local_addr); } }
/** * Sends a SITE-UNREACHABLE message to the sender of the message. Because the sender is always local (we're the * relayer), no routing needs to be done * @param dest * @param target_site */ protected void sendSiteUnreachableTo(Address dest, String target_site) { Message msg=new Message(dest).setFlag(Message.Flag.OOB, Message.Flag.INTERNAL) .src(new SiteUUID((UUID)local_addr, NameCache.get(local_addr), site)) .putHeader(id,new Relay2Header(Relay2Header.SITE_UNREACHABLE,new SiteMaster(target_site),null)); down_prot.down(msg); }