VSF Documented
vsf_socket_win.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_SOCKET_WIN_H__
19#define __VSF_SOCKET_WIN_H__
20
21/*============================ INCLUDES ======================================*/
22
24
25#if VSF_USE_TCPIP == ENABLED && defined(__WIN__) && VSF_TCPIP_USE_WINSOCK == ENABLED
26
28#include "hal/arch/vsf_arch.h"
29#include "kernel/vsf_kernel.h"
30
31#if defined(__VSF_SOCKET_WIN_CLASS_IMPLEMENT)
32# undef __VSF_SOCKET_WIN_CLASS_IMPLEMENT
33# define __VSF_CLASS_IMPLEMENT__
34#endif
35
36#include "utilities/ooc_class.h"
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42/*============================ MACROS ========================================*/
43/*============================ MACROFIED FUNCTIONS ===========================*/
44/*============================ TYPES =========================================*/
45
46typedef enum vk_socket_win_request_t {
47 VSF_SOCKET_WIN_BIND,
48 VSF_SOCKET_WIN_LISTEN,
49 VSF_SOCKET_WIN_CONNECT,
50 VSF_SOCKET_WIN_ACCEPT,
51 VSF_SOCKET_WIN_SEND,
52 VSF_SOCKET_WIN_RECV,
53 VSF_SOCKET_WIN_CLOSE,
54} vk_socket_win_request_t;
55
56vsf_class(vk_socket_win_t) {
57 public_member(
58 implement(vk_socket_t)
59 )
60 private_member(
61 bool is_inited;
62
63 int family;
64 int protocol;
66
67 struct {
68 vsf_arch_irq_thread_t irq_thread;
69 vsf_arch_irq_request_t irq_request;
70 bool is_busy;
71 bool is_to_exit;
72
73 vk_socket_win_request_t request;
74
75 union {
76 struct {
77 const vk_socket_addr_t *addr;
78 } bind;
79 struct {
80 int backlog;
81 } listen;
82 struct {
83 const vk_socket_addr_t *remote_addr;
84 } connect;
85 struct {
86 vk_socket_addr_t *remote_addr;
87 } accept;
88 struct {
89 void *buf;
90 size_t len;
91 int flags;
92 const vk_socket_addr_t *remote_addr;
93 } send;
94 } args;
95
96 int ret;
97 vsf_eda_t *eda;
98 } tx;
99
100 struct {
101 vsf_arch_irq_thread_t irq_thread;
102 vsf_arch_irq_request_t irq_request;
103 bool is_busy;
104 bool is_to_exit;
105
106 vk_socket_win_request_t request;
107
108 union {
109 struct {
110 void *buf;
111 size_t len;
112 int flags;
113 const vk_socket_addr_t *remote_addr;
114 } recv;
115 } args;
116
117 int ret;
118 vsf_eda_t *eda;
119 } rx;
120 )
121};
122
123/*============================ INCLUDES ======================================*/
124/*============================ GLOBAL VARIABLES ==============================*/
125
127
128/*============================ PROTOTYPES ====================================*/
129
130extern vsf_err_t vk_socket_win_init(void);
131extern vsf_err_t vk_socket_win_fini(void);
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif // VSF_USE_TCPIP
138#endif // __VSF_NETDRV_H__
vsf_err_t
Definition __type.h:42
int_fast8_t intalu_t
Definition type.h:89
Definition vsf_socket.h:77
Definition vsf_socket.h:100
Definition linux_generic.h:104
Definition linux_generic.h:122
Definition vsf_eda.h:766
#define vsf_class(__name)
Definition ooc_class.h:48
#define listen
Definition socket.h:100
#define accept
Definition socket.h:96
#define socket
Definition socket.h:108
#define connect
Definition socket.h:99
#define recv
Definition socket.h:101
#define bind
Definition socket.h:98
#define send
Definition socket.h:104
Definition vsf_socket.h:72
vsf_err_t vk_socket_win_fini(void)
Definition vsf_socket_win.c:172
vsf_err_t vk_socket_win_init(void)
Definition vsf_socket_win.c:141
const vk_socket_op_t vk_socket_win_op
Definition vsf_socket_win.c:78