Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPRPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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
    5237#  $Id$
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= HRPRPCPlugin プラグイン
    59 # スループラグイン (through)
    60 # ・OpaqueMarshalerPlugin を使用してマーシャラセルタイプを生成する
    61 # ・マーシャラ、TDR、チャンネル、メッセージバッファを生成する
     43#= HRPRPCPlugin プラグイン
     44# スループラグイン (through)
     45# ・OpaqueMarshalerPlugin を使用してマーシャラセルタイプを生成する
     46# ・マーシャラ、TDR、チャンネル、メッセージバッファを生成する
    6247#
    6348class HRPRPCPlugin < ThroughPlugin
     
    6651  include GenParamCopy
    6752
    68   # RPCPlugin 専用のオプション
    69   HRPRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    70 ƒã‚’変更しないようにする
     53  # RPCPlugin 専用のオプション
     54  HRPRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    7155  HRPRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    7256  HRPRPCPluginArgProc[ "semaphoreCelltype"  ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs }
    7357  @@isFirstInstance = true
    7458
    75   #=== RPCPlugin の initialize
    76   #  説明は ThroughPlugin (plugin.rb) を参ç
    77 §
     59  #=== RPCPlugin の initialize
     60  #  説明は ThroughPlugin (plugin.rb) を参照
    7861  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    7962    super
     
    8265    initialize_opaque_marshaler
    8366
    84     # オプション:GenOpaqueMarshaler 参ç
    85 §
     67    # オプション:GenOpaqueMarshaler 参照
    8668    @plugin_arg_check_proc_tab = HRPRPCPluginArgProc
    8769    parse_plugin_arg
     
    9981      if @PPAllocatorSize == nil then
    10082        cdl_error( "HRP9999 PPAllocatorSize must be speicified for pointer argments" )
    101         # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
     83        # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
    10284      end
    10385    elsif @PPAllocatorSize then
     
    10991#      if func_decl.get_type.is_oneway? then
    11092#        if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then
    111 #          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列のé
    112 åˆ—
     93#          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列の配列
    11394#        elsif param_decl.get_string == -1 then
    114 #          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
     95#          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
    11596#        end
    11697#      end
     
    11899
    119100    #
    120     #  tecsgen/tecs/rpcにincludeパスを通す
    121     #  #include "tecs_rpc.h" を実現するためにå¿
    122 è¦
    123     #    大山:削除 Makefile.tecsgen に vpath, INCLUDES をå
    124 ¥ã‚Œã‚‹ã®ã¯ã€ã‚ˆããªã„考え
    125     #             TECSGEN.add_search_path で Makefile_templ にå
    126 ¥ã‚Œã‚‹ã®ãŒã‚ˆã„
     101    #  tecsgen/tecs/rpcにincludeパスを通す
     102    #  #include "tecs_rpc.h" を実現するために必要
     103    #    大山:削除 Makefile.tecsgen に vpath, INCLUDES を入れるのは、よくない考え
     104    #             TECSGEN.add_search_path で Makefile_templ に入れるのがよい
    127105    # if @@isFirstInstance
    128106    #     f = AppFile.open( "#{$gen}/Makefile.tecsgen" )
     
    134112  end
    135113
    136   #=== plugin の宣言コード (celltype の定義) 生成
     114  #=== plugin の宣言コード (celltype の定義) 生成
    137115  def gen_plugin_decl_code( file )
    138116
    139117    ct_name = "#{@ct_name}_#{@channelCelltype}"
    140118
    141     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     119    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    142120    if @@generated_celltype[ ct_name ] == nil then
    143121      @@generated_celltype[ ct_name ] = [ self ]
     
    148126
    149127    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    150     # 同じå†
    151 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     128    # 同じ内容を二度書く可能性あり (AppFile は不可)
    152129
    153130    f.print <<EOT
     
    177154  end
    178155
    179   #===  through cell コードを生成
     156  #===  through cell コードを生成
    180157  #
    181158  #
     
    229206EOT
    230207
    231     ##### クライアント側のセルの生成 #####
     208    ##### クライアント側のセルの生成 #####
    232209    nest = @start_region.gen_region_str_pre file
    233210    nest_str = "  " * nest
    234211
    235     # セマフォの生成
     212    # セマフォの生成
    236213    if @b_noClientSemaphore == false then
    237214      file.print <<EOT
     
    243220    end
    244221
    245     # クライアント側チャンネル (tMessageBufferCEP)の生成
    246     # チャンネルはå¿
    247 ãšãƒªãƒ¼ã‚¸ãƒ§ãƒ³ä¸‹ã«ã‚るので、 '::' でつなぐ (でなければ、ルートリージョンにないかチェックがå¿
    248 è¦ï¼‰
     222    # クライアント側チャンネル (tMessageBufferCEP)の生成
     223    # チャンネルは必ずリージョン下にあるので、 '::' でつなぐ (でなければ、ルートリージョンにないかチェックが必要)
    249224
    250225    file.print <<EOT
     
    263238EOT
    264239
    265     # セマフォの結合文
     240    # セマフォの結合文
    266241    if @b_noClientSemaphore == false then
    267242      semaphore = "#{nest_str}    cLockChannel = #{@serverChannelCell}_Semaphore.eSemaphore;\n"
     
    270245    end
    271246
    272     ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     247    ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    273248    cell = @next_cell
    274     # アロケータの指定があるか?
     249    # アロケータの指定があるか?
    275250    if cell.get_allocator_list.length > 0 then
    276251
     
    288263
    289264        file.print delim
    290         delim = ",\n"        # 最終行には出さない
    291 
    292         if subsc then        # é
    293 åˆ—添数
     265        delim = ",\n"        # 最終行には出さない
     266
     267        if subsc then        # 配列添数
    294268          subsc_str = '[#{subsc}]'
    295269        else
     
    297271        end
    298272
    299         eport = "eThroughEntry" #RPCの受け口名に変更
     273        eport = "eThroughEntry" #RPCの受け口名に変更
    300274        file.print nest_str
    301275        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
     
    316290#{clientErrorHandler_str}#{semaphore}#{nest_str}  };
    317291EOT
    318     ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     292    ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    319293    @start_region.gen_region_str_post file
    320294    file.print "\n\n"
    321295
    322     ##### サーバー側のセルの生成 #####
     296    ##### サーバー側のセルの生成 #####
    323297    nest = @end_region.gen_region_str_pre file
    324298    nest_str = "  " * nest
     
    336310    end
    337311
    338     # サーバー側チャンネル (tMessageBufferCEP)
     312    # サーバー側チャンネル (tMessageBufferCEP)
    339313    if @PPAllocatorSize then
    340314      alloc_cell =<<EOT
     
    358332EOT
    359333
    360     # サーバー側TDR
     334    # サーバー側TDR
    361335    file.print <<EOT
    362336
     
    373347    end
    374348
    375     # サーバー側チャンネル (アンマーシャラ)
     349    # サーバー側チャンネル (アンマーシャラ)
    376350    file.print <<EOT
    377351#{alloc_cell}
     
    383357EOT
    384358
    385     # サーバー側タスクメイン
     359    # サーバー側タスクメイン
    386360    file.print <<EOT
    387361
     
    392366EOT
    393367
    394     # サーバー側タスク
     368    # サーバー側タスク
    395369    file.print <<EOT
    396370
     
    407381
    408382
    409   #=== プラグイン引数 noClientSemaphore のチェック
     383  #=== プラグイン引数 noClientSemaphore のチェック
    410384  def set_noClientSemaphore rhs
    411385    rhs = rhs.to_sym
     
    419393  end
    420394
    421   #=== プラグイン引数 semaphoreCelltype のチェック
     395  #=== プラグイン引数 semaphoreCelltype のチェック
    422396  def set_semaphoreCelltype rhs
    423397    @semaphoreCelltype = rhs.to_sym
     
    429403  end
    430404
    431   #=== NamespacePath を得る
    432   # 生成するセルの namespace path を生成する
     405  #=== NamespacePath を得る
     406  # 生成するセルの namespace path を生成する
    433407  def get_cell_namespace_path
    434408#    nsp = @region.get_namespace.get_namespace_path
Note: See TracChangeset for help on using the changeset viewer.