#if !defined(__COREFOUNDATION_CFSTREAMPRIV__)
#define __COREFOUNDATION_CFSTREAMPRIV__ 1
#include <CoreFoundation/CFBase.h>
#include <CoreFoundation/CFRuntime.h>
#include <CoreFoundation/CFStream.h>
#include <CoreFoundation/CFStreamAbstract.h>
#include <CoreFoundation/CFRunLoop.h>
#if defined(__cplusplus)
extern "C" {
#endif
struct _CFStream;
struct _CFStreamClient {
CFStreamClientContext cbContext;
void (*cb)(struct _CFStream *, CFStreamEventType, void *);
CFOptionFlags when;
CFRunLoopSourceRef rlSource;
CFMutableArrayRef runLoopsAndModes;
CFOptionFlags whatToSignal;
};
struct _CFStreamCallBacks {
CFIndex version;
void *(*create)(struct _CFStream *stream, void *info);
void (*finalize)(struct _CFStream *stream, void *info);
CFStringRef (*copyDescription)(struct _CFStream *stream, void *info);
Boolean (*open)(struct _CFStream *stream, CFStreamError *error, Boolean *openComplete, void *info);
Boolean (*openCompleted)(struct _CFStream *stream, CFStreamError *error, void *info);
CFIndex (*read)(CFReadStreamRef stream, UInt8 *buffer, CFIndex bufferLength, CFStreamError *error, Boolean *atEOF, void *info);
const UInt8 *(*getBuffer)(CFReadStreamRef sream, CFIndex maxBytesToRead, CFIndex *numBytesRead, CFStreamError *error, Boolean *atEOF, void *info);
Boolean (*canRead)(CFReadStreamRef, void *info);
CFIndex (*write)(CFWriteStreamRef, const UInt8 *buffer, CFIndex bufferLength, CFStreamError *error, void *info);
Boolean (*canWrite)(CFWriteStreamRef, void *info);
void (*close)(struct _CFStream *stream, void *info);
CFTypeRef (*copyProperty)(struct _CFStream *stream, CFStringRef propertyName, void *info);
Boolean (*setProperty)(struct _CFStream *stream, CFStringRef propertyName, CFTypeRef propertyValue, void *info);
void (*requestEvents)(struct _CFStream *stream, CFOptionFlags events, void *info);
void (*schedule)(struct _CFStream *stream, CFRunLoopRef runLoop, CFStringRef runLoopMode, void *info);
void (*unschedule)(struct _CFStream *stream, CFRunLoopRef runLoop, CFStringRef runLoopMode, void *info);
};
struct _CFStream {
CFRuntimeBase _cfBase;
CFOptionFlags flags;
CFStreamError error;
struct _CFStreamClient *client;
void *info;
const struct _CFStreamCallBacks *callBacks; void *_reserved1;
};
CF_INLINE void *_CFStreamGetInfoPointer(struct _CFStream *stream) {
return stream->info;
}
CF_EXPORT struct _CFStream *_CFStreamCreateWithConstantCallbacks(CFAllocatorRef alloc, void *info, const struct _CFStreamCallBacks *cb, Boolean isReading);
CF_EXPORT void _CFStreamSetInfoPointer(struct _CFStream *stream, void *info, const struct _CFStreamCallBacks *cb);
CF_EXPORT
void _CFStreamSourceScheduleWithRunLoop(CFRunLoopSourceRef source, CFMutableArrayRef runLoopsAndModes, CFRunLoopRef runLoop, CFStringRef runLoopMode);
CF_EXPORT
void _CFStreamSourceUnscheduleFromRunLoop(CFRunLoopSourceRef source, CFMutableArrayRef runLoopsAndModes, CFRunLoopRef runLoop, CFStringRef runLoopMode);
CF_EXPORT
void _CFStreamSourceScheduleWithAllRunLoops(CFRunLoopSourceRef source, CFArrayRef runLoopsAndModes);
CF_EXPORT
void _CFStreamSourceUncheduleFromAllRunLoops(CFRunLoopSourceRef source, CFArrayRef runLoopsAndModes);
#define SECURITY_NONE (0)
#define SECURITY_SSLv2 (1)
#define SECURITY_SSLv3 (2)
#define SECURITY_SSLv32 (3)
#define SECURITY_TLS (4)
extern const int kCFStreamErrorDomainSSL;
#if defined(__cplusplus)
}
#endif
#endif