- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecs/rpc/tSocketClient.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Copyright (C) 2008-2013 by TOPPERS Project 6 6 *-- 7 * ä¸è¨èä½æ¨©è 8 ã¯ï¼ä»¥ä¸ã®(1)(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 9 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 10 * å¤ã»åé 11 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 12 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 13 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 14 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 15 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 16 * ç¨ã§ããå½¢ã§åé 17 å¸ããå ´åã«ã¯ï¼åé 18 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 19 * è 20 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 21 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 22 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 23 * ç¨ã§ããªãå½¢ã§åé 24 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 25 * ã¨ï¼ 26 * (a) åé 27 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 28 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 29 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 30 * (b) åé 31 å¸ã®å½¢æ 32 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 33 * å ±åãããã¨ï¼ 34 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 35 * 害ãããï¼ä¸è¨èä½æ¨©è 36 ããã³TOPPERSããã¸ã§ã¯ããå 37 責ãããã¨ï¼ 38 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 39 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ãã 41 * å 42 責ãããã¨ï¼ 7 * 上記著作権者は,以下の(1)(4)の条件を満たす場合に限り,本ソフトウェ 8 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 9 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 10 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 11 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 12 * スコード中に含まれていること. 13 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 14 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 15 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 16 * の無保証規定を掲載すること. 17 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 18 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 19 * と. 20 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 21 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 22 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 23 * 報告すること. 24 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 25 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 26 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 27 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 28 * 免責すること. 43 29 * 44 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 45 ã 46 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 47 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 48 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 49 * ã®è²¬ä»»ãè² ããªãï¼ 30 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 * の責任を負わない. 50 35 * 51 36 * $Id$ … … 74 59 75 60 #ifndef E_OK 76 #define E_OK 0 /* æ£å¸¸çµäº*/77 #define E_ID (-18) /* ä¸æ£IDçªå·*/61 #define E_OK 0 /* 正常終了 */ 62 #define E_ID (-18) /* 不正ID番号 */ 78 63 #endif 79 64 80 /* åãå£é¢æ°#_TEPF_# */65 /* 受け口関数 #_TEPF_# */ 81 66 /* #[<ENTRY_PORT>]# eC0 82 67 * entry port: eC0 … … 104 89 } 105 90 106 /* ããã«å¦çæ¬ä½ãè¨è¿°ãã¾ã*/107 // mikan BUG buf ã®ä½ç½®ãæ´æ°ãã¦ããªã91 /* ここに処理本体を記述します */ 92 // mikan BUG buf の位置を更新していない 108 93 while(size>0){ 109 94 if((sz=write( VAR_sd, buf, (ssize_t)size )) < 0 ){ … … 140 125 } 141 126 142 /* ããã«å¦çæ¬ä½ãè¨è¿°ãã¾ã*/143 /* write ã¯ãããã¡ãªã³ã°ãªããªã®ã§ flush ããªã*/127 /* ここに処理本体を記述します */ 128 /* write はバッファリングなしなので flush しない */ 144 129 145 130 return(ercd); … … 164 149 } 165 150 166 /* ããã«å¦çæ¬ä½ãè¨è¿°ãã¾ã*/151 /* ここに処理本体を記述します */ 167 152 sz = read( VAR_sd, buf, (ssize_t)size ); 168 153 ercd = errno2ER( errno ); … … 178 163 } 179 164 #endif 180 /* mikan ä¸çºã§å 181 ¨ã¦èªããã¨ä»®å® */ 165 /* mikan 一発で全て読めると仮定 */ 182 166 if( sz >= 0 ) 183 167 ercd = sz; … … 203 187 } 204 188 205 /* ããã«å¦çæ¬ä½ãè¨è¿°ãã¾ã#_TEFB_# */189 /* ここに処理本体を記述します #_TEFB_# */ 206 190 207 191 return(ercd); … … 225 209 } 226 210 227 /* ããã«å¦çæ¬ä½ãè¨è¿°ãã¾ã*/211 /* ここに処理本体を記述します */ 228 212 229 213 return(ercd); … … 256 240 } 257 241 258 /* ããã«å¦çæ¬ä½ãè¨è¿°ãã¾ã#_TEFB_# */242 /* ここに処理本体を記述します #_TEFB_# */ 259 243 soc=socket(AF_INET, SOCK_STREAM, 0); 260 244 if(soc<0){ … … 265 249 266 250 #if 0 267 /* ãã³ãããã¯ã«å¤æ´*/251 /* ノンブロックに変更 */ 268 252 int flag=fcntl(soc, F_GETFL, 0); 269 253 if(flag<0) perror("fcntl(GET) error"); … … 286 270 if(errno!=EINPROGRESS) 287 271 perror("connect error"); 288 //EINPROGRESS: ã³ãã¯ã·ã§ã³è¦æ±ã¯å§ã¾ã£ãããã¾ã å®äºãã¦ããªã272 //EINPROGRESS:コネクション要求は始まったが、まだ完了していない 289 273 290 274 fd_set rmask,wmask;FD_ZERO(&rmask);FD_SET(soc,&rmask);wmask=rmask; 291 struct timeval tv={ ã¿ã¤ã ã¢ã¦ãæé[ç§],[μç§] };275 struct timeval tv={ タイムアウト時間[秒],[μ秒] }; 292 276 int rc=select(soc+1, &rmask, &wmask, NULL, &tv); 293 277 if(rc<0) perror("connect-select error"); 294 if(rc==0){ ã¿ã¤ã ã¢ã¦ãå¦ç}295 if(rc==2){ // èªã¿æ¸ããåæã«åºæ¥ãå ´å278 if(rc==0){ タイムアウト処理 } 279 if(rc==2){ //読み書きが同時に出来る場合 296 280 #if Solaris 297 281 int val; … … 303 287 if(getpeername(soc,(struct sockaddr*)&name,&len)>=0) { 304 288 #endif 305 // æ¢ã«ãã¼ã¿ãæ¥ã¦ãã289 // 既にデータが来ている 306 290 }else{ 307 // ã³ãã¯ã失æ291 // コネクト失敗 308 292 } 309 293 } 310 294 } 311 //ãã©ã°ãå 312 ã«æ»ã 295 //フラグを元に戻す 313 296 if(fcntl(soc, F_SETFL, flag)<0) perror("fcntl(END) error"); 314 297 #endif /* 0 */ … … 357 340 } 358 341 359 /* ããã«å¦çæ¬ä½ãè¨è¿°ãã¾ã#_TEFB_# */360 close( VAR_sd ); /* mikan ã¨ã©ã¼å¦ç*/342 /* ここに処理本体を記述します #_TEFB_# */ 343 close( VAR_sd ); /* mikan エラー処理 */ 361 344 362 345 return(ercd);
Note:
See TracChangeset
for help on using the changeset viewer.