33 get { |
38 get { |
34 return (ElementType) lm_message_get_type(this._obj); |
39 return (ElementType) lm_message_get_type(this._obj); |
35 } |
40 } |
36 } |
41 } |
37 |
42 |
38 private Element () {} |
|
39 |
|
40 protected Element (IntPtr obj) : base (obj) { |
|
41 } |
|
42 |
|
43 [DllImport ("libloudmouth.so")] |
|
44 private static extern int lm_message_get_type (IntPtr obj); |
|
45 |
|
46 [DllImport ("libloudmouth.so")] |
|
47 private static extern IntPtr lm_message_new (string to, ElementType type); |
|
48 |
|
49 protected Element (string to, ElementType type) { |
|
50 _obj = lm_message_new (to, type); |
|
51 } |
|
52 |
|
53 [DllImport ("libloudmouth.so")] |
|
54 private static extern IntPtr lm_message_new_with_sub_type (string to, ElementType type, ElementSubType sub); |
|
55 |
|
56 protected Element (string to, ElementType type, ElementSubType sub) { |
|
57 _obj = lm_message_new_with_sub_type(to, type, sub); |
|
58 } |
|
59 |
|
60 [DllImport ("libloudmouth.so")] |
|
61 private static extern ElementSubType lm_message_get_sub_type (IntPtr obj); |
|
62 |
|
63 protected ElementSubType GetElementSubType () { |
|
64 return lm_message_get_sub_type(this._obj); |
|
65 } |
|
66 |
|
67 [DllImport ("libloudmouth.so")] |
|
68 private static extern IntPtr lm_message_get_node (IntPtr obj); |
|
69 |
|
70 public ElementNode GetNode () { |
|
71 return new ElementNode(lm_message_get_node (this._obj)); |
|
72 } |
|
73 |
|
74 public string this[string data] { |
43 public string this[string data] { |
75 get { |
44 get { |
76 ElementNode node = this.GetNode(); |
45 ElementNode node = this.GetNode (); |
77 return node[data]; |
46 return node[data]; |
78 } |
47 } |
79 set { |
48 set { |
80 ElementNode node = this.GetNode(); |
49 ElementNode node = this.GetNode(); |
81 node[data] = value; |
50 node[data] = value; |
82 } |
51 } |
83 } |
52 } |
84 |
53 |
85 public override string ToString () { |
54 protected Element (IntPtr obj) |
|
55 { |
|
56 this._obj = obj; |
|
57 } |
|
58 |
|
59 protected Element (string to, ElementType type) |
|
60 { |
|
61 _obj = lm_message_new (to, type); |
|
62 } |
|
63 |
|
64 protected Element (string to, ElementType type, ElementSubType sub) |
|
65 { |
|
66 _obj = lm_message_new_with_sub_type (to, type, sub); |
|
67 } |
|
68 |
|
69 protected ElementSubType GetElementSubType () |
|
70 { |
|
71 return lm_message_get_sub_type (this._obj); |
|
72 } |
|
73 |
|
74 public ElementNode GetNode () |
|
75 { |
|
76 return new ElementNode(lm_message_get_node (this._obj)); |
|
77 } |
|
78 |
|
79 public IntPtr GetObject () |
|
80 { |
|
81 return _obj; |
|
82 } |
|
83 |
|
84 public override string ToString () |
|
85 { |
86 return "<Element: " + this.Kind + ":" + this.GetElementSubType() + ">"; |
86 return "<Element: " + this.Kind + ":" + this.GetElementSubType() + ">"; |
87 } |
87 } |
88 |
88 |
89 public static Element CreateElement (IntPtr obj) { |
89 public static Element CreateElement (IntPtr obj) |
|
90 { |
90 switch (lm_message_get_type(obj)) { |
91 switch (lm_message_get_type(obj)) { |
91 case (int)Element.ElementType.MESSAGE: |
92 case (int)Element.ElementType.MESSAGE: |
92 return new Message(obj); |
93 return new Message(obj); |
93 case (int)Element.ElementType.PRESENCE: |
94 case (int)Element.ElementType.PRESENCE: |
94 return new Presence(obj); |
95 return new Presence(obj); |
95 case (int)Element.ElementType.IQ: |
96 case (int)Element.ElementType.IQ: |
96 return new IQ(obj); |
97 return new IQ(obj); |
97 } |
98 } |
98 return null; |
99 return null; |
99 } |
100 } |
100 } |
101 |
|
102 [DllImport ("libloudmouth-1.so")] |
|
103 private static extern int lm_message_get_type (IntPtr obj); |
|
104 [DllImport ("libloudmouth-1.so")] |
|
105 private static extern IntPtr lm_message_new (string to, ElementType type); |
|
106 [DllImport ("libloudmouth-1.so")] |
|
107 private static extern IntPtr lm_message_new_with_sub_type (string to, ElementType type, ElementSubType sub); |
|
108 [DllImport ("libloudmouth-1.so")] |
|
109 private static extern ElementSubType lm_message_get_sub_type (IntPtr obj); |
|
110 [DllImport ("libloudmouth-1.so")] |
|
111 private static extern IntPtr lm_message_get_node (IntPtr obj); |
|
112 } |
101 |
113 |
102 public class Message : Element { |
114 public class Message : Element { |
103 public MessageType Type { |
115 public MessageType Type { |
104 get { |
116 get { |
105 return (MessageType) this.GetElementSubType (); |
117 return (MessageType) this.GetElementSubType (); |
123 CHAT = Element.ElementSubType.CHAT, |
135 CHAT = Element.ElementSubType.CHAT, |
124 GROUPCHAT = Element.ElementSubType.GROUPCHAT, |
136 GROUPCHAT = Element.ElementSubType.GROUPCHAT, |
125 HEADLINE = Element.ElementSubType.HEADLINE |
137 HEADLINE = Element.ElementSubType.HEADLINE |
126 } |
138 } |
127 |
139 |
128 public Message (IntPtr obj) : |
140 public Message (IntPtr obj) : base (obj) |
129 base (obj) { |
141 { |
130 } |
142 } |
131 |
143 |
132 public Message (string to) : |
144 public Message (string to) : base (to, Element.ElementType.MESSAGE, Element.ElementSubType.NOT_SET) |
133 base (to, Element.ElementType.MESSAGE, Element.ElementSubType.NOT_SET) { |
145 { |
134 } |
146 } |
135 |
147 |
136 public Message (string to, MessageType type) : |
148 public Message (string to, MessageType type) : base (to, Element.ElementType.MESSAGE, (Element.ElementSubType) type) |
137 base (to, Element.ElementType.MESSAGE, (Element.ElementSubType) type) { |
149 { |
138 } |
150 } |
139 } |
151 } |
140 |
152 |
141 public class Presence : Element { |
153 public class Presence : Element { |
142 public enum PresenceType { |
154 public enum PresenceType { |
147 UNSUBSCRIBE = Element.ElementSubType.UNSUBSCRIBE, |
159 UNSUBSCRIBE = Element.ElementSubType.UNSUBSCRIBE, |
148 SUBSCRIBED = Element.ElementSubType.SUBSCRIBED, |
160 SUBSCRIBED = Element.ElementSubType.SUBSCRIBED, |
149 UNSUBSCRIBED = Element.ElementSubType.UNSUBSCRIBED, |
161 UNSUBSCRIBED = Element.ElementSubType.UNSUBSCRIBED, |
150 } |
162 } |
151 |
163 |
152 public Presence (IntPtr obj) : base (obj) { |
164 public Presence (IntPtr obj) : base (obj) |
153 } |
165 { |
154 |
166 } |
155 public Presence () : base (null, Element.ElementType.PRESENCE, Element.ElementSubType.AVAILABLE) {} |
167 |
|
168 public Presence () : base (null, Element.ElementType.PRESENCE, Element.ElementSubType.AVAILABLE) |
|
169 { |
|
170 } |
156 |
171 |
157 public Presence (PresenceType type) : base (null, Element.ElementType.PRESENCE, (Element.ElementSubType) type) {} |
172 public Presence (PresenceType type) : base (null, Element.ElementType.PRESENCE, (Element.ElementSubType) type) |
158 |
173 { |
159 public Presence (string to) : |
174 } |
160 base (to, Element.ElementType.PRESENCE) { |
175 |
161 } |
176 public Presence (string to) : base (to, Element.ElementType.PRESENCE) |
162 |
177 { |
163 public Presence (string to, PresenceType type) : |
178 } |
164 base (to, Element.ElementType.PRESENCE, (Element.ElementSubType) type) { |
179 |
|
180 public Presence (string to, PresenceType type) : base (to, Element.ElementType.PRESENCE, (Element.ElementSubType) type) |
|
181 { |
165 } |
182 } |
166 } |
183 } |
167 |
184 |
168 public class IQ : Element { |
185 public class IQ : Element { |
169 |
186 |
189 GET = Element.ElementSubType.GET, |
206 GET = Element.ElementSubType.GET, |
190 SET = Element.ElementSubType.SET, |
207 SET = Element.ElementSubType.SET, |
191 RESULT = Element.ElementSubType.RESULT |
208 RESULT = Element.ElementSubType.RESULT |
192 } |
209 } |
193 |
210 |
194 public IQ (IntPtr obj) : base (obj) { |
211 public IQ (IntPtr obj) : base (obj) |
195 } |
212 { |
196 |
213 } |
197 public IQ () : |
214 |
198 base (null, Element.ElementType.IQ, Element.ElementSubType.GET) {} |
215 public IQ () : base (null, Element.ElementType.IQ, Element.ElementSubType.GET) |
199 |
216 { |
200 public IQ (string to) : |
217 } |
201 base (to, Element.ElementType.IQ, Element.ElementSubType.GET) {} |
218 |
202 |
219 public IQ (string to) : base (to, Element.ElementType.IQ, Element.ElementSubType.GET) |
203 public IQ (string to, IQType type) : |
220 { |
204 base (to, Element.ElementType.IQ, (Element.ElementSubType) type) {} |
221 } |
205 |
222 |
206 public IQ (IQType type) : |
223 public IQ (string to, IQType type) : base (to, Element.ElementType.IQ, (Element.ElementSubType) type) |
207 base (null, Element.ElementType.IQ, (Element.ElementSubType) type) {} |
224 { |
|
225 } |
|
226 |
|
227 public IQ (IQType type) : base (null, Element.ElementType.IQ, (Element.ElementSubType) type) |
|
228 { |
|
229 } |
208 } |
230 } |
209 } |
231 } |