Document of c-modernization-kit (porter) 1.0.0

Loading...
Searching...
No Matches
window.h
Go to the documentation of this file.
1
13
14#ifndef WINDOW_H
15#define WINDOW_H
16
17#include <stdint.h>
18
19#include <porter_const.h>
20#include <porter_type.h>
21
29 typedef struct
30{
31 PotrPacket *packets;
32 uint8_t *valid;
33 uint8_t *payload_pool;
34 uint32_t base_seq;
35 uint32_t next_seq;
36 uint16_t window_size;
37 uint16_t max_payload;
38 uint32_t _pad;
39} PotrWindow;
40
41#ifdef __cplusplus
42 extern "C"
43{
44#endif /* __cplusplus */
45
46 extern int window_init(PotrWindow *win, uint32_t initial_seq,
47 uint16_t window_size, uint16_t max_payload);
48 extern void window_destroy(PotrWindow *win);
49 extern int window_send_push(PotrWindow *win, const PotrPacket *packet);
50 extern int window_send_full(const PotrWindow *win);
51 extern int window_send_get(const PotrWindow *win, uint32_t seq_num,
52 PotrPacket *packet_out);
53 extern int window_recv_push(PotrWindow *win, const PotrPacket *packet);
54 extern int window_recv_pop(PotrWindow *win, PotrPacket *packet);
55 extern int window_recv_needs_nack(const PotrWindow *win, uint32_t *nack_num);
56 extern void window_recv_skip(PotrWindow *win, uint32_t seq_num);
57 extern void window_recv_reset(PotrWindow *win, uint32_t new_base_seq);
58
59#ifdef __cplusplus
60}
61#endif /* __cplusplus */
62
63#endif /* WINDOW_H */
porter_const.h
通信ライブラリの定数ファイル。
porter_type.h
通信ライブラリの型定義ファイル。
PotrPacket
ネットワーク送受信用パケット構造体。
Definition porter_type.h:216
PotrWindow
スライディングウィンドウ管理構造体。
Definition window.h:30
PotrWindow::base_seq
uint32_t base_seq
ウィンドウ先頭の通番。
Definition window.h:34
PotrWindow::_pad
uint32_t _pad
パディング (構造体サイズを 8 バイト境界に揃える)。
Definition window.h:38
PotrWindow::max_payload
uint16_t max_payload
エントリごとのペイロード最大長 (バイト)。
Definition window.h:37
PotrWindow::next_seq
uint32_t next_seq
送信側: 次に割り当てる通番。受信側: 次に期待する通番。
Definition window.h:35
PotrWindow::payload_pool
uint8_t * payload_pool
ペイロードプール (動的確保。window_size × max_payload バイト)。
Definition window.h:33
PotrWindow::valid
uint8_t * valid
バッファ有効フラグ配列 (動的確保。window_size バイト)。
Definition window.h:32
PotrWindow::packets
PotrPacket * packets
パケットバッファ (動的確保。window_size 要素)。
Definition window.h:31
PotrWindow::window_size
uint16_t window_size
ウィンドウサイズ (パケット数)。
Definition window.h:36
window_recv_skip
void window_recv_skip(PotrWindow *win, uint32_t seq_num)
受信ウィンドウで指定通番をスキップして次の通番へ前進させます。
Definition window.c:313
window_send_push
int window_send_push(PotrWindow *win, const PotrPacket *packet)
送信ウィンドウにパケットを積みます。
Definition window.c:141
window_init
int window_init(PotrWindow *win, uint32_t initial_seq, uint16_t window_size, uint16_t max_payload)
ウィンドウを初期化します。
Definition window.c:42
window_destroy
void window_destroy(PotrWindow *win)
ウィンドウが保持する動的確保バッファを解放します。
Definition window.c:110
window_recv_needs_nack
int window_recv_needs_nack(const PotrWindow *win, uint32_t *nack_num)
受信ウィンドウで欠番が発生しているか確認し、NACK 番号を返します。
Definition window.c:336
window_recv_reset
void window_recv_reset(PotrWindow *win, uint32_t new_base_seq)
受信ウィンドウを新しい基点通番でリセットします。
Definition window.c:378
window_send_get
int window_send_get(const PotrWindow *win, uint32_t seq_num, PotrPacket *packet_out)
送信ウィンドウから指定通番のパケットを取得します (再送用)。
Definition window.c:202
window_recv_pop
int window_recv_pop(PotrWindow *win, PotrPacket *packet)
受信ウィンドウから順序整列済みパケットを取り出します。
Definition window.c:279
window_send_full
int window_send_full(const PotrWindow *win)
送信ウィンドウが満杯かどうかを返します。
Definition window.c:184
window_recv_push
int window_recv_push(PotrWindow *win, const PotrPacket *packet)
受信ウィンドウにパケットを格納します。
Definition window.c:242