libIEC61850  0.8.2
Open-source IEC 61850 MMS/GOOSE server and client library
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
hal_socket.h
Go to the documentation of this file.
1 /*
2  * socket_hal.h
3  *
4  * Copyright 2013, 2014 Michael Zillgith
5  *
6  * This file is part of libIEC61850.
7  *
8  * libIEC61850 is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * libIEC61850 is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
20  *
21  * See COPYING file for the complete license text.
22  */
23 
24 #ifndef SOCKET_HAL_H_
25 #define SOCKET_HAL_H_
26 
27 #include <stdint.h>
28 #include <stdbool.h>
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
49 typedef struct sServerSocket* ServerSocket;
50 
52 typedef struct sSocket* Socket;
53 
55 typedef struct sHandleSet* HandleSet;
56 
57 HandleSet
58 Handleset_new(void);
59 
60 void
61 Handleset_addSocket(HandleSet self, const Socket sock);
62 
63 int
64 Handleset_waitReady(HandleSet self, unsigned int timeoutMs);
65 
66 void
67 Handleset_destroy(HandleSet self);
68 
79 ServerSocket
80 TcpServerSocket_create(const char* address, int port);
81 
82 
83 void
84 ServerSocket_listen(ServerSocket self);
85 
100 Socket
101 ServerSocket_accept(ServerSocket self);
102 
103 
113 void
114 ServerSocket_setBacklog(ServerSocket self, int backlog);
115 
125 void
126 ServerSocket_destroy(ServerSocket self);
127 
135 Socket
136 TcpSocket_create(void);
137 
144 void
145 Socket_setConnectTimeout(Socket self, uint32_t timeoutInMs);
146 
165 bool
166 Socket_connect(Socket self, const char* address, int port);
167 
184 int
185 Socket_read(Socket self, uint8_t* buf, int size);
186 
196 int
197 Socket_write(Socket self, uint8_t* buf, int size);
198 
210 char*
211 Socket_getPeerAddress(Socket self);
212 
223 void
224 Socket_destroy(Socket self);
225 
230 #ifdef __cplusplus
231 }
232 #endif
233 
234 #endif /* SOCKET_HAL_H_ */