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

msgpack.rpcx.Server.scala Maven / Gradle / Ivy

package msgpack.rpcx

import msgpack.rpcx.auth.LoginScheduler
import msgpack.rpcx.handler.AuthHandler

import org.msgpack.rpc.loop.EventLoop

/** RPC Server
 *
 * @author myst3r10n
 */
class Server {

  /** RPC loop. */
  protected val loop = EventLoop.start

  /** RPC Server. */
  protected val server = new org.msgpack.rpc.Server(loop)

  /** Schedules time expiration. */
  protected val scheduler = new LoginScheduler

  protected var _handler: AuthHandler = null

  /** Get current handler. */
  def handler = _handler

  /** Set current handler.
   *
   * @param handler to set
   */
  def handler_=(handler: AuthHandler) {

    _handler = handler
    server.serve(handler)

  }

  /** Waits till server released. */
  def await {

    loop.join

  }

  /** Begins listen of clients.
   *
   * @param port of server
   * @param expire of login in seconds, default is 5 minutes. */
  def listen(port: Int, expire: Int = 300) = {

    server.listen(port)
    scheduler.start(handler.loginMap, expire)

    this

  }

  /** Release all busy resources. */
  def release {

    scheduler.cancel
    loop.shutdown
    server.close

  }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy