SOSTransportCircle.h   [plain text]



#ifndef SOSTransportCircle_h
#define SOSTransportCircle_h

#include <CoreFoundation/CoreFoundation.h>
#include <CoreFoundation/CFRuntime.h>
#include <Security/SecureObjectSync/SOSAccount.h>

typedef struct __OpaqueSOSTransportCircle * SOSTransportCircleRef;

struct __OpaqueSOSTransportCircle {
    CFRuntimeBase           _base;
    SOSAccountRef           account;
    
    CFStringRef             (*copyDescription)(SOSTransportCircleRef transport);
    void                    (*destroy)(SOSTransportCircleRef transport);
    
    bool                    (*postRetirement)(SOSTransportCircleRef transport,  CFStringRef circleName, CFStringRef peer_id, CFDataRef retirement_data, CFErrorRef *error);
    bool                    (*expireRetirementRecords)(SOSTransportCircleRef transport, CFDictionaryRef retirements, CFErrorRef *error);
    bool                    (*flushChanges)(SOSTransportCircleRef transport, CFErrorRef *error);
    bool                    (*postCircle)(SOSTransportCircleRef transport,  CFStringRef circleName, CFDataRef circle_data, CFErrorRef *error);
    CFIndex                 (*getTransportType)(SOSTransportCircleRef transport, CFErrorRef *error);
    
    CFDictionaryRef         (*handleRetirementMessages)(SOSTransportCircleRef transport, CFMutableDictionaryRef circle_retirement_messages_table, CFErrorRef *error);
    CFArrayRef              (*handleCircleMessages)(SOSTransportCircleRef transport, CFMutableDictionaryRef circle_circle_messages_table, CFErrorRef *error);
    
    bool                    (*sendPeerInfo)(SOSTransportCircleRef transport, CFStringRef peerID, CFDataRef peerInfoData, CFErrorRef *error);
    bool                    (*flushRingChanges)(SOSTransportCircleRef transport, CFErrorRef* error);
    bool                    (*postRing)(SOSTransportCircleRef transport, CFStringRef ringName, CFDataRef ring, CFErrorRef *error);
    bool                    (*sendDebugInfo)(SOSTransportCircleRef transport, CFStringRef type, CFTypeRef debugInfo, CFErrorRef *error);  
    bool                    (*sendAccountChangedWithDSID)(SOSTransportCircleRef transport, CFStringRef dsid, CFErrorRef *error);
};

SOSTransportCircleRef SOSTransportCircleCreateForSubclass(size_t size, SOSAccountRef account, CFErrorRef *error);

bool SOSTransportCirclePostCircle(SOSTransportCircleRef transport,  CFStringRef circleName, CFDataRef circle_data, CFErrorRef *error);

bool SOSTransportCirclePostRetirement(SOSTransportCircleRef transport,  CFStringRef circleName, SOSPeerInfoRef peer, CFErrorRef *error);

bool SOSTransportCircleExpireRetirementRecords(SOSTransportCircleRef transport, CFDictionaryRef retirements, CFErrorRef *error);

bool SOSTransportCircleFlushChanges(SOSTransportCircleRef transport, CFErrorRef *error);

CFTypeID SOSTransportCircleGetTypeID(void);

CFIndex SOSTransportCircleGetTransportType(SOSTransportCircleRef transport, CFErrorRef *error);

SOSAccountRef SOSTransportCircleGetAccount(SOSTransportCircleRef transport);
CF_RETURNS_RETAINED CFDictionaryRef SOSTransportCircleHandleRetirementMessages(SOSTransportCircleRef transport, CFMutableDictionaryRef circle_retirement_messages_table, CFErrorRef *error);


CF_RETURNS_RETAINED CFArrayRef SOSTransportCircleHandleCircleMessages(SOSTransportCircleRef transport, CFMutableDictionaryRef circle_circle_messages_table, CFErrorRef *error);

bool SOSTransportCircleSendPeerInfo(SOSTransportCircleRef transport, CFStringRef peerID, CFDataRef peerInfoData, CFErrorRef *error);

bool SOSTransportCircleRingFlushChanges(SOSTransportCircleRef transport, CFErrorRef* error);

bool SOSTransportCircleRingPostRing(SOSTransportCircleRef transport, CFStringRef ringName, CFDataRef ring, CFErrorRef *error);

bool SOSTransportCircleSendDebugInfo(SOSTransportCircleRef transport, CFStringRef type, CFTypeRef debugInfo, CFErrorRef *error);

bool SOSTransportCircleSendAccountChangedWithDSID(SOSTransportCircleRef transport, CFStringRef dsid, CFErrorRef *error);

bool SOSTransportCircleSendOfficialDSID(SOSTransportCircleRef transport, CFStringRef dsid, CFErrorRef *error);

bool SOSTransportCircleRecordLastCirclePushedInKVS(SOSTransportCircleRef transport, CFStringRef circle_name, CFDataRef circleData);

#endif