26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
|
#import "XMPPConnection.h"
#import "XMPPDiscoNode.h"
OF_ASSUME_NONNULL_BEGIN
@class XMPPJID;
/**
* \brief A class representing an entity responding to Service Discovery
/*!
* @brief A class representing an entity responding to Service Discovery
* queries
*/
@interface XMPPDiscoEntity: XMPPDiscoNode <XMPPConnectionDelegate>
{
OFMutableDictionary *_discoNodes;
XMPPConnection *_connection;
OFString *_capsNode;
}
/**
* \brief The XMPPDiscoNodes this entity provides Services Discovery
/*!
* @brief The XMPPDiscoNodes this entity provides Services Discovery
* responses for
*
* This usually contains at least all immediate child nodes, but may contain
* any number of nodes nested more deeply.
*/
@property (readonly) OFDictionary *discoNodes;
/**
/*!
* The node advertised for the entity's capabilites.
*/
@property (readonly) OFString *capsNode;
+ (instancetype)discoNodeWithJID: (XMPPJID *)JID
node: (nullable OFString *)node OF_UNAVAILABLE;
+ (instancetype)discoNodeWithJID: (XMPPJID *)JID
node: (nullable OFString *)node
name: (nullable OFString *)name OF_UNAVAILABLE;
/**
* \brief Creates a new autoreleased XMPPDiscoEntity with the specified
/*!
* @brief Creates a new autoreleased XMPPDiscoEntity with the specified
* connection.
*
* \param connection The XMPPConnection to serve responses on.
* \return A new autoreleased XMPPDiscoEntity
* @param connection The XMPPConnection to serve responses on.
* @return A new autoreleased XMPPDiscoEntity
*/
+ (instancetype)discoEntityWithConnection: (XMPPConnection *)connection;
/**
* \brief Creates a new autoreleased XMPPDiscoEntity with the specified
/*!
* @brief Creates a new autoreleased XMPPDiscoEntity with the specified
* connection.
*
* \param connection The XMPPConnection to serve responses on.
* \param capsNode The node advertised for the entity's capabilites
* \return A new autoreleased XMPPDiscoEntity
* @param connection The XMPPConnection to serve responses on.
* @param capsNode The node advertised for the entity's capabilites
* @return A new autoreleased XMPPDiscoEntity
*/
+ (instancetype)discoEntityWithConnection: (XMPPConnection *)connection
capsNode: (OFString *)capsNode;
- initWithJID: (XMPPJID *)JID
node: (nullable OFString *)node OF_UNAVAILABLE;
- initWithJID: (XMPPJID *)JID
node: (nullable OFString *)node
name: (nullable OFString *)name OF_UNAVAILABLE;
/**
* \brief Initializes an already allocated XMPPDiscoEntity with the specified
/*!
* @brief Initializes an already allocated XMPPDiscoEntity with the specified
* connection.
*
* \param connection The XMPPConnection to serve responses on.
* @param connection The XMPPConnection to serve responses on.
* This must already be bound to a resource)
* \return An initialized XMPPDiscoEntity
* @return An initialized XMPPDiscoEntity
*/
- initWithConnection: (XMPPConnection *)connection;
/**
* \brief Initializes an already allocated XMPPDiscoEntity with the specified
/*!
* @brief Initializes an already allocated XMPPDiscoEntity with the specified
* connection.
*
* \param connection The XMPPConnection to serve responses on.
* @param connection The XMPPConnection to serve responses on.
* This must already be bound to a resource)
* \param capsNode The node advertised for the entity's capabilites
* \return An initialized XMPPDiscoEntity
* @param capsNode The node advertised for the entity's capabilites
* @return An initialized XMPPDiscoEntity
*/
- initWithConnection: (XMPPConnection *)connection
capsNode: (nullable OFString *)capsNode OF_DESIGNATED_INITIALIZER;
/**
* \brief Adds a XMPPDiscoNode to provide responses for.
/*!
* @brief Adds a XMPPDiscoNode to provide responses for.
*
* \param node The XMPPDiscoNode to provide responses for
* @param node The XMPPDiscoNode to provide responses for
*/
- (void)addDiscoNode: (XMPPDiscoNode *)node;
/**
* \brief Calculates the Entity Capabilities Hash of the entity
/*!
* @brief Calculates the Entity Capabilities Hash of the entity
*
* \return A OFString containing the capabilities hash
* @return A OFString containing the capabilities hash
*/
- (OFString *)capsHash;
@end
OF_ASSUME_NONNULL_END
|