コード例 #1
0
  /**
   * Return a messenger suitable for sending to this peer.
   *
   * @return a messenger to this PVE peer or if <code>null</code> if peer is unreachable.
   */
  private Messenger getCachedMessenger() {

    boolean updateAlive = false;

    synchronized (this) {
      if ((null == cachedMessenger) || cachedMessenger.isClosed()) {
        cachedMessenger = null;

        if (LOG.isEnabledFor(Level.DEBUG)) {
          LOG.debug("Getting cached Messenger for " + radv.getName());
        }

        updateAlive = true;
        cachedMessenger = endpoint.getMessenger(getDestAddress(), radv.getRouteAdv());
      }
    }

    if (updateAlive) {
      setAlive(null != cachedMessenger);
    }

    return cachedMessenger;
  }