@Override
  public MessageChannel createMessageChannel(HostPort targetHostPort) throws IOException {
    if (logger.isLoggingEnabled(LogWriter.TRACE_DEBUG)) {
      logger.logDebug("NioTlsMessageProcessor::createMessageChannel: " + targetHostPort);
    }
    NioTlsMessageChannel retval = null;
    try {
      String key = MessageChannel.getKey(targetHostPort, "TLS");

      if (messageChannels.get(key) != null) {
        retval = (NioTlsMessageChannel) this.messageChannels.get(key);
        return retval;
      } else {
        retval =
            new NioTlsMessageChannel(
                targetHostPort.getInetAddress(), targetHostPort.getPort(), sipStack, this);

        //	retval.getSocketChannel().register(selector, SelectionKey.OP_READ);
        synchronized (messageChannels) {
          this.messageChannels.put(key, retval);
        }
        retval.isCached = true;
        if (logger.isLoggingEnabled(LogWriter.TRACE_DEBUG)) {
          logger.logDebug("key " + key);
          logger.logDebug("Creating " + retval);
        }
        selector.wakeup();
        return retval;
      }
    } finally {
      if (logger.isLoggingEnabled(LogWriter.TRACE_DEBUG)) {
        logger.logDebug("MessageChannel::createMessageChannel - exit " + retval);
      }
    }
  }
  @Override
  public MessageChannel createMessageChannel(InetAddress targetHost, int port) throws IOException {
    String key = MessageChannel.getKey(targetHost, port, "TLS");
    if (messageChannels.get(key) != null) {
      return this.messageChannels.get(key);
    } else {
      NioTlsMessageChannel retval = new NioTlsMessageChannel(targetHost, port, sipStack, this);

      selector.wakeup();
      //           retval.getSocketChannel().register(selector, SelectionKey.OP_READ);
      this.messageChannels.put(key, retval);
      retval.isCached = true;
      if (logger.isLoggingEnabled(LogWriter.TRACE_DEBUG)) {
        logger.logDebug("key " + key);
        logger.logDebug("Creating " + retval);
      }
      return retval;
    }
  }
 @Override
 public NioTcpMessageChannel createMessageChannel(
     NioTcpMessageProcessor nioTcpMessageProcessor, SocketChannel client) throws IOException {
   return NioTlsMessageChannel.create(NioTlsMessageProcessor.this, client);
 }