2 #ifndef SOSTransportMessage_h
3 #define SOSTransportMessage_h
5 #include <Security/SecureObjectSync/SOSAccount.h>
6 #include <Security/SecureObjectSync/SOSEnginePriv.h>
7 #include <CoreFoundation/CFRuntime.h>
8 #include <CoreFoundation/CoreFoundation.h>
10 typedef struct __OpaqueSOSTransportMessage
*SOSTransportMessageRef
;
13 struct __OpaqueSOSTransportMessage
{
16 SOSAccountRef account
;
17 CFStringRef circleName
;
18 /* Connections from CF land to vtable land */
19 CFStringRef (*copyDescription
)(SOSTransportMessageRef object
);
20 void (*destroy
)(SOSTransportMessageRef object
);
21 CFStringRef (*getName
)(SOSTransportMessageRef object
);
23 /* send message operations */
24 bool (*syncWithPeers
)(SOSTransportMessageRef transport
, CFSetRef peers
, CFErrorRef
*error
);
25 bool (*cleanupAfterPeerMessages
)(SOSTransportMessageRef transport
, CFDictionaryRef circleToPeerIDs
, CFErrorRef
* error
);
26 bool (*sendMessages
)(SOSTransportMessageRef transport
, CFDictionaryRef circle_messages
, CFErrorRef
*error
);
27 bool (*flushChanges
)(SOSTransportMessageRef transport
, CFErrorRef
*error
);
28 CFIndex (*getTransportType
)(SOSTransportMessageRef transport
, CFErrorRef
*error
);
29 CFDictionaryRef (*handleMessages
)(SOSTransportMessageRef transport
, CFMutableDictionaryRef circle_peer_messages_table
, CFErrorRef
*error
);
33 CFStringRef
SOSTransportMessageGetCircleName(SOSTransportMessageRef transport
);
35 SOSTransportMessageRef
SOSTransportMessageCreateForSubclass(size_t size
,SOSAccountRef account
, CFStringRef circleName
, CFErrorRef
*error
);
36 bool SOSTransportMessageHandlePeerMessage(SOSTransportMessageRef transport
, CFStringRef peer_id
, CFDataRef codedMessage
, CFErrorRef
*error
);
38 typedef bool (^SOSTransportSendToPeerBlock
)(SOSTransportMessageRef transport
, CFStringRef peerID
, CFDataRef message
, SOSEnginePeerMessageSentBlock sentBlock
);
40 SOSEngineRef
SOSTransportMessageGetEngine(SOSTransportMessageRef transport
);
42 SOSAccountRef
SOSTransportMessageGetAccount(SOSTransportMessageRef transport
);
44 bool SOSTransportMessageCleanupAfterPeerMessages(SOSTransportMessageRef transport
, CFDictionaryRef peers
, CFErrorRef
* error
);
46 bool SOSTransportMessageSendMessage(SOSTransportMessageRef transport
, CFStringRef peerID
, CFDataRef message
, CFErrorRef
*error
);
47 bool SOSTransportMessageSendMessages(SOSTransportMessageRef transport
, CFDictionaryRef peer_messages
, CFErrorRef
*error
);
48 bool SOSTransportMessageFlushChanges(SOSTransportMessageRef transport
, CFErrorRef
*error
);
50 bool SOSTransportMessageSyncWithPeers(SOSTransportMessageRef transport
, CFSetRef peers
, CFErrorRef
*error
);
52 SOSTransportMessageRef
SOSTransportMessageCreateForSubclass(size_t size
,
53 SOSAccountRef account
, CFStringRef circleName
,
56 CFDictionaryRef
SOSTransportMessageHandleMessages(SOSTransportMessageRef transport
, CFMutableDictionaryRef circle_peer_messages_table
, CFErrorRef
*error
);
58 CFTypeID
SOSTransportMessageGetTypeID(void);
60 CFIndex
SOSTransportMessageGetTransportType(SOSTransportMessageRef transport
, CFErrorRef
*error
);