/** {@inheritDoc} */ public boolean send(Message message) throws IOException { if (closed) { throw new IOException("Pipe closed"); } Message msg = message.clone(); WireHeader header = new WireHeader(); header.setPipeID(getPipeID()); header.setSrcPeer(group.getPeerID()); header.setTTL(1); header.setMsgId(WirePipe.createMsgId()); XMLDocument asDoc = (XMLDocument) header.getDocument(MimeMediaType.XMLUTF8); MessageElement elem = new TextDocumentMessageElement(WirePipeImpl.WIRE_HEADER_ELEMENT_NAME, asDoc, null); msg.replaceMessageElement(WirePipeImpl.WIRE_HEADER_ELEMENT_NAMESPACE, elem); checkMessenger(); try { destMessenger.sendMessageB(msg, null, null); } catch (IOException io) { checkMessenger(); destMessenger.sendMessageB(msg, null, null); } return true; }