Class: NotifierPlugin::BaseHandlerType

Inherits:
Object
  • Object
show all
Defined in:
lib/tecsgen/plugin/NotifierPlugin.rb

Overview

—— ハンドラタイプの定義 ——-

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBaseHandlerType

Returns a new instance of BaseHandlerType.



465
466
467
468
469
470
# File 'lib/tecsgen/plugin/NotifierPlugin.rb', line 465

def initialize
  super

  # HandlerAttribute[]
  @required_attributes = []
end

Instance Attribute Details

#required_attributesObject (readonly)

Returns the value of attribute required_attributes.



472
473
474
# File 'lib/tecsgen/plugin/NotifierPlugin.rb', line 472

def required_attributes
  @required_attributes
end

Instance Method Details

#gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen) ⇒ Object

adpt_gen

AdapterGenerator : アダプタ関数を生成するオブジェクト



535
536
537
# File 'lib/tecsgen/plugin/NotifierPlugin.rb', line 535

def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen)
  return nil
end

#gen_cfg_handler_type(handler) ⇒ Object

NotifierPlugin#BaseHandlerType#gen_cfg_handler_type

タイムイベントの通知の種類を表すコンフィギュレータの記述を生成し、Stringまたはnilを返す

handler

Handler : ハンドラ



523
524
525
# File 'lib/tecsgen/plugin/NotifierPlugin.rb', line 523

def gen_cfg_handler_type(handler)
  raise "called abstract method gen_cfg_handler_type"
end

#generate_attr_map(handler, cell) ⇒ Object

handler

Handler : ハンドラ

cell

Cell : セル



491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
# File 'lib/tecsgen/plugin/NotifierPlugin.rb', line 491

def generate_attr_map(handler, cell)
  map = {}

  join_list = cell.get_join_list

  ATTRS.each {|known_attr|
    attr_name = known_attr.name_for_handler(handler)
    join = join_list.get_item(attr_name.to_sym)

    # このセルタイプにおいて必須の属性か?
    is_required = @required_attributes.include?(known_attr)

    # 属性の指定が不足している? or 過剰?
    # 注: ハンドラタイプの判別には、セルで値が指定されているか
    #     が考慮される。セルタイプで初期値が指定されていても、
    #     それはハンドラタイプの決定に影響しない。
    return nil if join.nil? != !is_required

    # 必要のない属性であり、指定もされていないので飛ばす
    next if join.nil?

    # TODO: attrの結合であることを検証

    map[known_attr] = join
  }

  return map
end

#might_failObject

NotifierPlugin#BaseHandlerType#might_fail

通知の際、エラーが発生し、その結果エラー通知を呼ぶ必要が生じる かどうかを返す。



542
543
544
# File 'lib/tecsgen/plugin/NotifierPlugin.rb', line 542

def might_fail
  return false
end

#validate_join(handler, cell, join) ⇒ Object

NotifierPlugin#BaseHandlerType#validate_join

指定したセルの結合先が、このハンドラタイプに該当するかを検証

handler

Handler : ハンドラ

cell

Cell : セル

join

Join : 結合 (declarationがPortであるもの)



479
480
481
# File 'lib/tecsgen/plugin/NotifierPlugin.rb', line 479

def validate_join(handler, cell, join)
  return !generate_attr_map(handler, cell).nil?
end