Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 1.7 KB

start_handler.adoc

File metadata and controls

49 lines (37 loc) · 1.7 KB

start(args)

コントローラの起動イベントを捕捉するハンドラ。引数 args は trema run で -- の後に渡した引数の配列。

概要

def start(args)
  # ...
end

たとえばコントローラを次のように起動した場合、args の中身は ['graphviz', '/tmp/topology.png'] となる。

trema/topology の起動例より
$ ./bin/trema run ./lib/topology_controller.rb -c fullmesh.conf -- graphviz /tmp/topology.png

もしコマンドライン引数がない場合には、args は空 ([])。

サンプルコード

典型的な start ハンドラでは、ユーザが trema run で指定したコントローラの起動オプションを次のようにパースする:

trema/topology の lib/topology_controller.rb より抜粋
def start(args)
  @command_line = CommandLine.new(logger)
  @command_line.parse(args)
  @topology = Topology.new
  @topology.add_observer @command_line.view
  logger.info "#{name} started (#{@command_line.view})."
end

ここではコマンドライン引数を処理するために、コントローラ独自の CommandLine クラスでコマンドライン引数 args をパースし、その結果をトポロジの表示方法の決定に使っている。

もし args 引数を使わない場合には、次のように名前をアンダーバーで始める (_args) ことで、使っていないことを明らかにする。

trema/hello_trema の lib/hello_trema.rb より抜粋
def start(_args)
  logger.info "#{name} started."
end