File: Socket.hx

package info (click to toggle)
haxe 1%3A3.2.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 23,464 kB
  • ctags: 9,612
  • sloc: ml: 83,200; ansic: 1,724; makefile: 473; java: 349; cs: 314; python: 250; sh: 43; cpp: 39; xml: 25
file content (381 lines) | stat: -rw-r--r-- 13,157 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
/*
 * Copyright (C)2005-2012 Haxe Foundation
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 */
package python.lib.net;

import haxe.io.BytesData;
import python.Tuple;

/**
    A TCP socket class : allow you to both connect to a given server and exchange messages or start your own server and wait for connections.
**/

@:pythonImport("socket", "socket")
extern class Socket {

    static var AF_APPLETALK:Int;
    static var AF_ASH:Int;
    static var AF_ATMPVC:Int;
    static var AF_ATMSVC:Int;
    static var AF_AX25:Int;
    static var AF_BLUETOOTH:Int;
    static var AF_BRIDGE:Int;
    static var AF_CAN:Int;
    static var AF_ECONET:Int;
    static var AF_INET:Int;
    static var AF_INET6:Int;
    static var AF_IPX:Int;
    static var AF_IRDA:Int;
    static var AF_KEY:Int;
    static var AF_LLC:Int;
    static var AF_NETBEUI:Int;
    static var AF_NETLINK:Int;
    static var AF_NETROM:Int;
    static var AF_PACKET:Int;
    static var AF_PPPOX:Int;
    static var AF_RDS:Int;
    static var AF_ROSE:Int;
    static var AF_ROUTE:Int;
    static var AF_SECURITY:Int;
    static var AF_SNA:Int;
    static var AF_TIPC:Int;
    static var AF_UNIX:Int;
    static var AF_UNSPEC:Int;
    static var AF_WANPIPE:Int;
    static var AF_X25:Int;
    static var AI_ADDRCONFIG:Int;
    static var AI_ALL:Int;
    static var AI_CANONNAME:Int;
    static var AI_NUMERICHOST:Int;
    static var AI_NUMERICSERV:Int;
    static var AI_PASSIVE:Int;
    static var AI_V4MAPPED:Int;
    static var BDADDR_ANY:Int;
    static var BDADDR_LOCAL:Int;
    static var BTPROTO_HCI:Int;
    static var BTPROTO_L2CAP:Int;
    static var BTPROTO_RFCOMM:Int;
    static var BTPROTO_SCO:Int;
    static var CAN_EFF_FLAG:Int;
    static var CAN_EFF_MASK:Int;
    static var CAN_ERR_FLAG:Int;
    static var CAN_ERR_MASK:Int;
    static var CAN_RAW:Int;
    static var CAN_RAW_ERR_FILTER:Int;
    static var CAN_RAW_FILTER:Int;
    static var CAN_RAW_LOOPBACK:Int;
    static var CAN_RAW_RECV_OWN_MSGS:Int;
    static var CAN_RTR_FLAG:Int;
    static var CAN_SFF_MASK:Int;
    static var CAPI:Int;
    static var CMSG_LEN:Int;
    static var CMSG_SPACE:Int;
    static var EAGAIN:Int;
    static var EAI_ADDRFAMILY:Int;
    static var EAI_AGAIN:Int;
    static var EAI_BADFLAGS:Int;
    static var EAI_FAIL:Int;
    static var EAI_FAMILY:Int;
    static var EAI_MEMORY:Int;
    static var EAI_NODATA:Int;
    static var EAI_NONAME:Int;
    static var EAI_OVERFLOW:Int;
    static var EAI_SERVICE:Int;
    static var EAI_SOCKTYPE:Int;
    static var EAI_SYSTEM:Int;
    static var EBADF:Int;
    static var EWOULDBLOCK:Int;
    static var HCI_DATA_DIR:Int;
    static var HCI_FILTER:Int;
    static var HCI_TIME_STAMP:Int;
    static var INADDR_ALLHOSTS_GROUP:Int;
    static var INADDR_ANY:Int;
    static var INADDR_BROADCAST:Int;
    static var INADDR_LOOPBACK:Int;
    static var INADDR_MAX_LOCAL_GROUP:Int;
    static var INADDR_NONE:Int;
    static var INADDR_UNSPEC_GROUP:Int;
    static var IPPORT_RESERVED:Int;
    static var IPPORT_USERRESERVED:Int;
    static var IPPROTO_AH:Int;
    static var IPPROTO_DSTOPTS:Int;
    static var IPPROTO_EGP:Int;
    static var IPPROTO_ESP:Int;
    static var IPPROTO_FRAGMENT:Int;
    static var IPPROTO_GRE:Int;
    static var IPPROTO_HOPOPTS:Int;
    static var IPPROTO_ICMP:Int;
    static var IPPROTO_ICMPV6:Int;
    static var IPPROTO_IDP:Int;
    static var IPPROTO_IGMP:Int;
    static var IPPROTO_IP:Int;
    static var IPPROTO_IPIP:Int;
    static var IPPROTO_IPV6:Int;
    static var IPPROTO_NONE:Int;
    static var IPPROTO_PIM:Int;
    static var IPPROTO_PUP:Int;
    static var IPPROTO_RAW:Int;
    static var IPPROTO_ROUTING:Int;
    static var IPPROTO_RSVP:Int;
    static var IPPROTO_SCTP:Int;
    static var IPPROTO_TCP:Int;
    static var IPPROTO_TP:Int;
    static var IPPROTO_UDP:Int;
    static var IPV6_CHECKSUM:Int;
    static var IPV6_DSTOPTS:Int;
    static var IPV6_HOPLIMIT:Int;
    static var IPV6_HOPOPTS:Int;
    static var IPV6_JOIN_GROUP:Int;
    static var IPV6_LEAVE_GROUP:Int;
    static var IPV6_MULTICAST_HOPS:Int;
    static var IPV6_MULTICAST_IF:Int;
    static var IPV6_MULTICAST_LOOP:Int;
    static var IPV6_NEXTHOP:Int;
    static var IPV6_PKTINFO:Int;
    static var IPV6_RECVDSTOPTS:Int;
    static var IPV6_RECVHOPLIMIT:Int;
    static var IPV6_RECVHOPOPTS:Int;
    static var IPV6_RECVPKTINFO:Int;
    static var IPV6_RECVRTHDR:Int;
    static var IPV6_RECVTCLASS:Int;
    static var IPV6_RTHDR:Int;
    static var IPV6_RTHDRDSTOPTS:Int;
    static var IPV6_RTHDR_TYPE_0:Int;
    static var IPV6_TCLASS:Int;
    static var IPV6_UNICAST_HOPS:Int;
    static var IPV6_V6ONLY:Int;
    static var IP_ADD_MEMBERSHIP:Int;
    static var IP_DEFAULT_MULTICAST_LOOP:Int;
    static var IP_DEFAULT_MULTICAST_TTL:Int;
    static var IP_DROP_MEMBERSHIP:Int;
    static var IP_HDRINCL:Int;
    static var IP_MAX_MEMBERSHIPS:Int;
    static var IP_MULTICAST_IF:Int;
    static var IP_MULTICAST_LOOP:Int;
    static var IP_MULTICAST_TTL:Int;
    static var IP_OPTIONS:Int;
    static var IP_RECVOPTS:Int;
    static var IP_RECVRETOPTS:Int;
    static var IP_RETOPTS:Int;
    static var IP_TOS:Int;
    static var IP_TRANSPARENT:Int;
    static var IP_TTL:Int;
    static var MSG_CMSG_CLOEXEC:Int;
    static var MSG_CONFIRM:Int;
    static var MSG_CTRUNC:Int;
    static var MSG_DONTROUTE:Int;
    static var MSG_DONTWAIT:Int;
    static var MSG_EOR:Int;
    static var MSG_ERRQUEUE:Int;
    static var MSG_MORE:Int;
    static var MSG_NOSIGNAL:Int;
    static var MSG_OOB:Int;
    static var MSG_PEEK:Int;
    static var MSG_TRUNC:Int;
    static var MSG_WAITALL:Int;
    static var NETLINK_DNRTMSG:Int;
    static var NETLINK_FIREWALL:Int;
    static var NETLINK_IP6_FW:Int;
    static var NETLINK_NFLOG:Int;
    static var NETLINK_ROUTE:Int;
    static var NETLINK_USERSOCK:Int;
    static var NETLINK_XFRM:Int;
    static var NI_DGRAM:Int;
    static var NI_MAXHOST:Int;
    static var NI_MAXSERV:Int;
    static var NI_NAMEREQD:Int;
    static var NI_NOFQDN:Int;
    static var NI_NUMERICHOST:Int;
    static var NI_NUMERICSERV:Int;
    static var PACKET_BROADCAST:Int;
    static var PACKET_FASTROUTE:Int;
    static var PACKET_HOST:Int;
    static var PACKET_LOOPBACK:Int;
    static var PACKET_MULTICAST:Int;
    static var PACKET_OTHERHOST:Int;
    static var PACKET_OUTGOING:Int;
    static var PF_CAN:Int;
    static var PF_PACKET:Int;
    static var PF_RDS:Int;
    static var SCM_CREDENTIALS:Int;
    static var SCM_RIGHTS:Int;
    static var SHUT_RD:Int;
    static var SHUT_RDWR:Int;
    static var SHUT_WR:Int;
    static var SOCK_CLOEXEC:Int;
    static var SOCK_DGRAM:Int;
    static var SOCK_NONBLOCK:Int;
    static var SOCK_RAW:Int;
    static var SOCK_RDM:Int;
    static var SOCK_SEQPACKET:Int;
    static var SOCK_STREAM:Int;
    static var SOL_CAN_BASE:Int;
    static var SOL_CAN_RAW:Int;
    static var SOL_HCI:Int;
    static var SOL_IP:Int;
    static var SOL_SOCKET:Int;
    static var SOL_TCP:Int;
    static var SOL_TIPC:Int;
    static var SOL_UDP:Int;
    static var SOMAXCONN:Int;
    static var SO_ACCEPTCONN:Int;
    static var SO_BINDTODEVICE:Int;
    static var SO_BROADCAST:Int;
    static var SO_DEBUG:Int;
    static var SO_DONTROUTE:Int;
    static var SO_ERROR:Int;
    static var SO_KEEPALIVE:Int;
    static var SO_LINGER:Int;
    static var SO_OOBINLINE:Int;
    static var SO_PASSCRED:Int;
    static var SO_PEERCRED:Int;
    static var SO_RCVBUF:Int;
    static var SO_RCVLOWAT:Int;
    static var SO_RCVTIMEO:Int;
    static var SO_REUSEADDR:Int;
    static var SO_REUSEPORT:Int;
    static var SO_SNDBUF:Int;
    static var SO_SNDLOWAT:Int;
    static var SO_SNDTIMEO:Int;
    static var SO_TYPE:Int;
    static var TCP_CORK:Int;
    static var TCP_DEFER_ACCEPT:Int;
    static var TCP_INFO:Int;
    static var TCP_KEEPCNT:Int;
    static var TCP_KEEPIDLE:Int;
    static var TCP_KEEPINTVL:Int;
    static var TCP_LINGER2:Int;
    static var TCP_MAXSEG:Int;
    static var TCP_NODELAY:Int;
    static var TCP_QUICKACK:Int;
    static var TCP_SYNCNT:Int;
    static var TCP_WINDOW_CLAMP:Int;
    static var TIPC_ADDR_ID:Int;
    static var TIPC_ADDR_NAME:Int;
    static var TIPC_ADDR_NAMESEQ:Int;
    static var TIPC_CFG_SRV:Int;
    static var TIPC_CLUSTER_SCOPE:Int;
    static var TIPC_CONN_TIMEOUT:Int;
    static var TIPC_CRITICAL_IMPORTANCE:Int;
    static var TIPC_DEST_DROPPABLE:Int;
    static var TIPC_HIGH_IMPORTANCE:Int;
    static var TIPC_IMPORTANCE:Int;
    static var TIPC_LOW_IMPORTANCE:Int;
    static var TIPC_MEDIUM_IMPORTANCE:Int;
    static var TIPC_NODE_SCOPE:Int;
    static var TIPC_PUBLISHED:Int;
    static var TIPC_SRC_DROPPABLE:Int;
    static var TIPC_SUBSCR_TIMEOUT:Int;
    static var TIPC_SUB_CANCEL:Int;
    static var TIPC_SUB_PORTS:Int;
    static var TIPC_SUB_SERVICE:Int;
    static var TIPC_TOP_SRV:Int;
    static var TIPC_WAIT_FOREVER:Int;
    static var TIPC_WITHDRAWN:Int;
    static var TIPC_ZONE_SCOPE:Int;
    static var _GLOBAL_DEFAULT_TIMEOUT:Int;

    function send(d:BytesData,flags:Int):Int;
    function recv(n:Int,flags:Int):BytesData;



    /**
        Creates a new unconnected socket.
    **/
    function new() : Void;

    /**
        Closes the socket : make sure to properly close all your sockets or you will crash when you run out of file descriptors.
    **/
    function close() : Void;

    /**
        Connect to the given server host/port. Throw an exception in case we couldn't sucessfully connect.
    **/
    function connect( addr : python.lib.net.Address ) : Void;

    //function create_connection() :

    /**
        Allow the socket to listen for incoming questions. The parameter tells how many pending connections we can have until they get refused. Use [accept()] to accept incoming connections.
    **/
    function listen( connections : Int ) : Void;

    /**
        Shutdown the socket, either for reading or writing.
    **/
    function shutdown( how :Int ) : Void;

    /**
        Bind the socket to the given host/port so it can afterwards listen for connections there.
    **/
    function bind( address : python.lib.net.Address ) : Void;

    /**
        Accept a new connected client. This will return a connected socket on which you can read/write some data.
    **/
    function accept() : Tuple2<Socket,Address>;

    /**
        Return the informations about the other side of a connected socket.
    **/
    function getpeername() : python.lib.net.Address;

    /**
        Return the informations about our side of a connected socket.
    **/
    function getsockname() : python.lib.net.Address;

    /**
        Gives a timeout after which blocking socket operations (such as reading and writing) will abort and throw an exception.
    **/
    function settimeout( timeout : Float ) : Void;

    /**
        Block until some data is available for read on the socket.
    **/
    function waitForRead() : Void;

    /**
        Change the blocking mode of the socket. A blocking socket is the default behavior. A non-blocking socket will abort blocking operations immediatly by throwing a haxe.io.Error.Blocking value.
    **/
    function setblocking( b : Bool ) : Void;

    /**

    **/
    function setsockopt( family:Int, option:Int, value : Bool ) : Void;


    function fileno():Int;

    /**
        Wait until one of the sockets groups is ready for the given operation :
        [read] contains sockets on which we want to wait for available data to be read,
        [write] contains sockets on which we want to wait until we are allowed to write some data to their output buffers,
        [others] contains sockets on which we want to wait for exceptional conditions.
        [select] will block until one of the condition is met, in which case it will return the sockets for which the condition was true.
        In case a [timeout] (in seconds) is specified, select might wait at worse until the timeout expires.
    **/
    //static function select(read : Array<Socket>, write : Array<Socket>, others : Array<Socket>, ?timeout : Float) : { read: Array<Socket>,write: Array<Socket>,others: Array<Socket> };

}