OSDN Git Service

update libMiMic
[mimic/MiMicSDK.git] / lib / src / uip / NyLPC_cTcpSocket.h
diff --git a/lib/src/uip/NyLPC_cTcpSocket.h b/lib/src/uip/NyLPC_cTcpSocket.h
deleted file mode 100644 (file)
index 2f08609..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-/*********************************************************************************\r
- * PROJECT: MiMic\r
- * --------------------------------------------------------------------------------\r
- *\r
- * This file is part of MiMic\r
- * Copyright (C)2011 Ryo Iizuka\r
- *\r
- * MiMic is free software: you can redistribute it and/or modify\r
- * it under the terms of the GNU Lesser General Public License as published\r
- * by the Free Software Foundation, either version 3 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public License\r
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
- *\r
- * For further information please contact.\r
- *     http://nyatla.jp/\r
- *     <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
- *\r
- *********************************************************************************/\r
-#ifndef NYLPC_CTCPSOCKET_H_\r
-#define NYLPC_CTCPSOCKET_H_\r
-\r
-\r
-\r
-#include "NyLPC_uip.h"\r
-#include "NyLPC_os.h"\r
-#include "NyLPC_cIPv4Payload.h"\r
-#include "NyLPC_cBaseSocket.h"\r
-\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif /* __cplusplus */\r
-\r
-\r
-typedef struct NyLPC_TcTcpSocket NyLPC_TcTcpSocket_t;\r
-\r
-\r
-/**********************************************************************\r
- *\r
- * NyLPC_TTcpListenerSynInfo struct\r
- *\r
- **********************************************************************/\r
-\r
-\r
-struct NyLPC_TTcpSocketSynParam\r
-{\r
-       struct NyLPC_TIPv4Addr srcaddr;\r
-       NyLPC_TUInt16 rport;\r
-       NyLPC_TUInt16 mss;\r
-       NyLPC_TUInt32 rcv_nxt32;\r
-};\r
-\r
-\r
-/**********************************************************************\r
- *\r
- * NyLPC_TcTcpSocket_TxQItem struct\r
- *\r
- **********************************************************************/\r
-\r
-/**\r
- * TXキューの数。この値は8未満にしてください。\r
- */\r
-#define NyLPC_TcTcpSocket_NUMBER_OF_TXQ 4\r
-\r
-struct NyLPC_TcTcpSocket_TxQItem\r
-{\r
-       //最終更新時刻\r
-       NyLPC_TUInt32 tick_of_sent;\r
-       //このパケットのRTO(秒間隔)\r
-       NyLPC_TUInt32 rto32;\r
-       void* packet;\r
-       //パケットのACK番号。この番号を受信できれば、再送パケットは消去可能である。\r
-       NyLPC_TUInt32 ackno;\r
-};\r
-\r
-/**********************************************************************\r
- *\r
- * uip_conn struct\r
- *\r
- **********************************************************************/\r
-\r
-struct uip_conn\r
-{\r
-       struct NyLPC_TIPv4Addr        ripaddr;  /**< The IP address of the remote host. */\r
-       const struct NyLPC_TIPv4Addr* lipaddr;  /**< ローカルIP*/\r
-       NyLPC_TUInt16                lport;             /**< The local TCP port, in network byte order. */\r
-       NyLPC_TUInt16                rport;             /**< The local remote TCP port, in network byte order. */\r
-       NyLPC_TUInt32 rcv_nxt32;        /**< The sequence number that we expect to receive next. */\r
-       NyLPC_TUInt32 snd_nxt32;        /**< 送信用sqカウンター*/\r
-       NyLPC_TUInt16 peer_mss;     /**< PeerのMSS*/\r
-       NyLPC_TUInt16 default_mss;  /**< Peerの初期MMS*/\r
-       /**Peerのウインドウサイズ*/\r
-       NyLPC_TUInt16 peer_win;\r
-       NyLPC_TUInt16 _padding;\r
-       /**現在ソケットのRTO*/\r
-       NyLPC_TUInt32 current_rto32;\r
-};\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-/**********************************************************************\r
- *\r
- * NyLPC_TcTcpSocket class\r
- *\r
- **********************************************************************/\r
-\r
-/**\r
- * uipサービスを使用したTCPソケットクラスです。\r
- * この関数は2つのタスクから呼び出されます。\r
- * [uipTask]  ->  [cTcpSocket] <- [Application]\r
- * ApplicationとuipTaskとの間での排他処理はインスタンスで制御されています。\r
- * Application側からのコールは内部でuipTaskとの間で排他処理を実行します。\r
- * Application側からのコールはリエントラントではありません。\r
- */\r
-\r
-struct NyLPC_TcTcpSocket\r
-{\r
-       /** Base class*/\r
-       NyLPC_TcBaseSocket_t _super;\r
-       //この変数は、uipタスクの実行する関数のみが変更する。\r
-       struct uip_conn uip_connr;\r
-       NyLPC_TcFifoBuffer_t rxbuf;\r
-       struct{\r
-               NyLPC_TUInt8 rp;\r
-               NyLPC_TUInt8 wp;\r
-               //送信キュー\r
-               struct NyLPC_TcTcpSocket_TxQItem txq[NyLPC_TcTcpSocket_NUMBER_OF_TXQ];\r
-       }txbuf;\r
-       volatile NyLPC_TUInt8 tcpstateflags; /**< TCP state and flags. */\r
-};\r
-\r
-\r
-#define NyLPC_cTcpSocket_getPeerAddr(i_inst) (&((i_inst)->uip_connr.ripaddr))\r
-#define NyLPC_cTcpSocket_getPeerPort(i_inst) (((i_inst)->uip_connr.rport))\r
-\r
-/**\r
- * 初期化関数です。\r
- * uipserviceは初期化済である必要があります。\r
- * また、暫定条件として、サービスが停止中である必要もあります。\r
- * @param i_recv_buf\r
- * 受信バッファを指定します。
- */\r
-NyLPC_TBool NyLPC_cTcpSocket_initialize(NyLPC_TcTcpSocket_t* i_inst,void* i_rbuf,NyLPC_TUInt16 i_rbuf_len);\r
-/**\r
- * 終期化関数です。\r
- * uipserviceは初期化済である必要があります。\r
- * また、暫定条件として、サービスが停止中である必要もあります。\r
- */\r
-void NyLPC_cTcpSocket_finalize(NyLPC_TcTcpSocket_t* i_inst);\r
-\r
-NyLPC_TBool NyLPC_cTcpSocket_accept(NyLPC_TcTcpSocket_t* i_inst,NyLPC_TUInt32 i_wait_in_msec);\r
-/**\r
- * @return\r
- *  1 - 以上:受信に成功した。\r
- *  0 - タイムアウト\r
- * -1 - ソケットがクローズしている\r
- */\r
-NyLPC_TInt32 NyLPC_cTcpSocket_precv(NyLPC_TcTcpSocket_t* i_inst,const void** o_buf_ptr,NyLPC_TUInt32 i_wait_msec);\r
-void NyLPC_cTcpSocket_pseek(NyLPC_TcTcpSocket_t* i_inst,NyLPC_TUInt16 i_seek);\r
-/**\r
- * 送信未達は保障されません。\r
- * エラーを検出したら、基本的にはソケットをクローズしてください。\r
- * @param i_wait_msec\r
- * 送信失敗までの待ち時間を指定します。現在は、\r
- * RTT推定ができないため、TCPの再送を考慮して、最低でも10秒(10000)程度を指定してください。\r
- * @return\r
- * 送信したバイト数を返します。エラーならば0未満の数を返します。\r
- *\r
- */\r
-NyLPC_TInt32 NyLPC_cTcpSocket_send(NyLPC_TcTcpSocket_t* i_inst,const void* i_buf_ptr,NyLPC_TInt32 i_len,NyLPC_TUInt32 i_wait_in_msec);\r
-void NyLPC_cTcpSocket_close(NyLPC_TcTcpSocket_t* i_inst,NyLPC_TUInt32 i_wait_in_msec);\r
-\r
-\r
-/**\r
- * NyLPC_cTcpSocket_psendで送信するための送信バッファ準備します。\r
- * @param i_hint\r
- * 送信を希望するデータサイズを指定します。\r
- * アロケータは出来る限り希望に沿ってメモリを返します。\r
- * @param o_buf_size\r
- * 取得できたバッファサイズを返します。\r
- * @return\r
- * 成功した場合、送信バッファを返します。\r
- * アプリケーションは、可能な限り速やかにデータを書き込んで、NyLPC_cTcpSocket_psendをコールしてください。\r
- * @note\r
- * Optionフィールドを持つパケットを送信する場合は、オプションデータサイズの合計をデータサイズに指定して、payloadwriterで調整すること。\r
- */\r
-void* NyLPC_cTcpSocket_allocSendBuf(NyLPC_TcTcpSocket_t* i_inst,NyLPC_TUInt16 i_hint,NyLPC_TUInt16* o_buf_size,NyLPC_TUInt32 i_wait_in_msec);\r
-\r
-/**\r
- * NyLPC_cTcpSocket_allocSendBufで確保したメモリを開放します。\r
- */\r
-void NyLPC_cTcpSocket_releaseSendBuf(NyLPC_TcTcpSocket_t* i_inst,void* i_buf_ptr);\r
-\r
-/**\r
- * 事前にAllocしたTxパケットを送信します。\r
- * このAPIはゼロコピー送信をサポートするためのものです。\r
- * @param i_buf_ptr\r
- * allocSendBufで取得したメモリを指定します。\r
- * @return\r
- * 失敗した場合、メモリは開放されません。\r
- */\r
-NyLPC_TBool NyLPC_cTcpSocket_psend(NyLPC_TcTcpSocket_t* i_inst,void* i_buf_ptr,int i_len,NyLPC_TUInt32 i_wait_in_msec);\r
-\r
-/**\r
- * TCPソケットをクライアントとしてサーバへ接続します。\r
- */\r
-NyLPC_TBool NyLPC_cTcpSocket_connect(NyLPC_TcTcpSocket_t* i_inst,const struct NyLPC_TIPv4Addr* i_addr,NyLPC_TUInt16 i_peer_port,NyLPC_TUInt32 i_wait_in_msec);\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif /* __cplusplus */\r
-\r
-#endif /* NYLPC_CTCPSOCKET_H_ */\r