- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/OpaqueRPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r270 r321 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 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 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 # $Id : OpaqueRPCPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima$37 # $Id$ 53 38 #++ 54 39 55 # 以ä¸ãä»®å®ï¼å¶éäºé 56 ï¼ 57 # å¼ã³å 58 ãå¼ã³å 59 ã®ã¨ã³ãã£ã¢ã³ãchar, short, int_t, long_t, intptr_t ã®ãµã¤ãºãåã 60 # æ符å·ãç¡ç¬¦å·ã§ãµã¤ãºãåã 40 # 以下を仮定(制限事項) 41 # 呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ 42 # 有符号、無符号でサイズが同じ 61 43 62 44 require_tecsgen_lib "lib/GenOpaqueMarshaler.rb" … … 68 50 include GenParamCopy 69 51 70 # OpaqueRPCPlugin å°ç¨ã®ãªãã·ã§ã³ 71 OpaqueRPCPluginArgProc = RPCPluginArgProc.dup # è¤è£½ãä½ã£ã¦å 72 ãå¤æ´ããªãããã«ãã 52 # OpaqueRPCPlugin 専用のオプション 53 OpaqueRPCPluginArgProc = RPCPluginArgProc.dup # 複製を作って元を変更しないようにする 73 54 OpaqueRPCPluginArgProc[ "noClientSemaphore" ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs } 74 55 75 #=== RPCPlugin ã® initialize 76 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 77 § 56 #=== RPCPlugin の initialize 57 # 説明は ThroughPlugin (plugin.rb) を参照 78 58 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell ) 79 59 super … … 98 78 gen_marshaler_celltype 99 79 100 # ãã£ã³ãã« composite ã»ã«ã¿ã¤ãã®çæ101 # ããã§çæããã CDL ãã¡ã¤ã«ã¯ãtecsgen ãç´æ¥ import ããã®ã§ã¯ãªã102 # ã»ã«ã³ã¼ãã® CDL ãã import ããã80 # チャンネル composite セルタイプの生成 81 # ここで生成された CDL ファイルは、tecsgen が直接 import するのではなく 82 # セルコードの CDL から import される 103 83 104 84 f = CFile.open( @rpc_client_channel_celltype_file_name, "w" ) 105 # åãå 106 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 85 # 同じ内容を二度書く可能性あり (AppFile は不可) 107 86 108 87 f.print <<EOT … … 142 121 143 122 f = CFile.open( @rpc_server_channel_celltype_file_name, "w" ) 144 # åãå 145 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 123 # 同じ内容を二度書く可能性あり (AppFile は不可) 146 124 147 125 f.print <<EOT … … 173 151 end 174 152 175 #=== through cell ã³ã¼ããçæ153 #=== through cell コードを生成 176 154 # 177 155 # … … 180 158 gen_plugin_decl_code( file ) 181 159 182 # ã»ã«ãæ¢ã160 # セルを探す 183 161 # path =["::",@next_cell.get_name] # mikan namespace 184 162 # cell = Namespace.find( path ) … … 191 169 EOT 192 170 193 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####171 ##### クライアント側のセルの生成 ##### 194 172 nest = @start_region.gen_region_str_pre file 195 173 nest_str = " " * nest 196 174 197 # ã»ããã©ã®çæ175 # セマフォの生成 198 176 if @b_noClientSemaphore == false then 199 177 file.print <<EOT … … 206 184 end 207 185 208 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã« (TINET, Socket ãªã©)ã®çæ186 # クライアント側チャンネル (TINET, Socket など)の生成 209 187 file.print <<EOT 210 188 #{nest_str} // Client Side Channel … … 216 194 EOT 217 195 218 # ã»ããã©ã®çµåæ196 # セマフォの結合文 219 197 if @b_noClientSemaphore == false then 220 198 semaphore = "#{nest_str} cLockChannel = #{@serverChannelCell}_Semaphore.eSemaphore;\n" … … 223 201 end 224 202 225 ### ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã« (ãã¼ã·ã£ã©+TDR)ã®çæ###226 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼203 ### クライアント側チャンネル (マーシャラ+TDR)の生成 ### 204 # アロケータの指定があるか? 227 205 if cell.get_allocator_list.length > 0 then 228 206 … … 240 218 241 219 file.print delim 242 delim = ",\n" # æçµè¡ã«ã¯åºããªã 243 244 if subsc then # é 245 åæ·»æ° 220 delim = ",\n" # 最終行には出さない 221 222 if subsc then # 配列添数 246 223 subsc_str = '[#{subsc}]' 247 224 else … … 249 226 end 250 227 251 eport = "eThroughEntry" #RPC ã®åãå£åã«å¤æ´228 eport = "eThroughEntry" #RPCの受け口名に変更 252 229 file.print nest_str 253 230 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}" … … 269 246 270 247 EOT 271 ### END: ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã« (ãã¼ã·ã£ã©+TDR)ã®çæ###248 ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ### 272 249 273 250 @start_region.gen_region_str_post file 274 251 file.print "\n\n" 275 252 276 ##### ãµã¼ãã¼å´ã®ã»ã«ã®çæ#####253 ##### サーバー側のセルの生成 ##### 277 254 nest = @end_region.gen_region_str_pre file 278 255 nest_str = " " * nest … … 290 267 end 291 268 292 # ãµã¼ãã¼å´ãã£ã³ãã« (TINET, Socket ãªã©)269 # サーバー側チャンネル (TINET, Socket など) 293 270 file.print <<EOT 294 271 … … 299 276 EOT 300 277 301 # ãµã¼ãã¼å´ãã£ã³ãã« (ã¢ã³ãã¼ã·ã£ã©+TDR)278 # サーバー側チャンネル (アンマーシャラ+TDR) 302 279 file.print <<EOT 303 280 … … 309 286 EOT 310 287 311 # ãµã¼ãã¼å´ã¿ã¹ã¯ã¡ã¤ã³288 # サーバー側タスクメイン 312 289 file.print <<EOT 313 290 … … 318 295 EOT 319 296 320 # ãµã¼ãã¼å´ã¿ã¹ã¯297 # サーバー側タスク 321 298 file.print <<EOT 322 299 … … 332 309 end 333 310 334 #=== ãã©ã°ã¤ã³å¼æ° noClientSemaphore ã®ãã§ãã¯311 #=== プラグイン引数 noClientSemaphore のチェック 335 312 def set_noClientSemaphore rhs 336 313 rhs = rhs.to_sym -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.