GNUstep CoreBase Library 0.2
CFStream.h
1/* CFStream.h
2
3 Copyright (C) 2010 Free Software Foundation, Inc.
4
5 Written by: Stefan Bidigaray
6 Date: January, 2010
7
8 This file is part of GNUstep CoreBase Library.
9
10 This library is free software; you can redistribute it and/or
11 modify it under the terms of the GNU Lesser General Public
12 License as published by the Free Software Foundation; either
13 version 2.1 of the License, or (at your option) any later version.
14
15 This library is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public
21 License along with this library; see the file COPYING.LIB.
22 If not, see <http://www.gnu.org/licenses/> or write to the
23 Free Software Foundation, 51 Franklin Street, Fifth Floor,
24 Boston, MA 02110-1301, USA.
25*/
26
27#ifndef __COREFOUNDATION_CFSTREAM_H__
28#define __COREFOUNDATION_CFSTREAM_H__ 1
29
30#include <CoreFoundation/CFBase.h>
31#include <CoreFoundation/CFError.h>
32#include <CoreFoundation/CFRunLoop.h>
33#include <CoreFoundation/CFSocket.h>
34#include <CoreFoundation/CFURL.h>
35
36CF_EXTERN_C_BEGIN
37#if OS_API_VERSION(MAC_OS_X_VERSION_10_1, GS_API_LATEST)
39typedef struct __CFWriteStream *CFWriteStreamRef;
41typedef struct __CFReadStream *CFReadStreamRef;
42
46CF_EXPORT const CFStringRef kCFStreamPropertyDataWritten;
47CF_EXPORT const CFStringRef kCFStreamPropertySocketNativeHandle;
48CF_EXPORT const CFStringRef kCFStreamPropertySocketRemoteHostName;
49CF_EXPORT const CFStringRef kCFStreamPropertySocketRemotePortNumber;
50#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
51CF_EXPORT const CFStringRef kCFStreamPropertyAppendToFile;
52#endif
53#if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST)
54CF_EXPORT const CFStringRef kCFStreamPropertyFileCurrentOffset;
55#endif
56
58{
59 CFIndex version;
60 void *info;
61 CFAllocatorRetainCallBack retain;
62 CFAllocatorReleaseCallBack release;
63 CFAllocatorCopyDescriptionCallBack copyDescription;
64};
66
67typedef enum
68{
69 kCFStreamStatusNotOpen = 0,
70 kCFStreamStatusOpening,
71 kCFStreamStatusOpen,
72 kCFStreamStatusReading,
73 kCFStreamStatusWriting,
74 kCFStreamStatusAtEnd,
75 kCFStreamStatusClosed,
76 kCFStreamStatusError
77} CFStreamStatus;
78
79/* Deprecated */
80typedef enum
81{
82 kCFStreamErrorDomainCustom = -1,
83 kCFStreamErrorDomainPOSIX = 1,
84 kCFStreamErrorDomainMacOSStatus
85} CFStreamErrorDomain;
86
87
89{
90 CFStreamErrorDomain domain;
91 SInt32 error;
92};
93typedef struct _CFStreamError CFStreamError;
94
95typedef enum
96{
97 kCFStreamEventNone = 0,
98 kCFStreamEventOpenCompleted = 1,
99 kCFStreamEventHasBytesAvailable = 2,
100 kCFStreamEventCanAcceptBytes = 4,
101 kCFStreamEventErrorOccurred = 8,
102 kCFStreamEventEndEncountered = 16
103} CFStreamEventType;
104
108CF_EXPORT void
109CFStreamCreatePairWithSocketToHost (CFAllocatorRef alloc, CFStringRef host,
110 UInt32 port, CFReadStreamRef * readStream,
111 CFWriteStreamRef * writeStream);
112
113#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
114CF_EXPORT void
115CFStreamCreatePairWithPeerSocketSignature (CFAllocatorRef alloc,
116 const CFSocketSignature * signature,
117 CFReadStreamRef * readStream,
118 CFWriteStreamRef * writeStream);
119#endif
120
121#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
122CF_EXPORT void
123CFStreamCreateBoundPair (CFAllocatorRef alloc, CFReadStreamRef * readStream,
124 CFWriteStreamRef * writeStream,
125 CFIndex transferBufferSize);
126#endif
133typedef void (*CFWriteStreamClientCallBack) (CFWriteStreamRef stream,
134 CFStreamEventType eventType,
135 void *clientCallBackInfo);
136
140CF_EXPORT CFWriteStreamRef
141CFWriteStreamCreateWithAllocatedBuffers (CFAllocatorRef alloc,
142 CFAllocatorRef bufferAllocator);
143
144CF_EXPORT CFWriteStreamRef
145CFWriteStreamCreateWithBuffer (CFAllocatorRef alloc, UInt8 * buffer,
146 CFIndex bufferCapacity);
147
148CF_EXPORT CFWriteStreamRef
149CFWriteStreamCreateWithFile (CFAllocatorRef alloc, CFURLRef fileURL);
155CF_EXPORT void CFWriteStreamClose (CFWriteStreamRef stream);
156
157CF_EXPORT Boolean CFWriteStreamOpen (CFWriteStreamRef stream);
163CF_EXPORT CFIndex
164CFWriteStreamWrite (CFWriteStreamRef stream, const UInt8 * buffer,
165 CFIndex bufferLength);
171CF_EXPORT void
172CFWriteStreamScheduleWithRunLoop (CFWriteStreamRef stream,
173 CFRunLoopRef runLoop,
174 CFStringRef runLoopMode);
175
176CF_EXPORT void
177CFWriteStreamUnscheduleFromRunLoop (CFWriteStreamRef stream,
178 CFRunLoopRef runLoop,
179 CFStringRef runLoopMode);
185CF_EXPORT Boolean CFWriteStreamCanAcceptBytes (CFWriteStreamRef stream);
186
187CF_EXPORT CFTypeRef
188CFWriteStreamCopyProperty (CFWriteStreamRef stream, CFStringRef propertyName);
191/* Deprecated function */
192CF_EXPORT CFStreamError CFWriteStreamGetError (CFWriteStreamRef stream);
193
194CF_EXPORT CFStreamStatus CFWriteStreamGetStatus (CFWriteStreamRef stream);
195
199CF_EXPORT Boolean
200CFWriteStreamSetClient (CFWriteStreamRef stream, CFOptionFlags streamEvents,
201 CFWriteStreamClientCallBack clientCB,
202 CFStreamClientContext * clientContext);
208CF_EXPORT CFTypeID CFWriteStreamGetTypeID (void);
215typedef void (*CFReadStreamClientCallBack) (CFReadStreamRef stream,
216 CFStreamEventType eventType,
217 void *clientCallBackInfo);
218
222CF_EXPORT CFReadStreamRef
223CFReadStreamCreateWithBytesNoCopy (CFAllocatorRef alloc, const UInt8 * bytes,
224 CFIndex length,
225 CFAllocatorRef bytesDeallocator);
226
227CF_EXPORT CFReadStreamRef
228CFReadStreamCreateWithFile (CFAllocatorRef alloc, CFURLRef fileURL);
234CF_EXPORT void CFReadStreamClose (CFReadStreamRef stream);
235
236CF_EXPORT Boolean CFReadStreamOpen (CFReadStreamRef stream);
242CF_EXPORT CFIndex
243CFReadStreamRead (CFReadStreamRef stream, UInt8 * buffer, CFIndex bufferLength);
249CF_EXPORT void
250CFReadStreamScheduleWithRunLoop (CFReadStreamRef stream, CFRunLoopRef runLoop,
251 CFStringRef runLoopMode);
252
253CF_EXPORT void
254CFReadStreamUnscheduleFromRunLoop (CFReadStreamRef stream, CFRunLoopRef runLoop,
255 CFStringRef runLoopMode);
261CF_EXPORT CFTypeRef
262CFReadStreamCopyProperty (CFReadStreamRef stream, CFStringRef propertyName);
263
264CF_EXPORT const UInt8 *CFReadStreamGetBuffer (CFReadStreamRef stream,
265 CFIndex maxBytesToRead,
266 CFIndex * numBytesRead);
269/* Deprecated function */
270CF_EXPORT CFStreamError CFReadStreamGetError (CFReadStreamRef stream);
271
272
273CF_EXPORT CFStreamStatus CFReadStreamGetStatus (CFReadStreamRef stream);
274
275CF_EXPORT Boolean CFReadStreamHasBytesAvailable (CFReadStreamRef stream);
276
280CF_EXPORT Boolean
281CFReadStreamSetClient (CFReadStreamRef stream, CFOptionFlags streamEvents,
282 CFReadStreamClientCallBack clientCB,
283 CFStreamClientContext * clientContext);
289CF_EXPORT CFTypeID CFReadStreamGetTypeID (void);
293#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
294CF_EXPORT Boolean
295CFWriteStreamSetProperty (CFWriteStreamRef stream, CFStringRef propertyName,
296 CFTypeRef propertyValue);
297
298CF_EXPORT Boolean
299CFReadStreamSetProperty (CFReadStreamRef stream, CFStringRef propertyName,
300 CFTypeRef propertyValue);
301#endif
302
303#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
304CF_EXPORT CFErrorRef CFWriteStreamCopyError (CFWriteStreamRef stream);
305
306CF_EXPORT CFErrorRef CFReadStreamCopyError (CFReadStreamRef stream);
307#endif
308
309#endif /* MAC_OS_X_VERSION_10_1 */
310
311CF_EXTERN_C_END
312#endif /* __COREFOUNDATION_CFSTREAM_H__ */
unsigned long CFOptionFlags
Definition CFBase.h:163
signed long CFIndex
Definition CFBase.h:165
const struct __CFAllocator * CFAllocatorRef
A reference to a CFAllocator object.
Definition CFBase.h:301
Definition CFSocket.h:59
Definition CFStream.h:58
Definition CFStream.h:89
Definition CFStreamPriv.h:75
Definition CFStreamPriv.h:50