All Downloads are FREE. Search and download functionalities are using the official Maven repository.

monad.rpc.internal.ServerChannelManagerSupport.scala Maven / Gradle / Ivy

The newest version!
// Copyright 2014,2015 the original author or authors. All rights reserved.
// site: http://www.ganshane.com
package monad.rpc.internal

import org.jboss.netty.channel.group.DefaultChannelGroup
import org.jboss.netty.channel.{ChannelHandlerContext, ChannelPipeline, ChannelStateEvent, SimpleChannelUpstreamHandler}

/**
 * server channel manager
 */
trait ServerChannelManagerSupport {
  private val channels = new DefaultChannelGroup("rpc-server")

  protected def initChannelManager(pipeline: ChannelPipeline) {
    pipeline.addFirst("monitor", new MonitorChannelHandler)
  }

  protected def closeAllChannels() {
    channels.close().awaitUninterruptibly()
  }

  private class MonitorChannelHandler extends SimpleChannelUpstreamHandler {
    override def channelOpen(ctx: ChannelHandlerContext, e: ChannelStateEvent): Unit = {
      channels.add(e.getChannel)
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy