ae2f_docs
Loading...
Searching...
No Matches
Inet.h
Go to the documentation of this file.
1/**
2 * @file Inet.h
3 * @author dalmurii
4 * @brief
5 * @copyright Copyright (c) 2025
6 *
7 */
8
9#ifndef ae2f_Inet_h
10#define ae2f_Inet_h
11
12#include "../Sys.h"
13#include "./WSock.h"
14
15#include "./Inet-WIN.h"
16#include "./Inet-POSIX.h"
17
18#define _ae2f_SysInetMkData
19 N_ae2f_Sys_WIN(ae2f_SysInetMkData_POSIX)
20 ae2f_Sys_WIN(ae2f_SysInetMkData_WIN)
21
22/**
23 * @typedef ae2f_SysInetMkData_t
24 * @brief Type for `ae2f_SysInetMk` as library constructor
25 * @see ae2f_SysInetMk
26 * @see ae2f_SysInetMkData_DEC
27 * */
28typedef _ae2f_SysInetMkData ae2f_SysInetMkData;
29
30/**
31 * @enum ae2f_eSysInetMk_WIN
32 * */
33typedef enum {
34 /**
35 * @brief Operation succeed
36 * */
38
39 /**
40 * @brief System is not ready.
41 * @see https://learn.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2
42 * */
43 ae2f_SysInetMk_NREADY ae2f_Sys_WIN(= WSASYSNOTREADY),
44
45 /**
46 * @brief System does not support this version. <ae2f_SysInetMk::prm_VerReq>
47 * @see ae2f_SysInetMk
48 * @see https://learn.microsoft.com/en-us/windows/desktop/WinSock/windows-sockets-error-codes-2
49 * */
50 ae2f_SysInetMk_NSUPPORT ae2f_Sys_WIN(= WSAVERNOTSUPPORTED),
51
52 /**
53 * @brief Blocked by Windows Sockets 1.1 operations.
54 * @see https://learn.microsoft.com/en-us/windows/desktop/WinSock/windows-sockets-error-codes-2
55 * */
56 ae2f_SysInetMk_BLKED ae2f_Sys_WIN(= WSAEINPROGRESS),
57
58 /**
59 * @brief Exceeded Socket task limit.
60 * @see https://learn.microsoft.com/en-us/windows/desktop/WinSock/windows-sockets-error-codes-2
61 * */
62 ae2f_SysInetMk_LMT ae2f_Sys_WIN(= WSAEPROCLIM),
63
64 /**
65 * @brief Invalid pointer. <ae2f_SysInetMk::pret_WSAData>
66 * @see ae2f_SysInetMk
67 * @see https://learn.microsoft.com/en-us/windows/desktop/WinSock/windows-sockets-error-codes-2
68 * */
69 ae2f_SysInetMk_PTRINVAL ae2f_Sys_WIN(= WSAEFAULT)
70
71
72} ae2f_eSysInetMk;
73
74typedef enum {
75 ae2f_SysInetDel_GOOD = 0,
76 ae2f_SysInetDel_NINIT ae2f_Sys_WIN(= WSANOTINITIALISED),
77 /**
78 * @brief Network is down.
79 * @see https://learn.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2
80 * */
81 ae2f_SysInetDel_NETDOWN ae2f_Sys_WIN(= WSAENETDOWN),
82
83
84 /**
85 * @brief Blocked by Windows Sockets 1.1 operations.
86 * @see https://learn.microsoft.com/en-us/windows/desktop/WinSock/windows-sockets-error-codes-2
87 * */
88 ae2f_SysInetDel_BLKED ae2f_Sys_WIN(= WSAEINPROGRESS)
89} ae2f_eSysInetDel;
90
91/**
92 * @def ae2f_SysInetMkData_DEC
93 * @brief Optionally declares a variable.
94 * @tparam prm_vname A name of the variable declared.
95 * @see ae2f_SysInetMk
96 * */
97#define ae2f_SysInetMkData_DEC(prm_vname)
98 ae2f_Sys_WIN(ae2f_SysInetMkData_DEC_WIN(prm_vname))
100
101/**
102 * @def ae2f_SysInetMk(prm_VerReq, pret_WSAData)
103 * @brief
104 * Wrapper of WSAStartup. \n
105 * Does nothing on POSIX. \n
106 * See ae2f_SysInetDel for cleanup.
107 *
108 * @details
109 * You would be able to use POSIX inet functions(sockets) after this.
110 *
111 * @returns ae2f_eSysInetMk
112 *
113 * @param prm_VerReq <prm> \n
114 * Type: const WORD \n
115 * Brief: Required version of socket library. \n
116 * See:
117 *
118 * @param[out] pret_WSAData <opt> <ptr> \n
119 * Type: ae2f_SysInetMkData_t* \n
120 * Brief: Output pointer for winsocket data. \n
121 *
122 * @see ae2f_SysInetDel
123 *
124 * */
125#define ae2f_SysInetMk(prm_VerReq, pret_WSAData)
126 ae2f_Sys_WIN(ae2f_SysInetMk_WIN(prm_VerReq, pret_WSAData))
127 N_ae2f_Sys_WIN(ae2f_SysInetMk_POSIX(prm_VerReq, pret_WSAData))
128
129/**
130 * @def ae2f_SysInetDel
131 * @brief Wrapper of WSACleanup \n
132 * Cleanup library initialised by ae2f_SysInetMk.
133 *
134 * @returns ae2f_eSysInetDel
135 *
136 * @see ae2f_SysInetMk
137 * */
138#define ae2f_SysInetDel()
139 ae2f_Sys_WIN(ae2f_SysInetDel_WIN())
141
142
143#endif
#define ae2f_SysInetDel_POSIX()
Dummy library release function.
Definition Inet-POSIX.h:39
#define ae2f_SysInetMk_POSIX(a, b)
Dummy library startup code. (Unused).
Definition Inet-POSIX.h:33
#define ae2f_SysInetMkData_DEC_POSIX(a)
Dummy ae2f_SysInetMkData_POSIX initialiser.
Definition Inet-POSIX.h:27
@ ae2f_SysInetMk_GOOD
Operation succeed.
Definition Inet.h:37
#define _ae2f_SysInetMkData
Definition Inet.h:18
#define ae2f_MAC(a)
A hint for creating a macro from void-returning function.
Definition Macro.h:17
#define ae2f_Sys_WIN
System does not support this version. <ae2f_SysInetMk::prm_VerReq>.
Definition Sys.h:18
#define N_ae2f_Sys_WIN
Mutex is not owned by this thread.
Definition Sys.h:55
#define ae2f_SysWSock
Definition WSock.h:17