]> git.saurik.com Git - apple/security.git/blob - OSX/sec/SOSCircle/SecureObjectSync/SOSTransportMessage.h
f9cf47c92caa7e39145d74b7c26da345c92cf751
[apple/security.git] / OSX / sec / SOSCircle / SecureObjectSync / SOSTransportMessage.h
1
2 #ifndef SOSTransportMessage_h
3 #define SOSTransportMessage_h
4
5 #include <Security/SecureObjectSync/SOSAccount.h>
6 #include <Security/SecureObjectSync/SOSEnginePriv.h>
7 #include <CoreFoundation/CFRuntime.h>
8 #include <CoreFoundation/CoreFoundation.h>
9
10 typedef struct __OpaqueSOSTransportMessage *SOSTransportMessageRef;
11
12
13 struct __OpaqueSOSTransportMessage {
14 CFRuntimeBase _base;
15 SOSEngineRef engine;
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);
22
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);
30
31 };
32
33 CFStringRef SOSTransportMessageGetCircleName(SOSTransportMessageRef transport);
34
35 SOSTransportMessageRef SOSTransportMessageCreateForSubclass(size_t size,SOSAccountRef account, CFStringRef circleName, CFErrorRef *error);
36 bool SOSTransportMessageHandlePeerMessage(SOSTransportMessageRef transport, CFStringRef peer_id, CFDataRef codedMessage, CFErrorRef *error);
37
38 typedef bool (^SOSTransportSendToPeerBlock)(SOSTransportMessageRef transport, CFStringRef peerID, CFDataRef message, SOSEnginePeerMessageSentBlock sentBlock);
39
40 SOSEngineRef SOSTransportMessageGetEngine(SOSTransportMessageRef transport);
41
42 SOSAccountRef SOSTransportMessageGetAccount(SOSTransportMessageRef transport);
43
44 bool SOSTransportMessageCleanupAfterPeerMessages(SOSTransportMessageRef transport, CFDictionaryRef peers, CFErrorRef* error);
45
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);
49
50 bool SOSTransportMessageSyncWithPeers(SOSTransportMessageRef transport, CFSetRef peers, CFErrorRef *error);
51
52 SOSTransportMessageRef SOSTransportMessageCreateForSubclass(size_t size,
53 SOSAccountRef account, CFStringRef circleName,
54 CFErrorRef *error);
55 CF_RETURNS_RETAINED
56 CFDictionaryRef SOSTransportMessageHandleMessages(SOSTransportMessageRef transport, CFMutableDictionaryRef circle_peer_messages_table, CFErrorRef *error);
57
58 CFTypeID SOSTransportMessageGetTypeID(void);
59
60 CFIndex SOSTransportMessageGetTransportType(SOSTransportMessageRef transport, CFErrorRef *error);
61
62 #endif