Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/SharedOpaqueRPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    52 #   $Id: SharedOpaqueRPCPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $Id$
    5338#++
    5439
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= SharedOpaqueRPC プラグイン
    59 # SharedOpaqueRPC チャンネルを生成する
    60 # プラグイン引数は GenTransparentMarshaler 参ç
    61 §
    62 
    63 # mikan through plugin: namespace が考æ
    64 ®ã•ã‚Œã¦ã„ない
    65 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    66 è¦ãŒã‚ã‚‹
     43#= SharedOpaqueRPC プラグイン
     44# SharedOpaqueRPC チャンネルを生成する
     45# プラグイン引数は GenTransparentMarshaler 参照
     46
     47# mikan through plugin: namespace が考慮されていない
     48# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    6749# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6850
    69 # 以下を仮定(制限事é 
    70 ï¼‰
    71 #  呼びå
    72 ƒã€å‘¼ã³å
    73 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    74 #  有符号、無符号でサイズが同じ
     51# 以下を仮定(制限事項)
     52#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     53#  有符号、無符号でサイズが同じ
    7554
    7655class SharedOpaqueRPCPlugin < ThroughPlugin
    7756
    78   # チャンネルをå
    79 ±æœ‰ã™ã‚‹ãƒ—ラグインオブジェクトへのハッシュリスト
     57  # チャンネルを共有するプラグインオブジェクトへのハッシュリスト
    8058  @@shared_channel_list = {}    # { chan_name => [ Plugin_obj0, Plugin_Obj1, ... ] }
    8159
     
    8462  include GenParamCopy
    8563
    86   # SharedOpaqueRPCPlugin 専用のオプション
    87   SharedOpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    88 ƒã‚’変更しないようにする
     64  # SharedOpaqueRPCPlugin 専用のオプション
     65  SharedOpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    8966  SharedOpaqueRPCPluginArgProc[ "sharedChannelName"  ] = Proc.new { |obj,rhs| obj.set_sharedChannelName rhs }
    9067
    91   #=== RPCPlugin の initialize
    92   #  説明は ThroughPlugin (plugin.rb) を参ç
    93 §
     68  #=== RPCPlugin の initialize
     69  #  説明は ThroughPlugin (plugin.rb) を参照
    9470  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell )
    9571    super
    9672    initialize_opaque_marshaler
    97     @entry_port_name = :"eClientEntry"   # Marshaler の受け口名 (through セルのå
    98 ¥ã‚Šå£)
    99 
    100     # オプション:GenOpaqueMarshaler 参ç
    101 §
     73    @entry_port_name = :"eClientEntry"   # Marshaler の受け口名 (through セルの入り口)
     74
     75    # オプション:GenOpaqueMarshaler 参照
    10276    @plugin_arg_check_proc_tab = SharedOpaqueRPCPluginArgProc
    10377    @sharedChannelName = nil
     
    12599    prev_start = @@shared_channel_list[ @shared_channel_cell ][0].start_region
    126100    if @start_region != prev_start then
    127       # 初出と start リージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
     101      # 初出と start リージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
    128102      cdl_error( "SharedRPCPlugin: start region mismatch current: #{@region.get_name} previous: #{prev_start.get_name}")
    129103    end
     
    131105    prev_end = @@shared_channel_list[ @shared_channel_cell ][0].end_region
    132106    if @end_region != prev_end then
    133       # 初出と end リージョン不一致  (初出は、自分自身とチェックされる。無駄だが小さいので放置)
     107      # 初出と end リージョン不一致  (初出は、自分自身とチェックされる。無駄だが小さいので放置)
    134108      cdl_error( "SharedRPCPlugin: end region mismatch current: #{@region.get_name} previous: #{prev_end.get_name}")
    135109    end
     
    141115  # end
    142116
    143   #=== プラグイン引数 sharedChannelCell のチェック
     117  #=== プラグイン引数 sharedChannelCell のチェック
    144118  def set_sharedChannelName( rhs )
    145119    @sharedChannelName = rhs
     
    153127  def gen_plugin_decl_code( file )
    154128
    155     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     129    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    156130    if @@generated_celltype[ @shared_channel_server_ct_name ] == nil then
    157131      @@generated_celltype[ @shared_channel_server_ct_name ] = [ self ]
     
    162136    gen_marshaler_celltype
    163137
    164     # 同じå†
    165 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     138    # 同じ内容を二度書く可能性あり (AppFile は不可)
    166139
    167140    if @PPAllocatorSize then
     
    174147
    175148    f = CFile.open( @shared_channel_ct_file_name, "w" )
    176     # 同じå†
    177 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     149    # 同じ内容を二度書く可能性あり (AppFile は不可)
    178150
    179151    f.print <<EOT
     
    233205  end
    234206
    235   #===  through cell コードを生成
     207  #===  through cell コードを生成
    236208  #
    237209  #
     
    250222    indent_str = "  " * nest
    251223
    252     # セルを探す
     224    # セルを探す
    253225    # path =["::",@next_cell.get_name]
    254226    # cell = Namespace.find( path )
    255227    cell = Namespace.find( @next_cell.get_namespace_path )
    256228
    257     # å
    258 ±æœ‰ã•ã‚Œã‚‹é€šä¿¡ãƒãƒ£ãƒ³ãƒãƒ«ã®ç”Ÿæˆã®ãƒ—ロトタイプ宣言
     229    # 共有される通信チャンネルの生成のプロトタイプ宣言
    259230    file.print <<EOT
    260231#{indent_str}cell #{@shared_channel_client_ct_name} #{@shared_channel_cell};
    261232EOT
    262233
    263     # マーシャラセルの生成(アロケータコードの生成から)
    264     # アロケータの指定があるか?
     234    # マーシャラセルの生成(アロケータコードの生成から)
     235    # アロケータの指定があるか?
    265236    if cell.get_allocator_list.length > 0 then
    266237
     
    278249
    279250        file.print delim
    280         delim = ",\n#{indent_str}           "        # 最終行には出さない
    281 
    282         if subsc then        # é
    283 åˆ—添数
     251        delim = ",\n#{indent_str}           "        # 最終行には出さない
     252
     253        if subsc then        # 配列添数
    284254          subsc_str = '[#{subsc}]'
    285255        else
     
    287257        end
    288258
    289         eport = @entry_port_name #RPCの受け口名に変更
     259        eport = @entry_port_name #RPCの受け口名に変更
    290260        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
    291261      end
     
    294264    end
    295265
    296     # マーシャラセル本体生成
     266    # マーシャラセル本体生成
    297267    file.print <<EOT
    298268/* OpaqueRPC Marshaler Cell */
     
    305275    @start_region.gen_region_str_post file
    306276
    307     # アンマーシャラセルの出力
    308     # セル本体の生成
     277    # アンマーシャラセルの出力
     278    # セル本体の生成
    309279    nest = @end_region.gen_region_str_pre file
    310280
     
    315285EOT
    316286
    317     # PPAllocator がå¿
    318 è¦ã‹?
     287    # PPAllocator が必要か?
    319288    if @PPAllocatorSize then
    320289      if @sub_channel_no == 0 then
     
    341310  end
    342311
    343   #=== post コード(CDL) を生成
    344   # プラグインの後のコードを生成
     312  #=== post コード(CDL) を生成
     313  # プラグインの後のコードを生成
    345314  #file:: File:
    346315  def self.gen_post_code( file )
     
    355324  end
    356325
    357   #=== post コード(CDL) を生成
    358   # å
    359 ±æœ‰ãƒãƒ£ãƒ³ãƒãƒ«ã‚’生成する
    360   # このメソッドは、チャンネルをå
    361 ±æœ‰ã™ã‚‹æœ€åˆã®ãƒ—ラグインオブジェクトのみ呼び出される
     326  #=== post コード(CDL) を生成
     327  # 共有チャンネルを生成する
     328  # このメソッドは、チャンネルを共有する最初のプラグインオブジェクトのみ呼び出される
    362329  def gen_post_code( file, plugin_obj_array )
    363330
    364     # å
    365 ±æœ‰ã•ã‚Œã¦ã„る通信チャンネルの生成
    366     # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
     331    # 共有されている通信チャンネルの生成
     332    # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
    367333    # region = @caller_cell.get_region
    368334    nest = @start_region.gen_region_str_pre file
Note: See TracChangeset for help on using the changeset viewer.