Run util/openssl-format-source -v -c .
[openssl.git] / MacOS / GetHTTPS.src / MacSocket.h
1 #pragma once
2
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 enum {
9     kMacSocket_TimeoutErr = -2
10 };
11
12 // Since MacSocket does busy waiting, I do a callback while waiting
13
14 typedef OSErr(*MacSocket_IdleWaitCallback) (void *);
15
16 // Call this before anything else!
17
18 OSErr MacSocket_Startup(void);
19
20 // Call this to cleanup before quitting
21
22 OSErr MacSocket_Shutdown(void);
23
24 // Call this to allocate a "socket" (reference number is returned in
25 // outSocketNum)
26 // Note that inDoThreadSwitching is pretty much irrelevant right now, since I
27 // ignore it
28 // The inTimeoutTicks parameter is applied during reads/writes of data
29 // The inIdleWaitCallback parameter specifies a callback which is called
30 // during busy-waiting periods
31 // The inUserRefPtr parameter is passed back to the idle-wait callback
32
33 OSErr MacSocket_socket(int *outSocketNum, const Boolean inDoThreadSwitching,
34                        const long inTimeoutTicks,
35                        MacSocket_IdleWaitCallback inIdleWaitCallback,
36                        void *inUserRefPtr);
37
38 // Call this to connect to an IP/DNS address
39 // Note that inTargetAddressAndPort is in "IP:port" format-- e.g.
40 // 10.1.1.1:123
41
42 OSErr MacSocket_connect(const int inSocketNum, char *inTargetAddressAndPort);
43
44 // Call this to listen on a port
45 // Since this a low-performance implementation, I allow a maximum of 1 (one!)
46 // incoming request when I listen
47
48 OSErr MacSocket_listen(const int inSocketNum, const int inPortNum);
49
50 // Call this to close a socket
51
52 OSErr MacSocket_close(const int inSocketNum);
53
54 // Call this to receive data on a socket
55 // Most parameters' purpose are obvious-- except maybe "inBlock" which
56 // controls whether I wait for data or return immediately
57
58 int MacSocket_recv(const int inSocketNum, void *outBuff, int outBuffLength,
59                    const Boolean inBlock);
60
61 // Call this to send data on a socket
62
63 int MacSocket_send(const int inSocketNum, const void *inBuff,
64                    int inBuffLength);
65
66 // If zero bytes were read in a call to MacSocket_recv(), it may be that the
67 // remote end has done a half-close
68 // This function will let you check whether that's true or not
69
70 Boolean MacSocket_RemoteEndIsClosing(const int inSocketNum);
71
72 // Call this to see if the listen has completed after a call to
73 // MacSocket_listen()
74
75 Boolean MacSocket_ListenCompleted(const int inSocketNum);
76
77 // These really aren't very useful anymore
78
79 Boolean MacSocket_LocalEndIsOpen(const int inSocketNum);
80 Boolean MacSocket_RemoteEndIsOpen(const int inSocketNum);
81
82 // You may wish to change the userRefPtr for a socket callback-- use this to
83 // do it
84
85 void MacSocket_SetUserRefPtr(const int inSocketNum, void *inNewRefPtr);
86
87 // Call these to get the socket's IP:port descriptor
88
89 void MacSocket_GetLocalIPAndPort(const int inSocketNum, char *outIPAndPort,
90                                  const int inIPAndPortLength);
91 void MacSocket_GetRemoteIPAndPort(const int inSocketNum, char *outIPAndPort,
92                                   const int inIPAndPortLength);
93
94 // Call this to get error info from a socket
95
96 void MacSocket_GetSocketErrorInfo(const int inSocketNum,
97                                   int *outSocketErrCode,
98                                   char *outSocketErrString,
99                                   const int inSocketErrStringMaxLength);
100
101
102 #ifdef __cplusplus
103 }
104 #endif