示例#1
0
  /** {@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;
  }