Document of c-modernization-kit (porter) 1.0.0
Loading...
Searching...
No Matches
packet.h
Go to the documentation of this file.
1
13
14#ifndef PACKET_H
15#define PACKET_H
16
17#include <stddef.h>
18#include <stdint.h>
19
20#include <porter_type.h>
21
23#define PACKET_HEADER_SIZE ((size_t)offsetof(PotrPacket, payload))
24
30typedef struct
31{
32 int64_t service_id;
34 uint32_t session_id;
37
38#ifdef __cplusplus
39extern "C"
40{
41#endif /* __cplusplus */
42
43 extern int packet_build_nack(PotrPacket *packet,
44 const PotrPacketSessionHdr *shdr,
45 uint32_t nack_num);
46 extern int packet_build_ping(PotrPacket *packet,
47 const PotrPacketSessionHdr *shdr,
48 uint32_t seq_num,
49 uint32_t ack_num);
50 extern int packet_build_reject(PotrPacket *packet,
51 const PotrPacketSessionHdr *shdr,
52 uint32_t seq_num);
53 extern int packet_build_fin(PotrPacket *packet,
54 const PotrPacketSessionHdr *shdr);
55 extern int packet_build_packed(PotrPacket *out,
56 const PotrPacketSessionHdr *shdr,
57 uint32_t seq_num,
58 const void *packed_payload,
59 size_t payload_len);
60 extern int packet_unpack_next(const PotrPacket *container,
61 size_t *offset,
62 PotrPacket *elem_out);
63 extern int packet_parse(PotrPacket *packet, const void *buf, size_t buf_len);
64 extern size_t packet_wire_size(const PotrPacket *packet);
65
66#ifdef __cplusplus
67}
68#endif /* __cplusplus */
69
70#endif /* PACKET_H */
int packet_build_fin(PotrPacket *packet, const PotrPacketSessionHdr *shdr)
正常終了通知 (FIN) パケットを構築します。
Definition packet.c:163
int packet_build_packed(PotrPacket *out, const PotrPacketSessionHdr *shdr, uint32_t seq_num, const void *packed_payload, size_t payload_len)
データパケット (パックコンテナ) を構築します。
Definition packet.c:200
int packet_build_ping(PotrPacket *packet, const PotrPacketSessionHdr *shdr, uint32_t seq_num, uint32_t ack_num)
PING パケットを構築します。
Definition packet.c:99
int packet_parse(PotrPacket *packet, const void *buf, size_t buf_len)
受信バイト列をパケット構造体に解析します。
Definition packet.c:299
int packet_build_nack(PotrPacket *packet, const PotrPacketSessionHdr *shdr, uint32_t nack_num)
NACK パケットを構築します。
Definition packet.c:62
int packet_build_reject(PotrPacket *packet, const PotrPacketSessionHdr *shdr, uint32_t seq_num)
再送不能通知 (REJECT) パケットを構築します。
Definition packet.c:132
int packet_unpack_next(const PotrPacket *container, size_t *offset, PotrPacket *elem_out)
データパケットから次のペイロードエレメントを取り出します。
Definition packet.c:238
size_t packet_wire_size(const PotrPacket *packet)
パケットのヘッダー + ペイロードの合計バイト数を返します。
Definition packet.c:347
通信ライブラリの型定義ファイル。
パケットに付与するセッション識別情報。
Definition packet.h:31
int32_t session_tv_nsec
セッション開始時刻 ナノ秒部。
Definition packet.h:35
int64_t service_id
サービス識別子。
Definition packet.h:32
uint32_t session_id
セッション識別子 (乱数)。
Definition packet.h:34
int64_t session_tv_sec
セッション開始時刻 秒部。
Definition packet.h:33
ネットワーク送受信用パケット構造体。