File: jabber.html

package info (click to toggle)
jabber.py 0.5.0-1.6
  • links: PTS
  • area: main
  • in suites: buster, stretch
  • size: 564 kB
  • ctags: 1,096
  • sloc: python: 3,412; makefile: 60
file content (1546 lines) | stat: -rw-r--r-- 126,531 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546

<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module jabber</title>
</head><body bgcolor="#f0f0f8">

<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>jabber</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/kalfa/debian/mypackages/jabber.py/jabber.py-0.5.0/jabber/jabber.py">/home/kalfa/debian/mypackages/jabber.py/jabber.py-0.5.0/jabber/jabber.py</a></font></td></tr></table>
    <p><tt>__intro__<br>
&nbsp;<br>
jabber.py&nbsp;is&nbsp;a&nbsp;Python&nbsp;module&nbsp;for&nbsp;the&nbsp;jabber&nbsp;instant&nbsp;messaging&nbsp;protocol.<br>
jabber.py&nbsp;deals&nbsp;with&nbsp;the&nbsp;xml&nbsp;parsing&nbsp;and&nbsp;socket&nbsp;code,&nbsp;leaving&nbsp;the&nbsp;programmer<br>
to&nbsp;concentrate&nbsp;on&nbsp;developing&nbsp;quality&nbsp;jabber&nbsp;based&nbsp;applications&nbsp;with&nbsp;Python.<br>
&nbsp;<br>
The&nbsp;eventual&nbsp;aim&nbsp;is&nbsp;to&nbsp;produce&nbsp;a&nbsp;fully&nbsp;featured&nbsp;easy&nbsp;to&nbsp;use&nbsp;library&nbsp;for<br>
creating&nbsp;both&nbsp;jabber&nbsp;clients&nbsp;and&nbsp;servers.<br>
&nbsp;<br>
jabber.py&nbsp;requires&nbsp;at&nbsp;least&nbsp;python&nbsp;2.0&nbsp;and&nbsp;the&nbsp;XML&nbsp;expat&nbsp;parser&nbsp;module<br>
(&nbsp;included&nbsp;in&nbsp;the&nbsp;standard&nbsp;Python&nbsp;distrubution&nbsp;).<br>
&nbsp;<br>
It&nbsp;is&nbsp;developed&nbsp;on&nbsp;Linux&nbsp;but&nbsp;should&nbsp;run&nbsp;happily&nbsp;on&nbsp;over&nbsp;Unix's&nbsp;and&nbsp;win32.<br>
&nbsp;<br>
__Usage__<br>
&nbsp;<br>
jabber.py&nbsp;basically&nbsp;subclasses&nbsp;the&nbsp;xmlstream&nbsp;classs&nbsp;and&nbsp;provides&nbsp;the<br>
processing&nbsp;of&nbsp;jabber&nbsp;protocol&nbsp;elements&nbsp;into&nbsp;object&nbsp;instances&nbsp;as&nbsp;well<br>
'helper'&nbsp;functions&nbsp;for&nbsp;parts&nbsp;of&nbsp;the&nbsp;protocol&nbsp;such&nbsp;as&nbsp;authentication<br>
and&nbsp;roster&nbsp;management.<br>
&nbsp;<br>
An&nbsp;example&nbsp;of&nbsp;usage&nbsp;for&nbsp;a&nbsp;simple&nbsp;client&nbsp;would&nbsp;be&nbsp;(&nbsp;only&nbsp;psuedo&nbsp;code&nbsp;!)<br>
&nbsp;<br>
&lt;&gt;&nbsp;Read&nbsp;documentation&nbsp;on&nbsp;jabber.org&nbsp;for&nbsp;the&nbsp;jabber&nbsp;protocol.<br>
&nbsp;<br>
&lt;&gt;&nbsp;Birth&nbsp;a&nbsp;jabber.<a href="#Client">Client</a>&nbsp;object&nbsp;with&nbsp;your&nbsp;jabber&nbsp;servers&nbsp;host<br>
&nbsp;<br>
&lt;&gt;&nbsp;Define&nbsp;callback&nbsp;functions&nbsp;for&nbsp;the&nbsp;protocol&nbsp;elements&nbsp;you&nbsp;want&nbsp;to&nbsp;use<br>
&nbsp;&nbsp;&nbsp;and&nbsp;optionally&nbsp;a&nbsp;disconnection.<br>
&nbsp;<br>
&lt;&gt;&nbsp;Authenticate&nbsp;with&nbsp;the&nbsp;server&nbsp;via&nbsp;auth&nbsp;method,&nbsp;or&nbsp;register&nbsp;via&nbsp;the<br>
&nbsp;&nbsp;&nbsp;reg&nbsp;methods&nbsp;to&nbsp;get&nbsp;an&nbsp;account.<br>
&nbsp;<br>
&lt;&gt;&nbsp;Call&nbsp;requestRoster()&nbsp;and&nbsp;sendPresence()<br>
&nbsp;<br>
&lt;&gt;&nbsp;loop&nbsp;over&nbsp;process().&nbsp;Send&nbsp;Iqs,messages&nbsp;and&nbsp;presences&nbsp;by&nbsp;birthing<br>
&nbsp;&nbsp;&nbsp;them&nbsp;via&nbsp;there&nbsp;respective&nbsp;clients&nbsp;,&nbsp;manipulating&nbsp;them&nbsp;and&nbsp;using<br>
&nbsp;&nbsp;&nbsp;the&nbsp;<a href="#Client">Client</a>'s&nbsp;send()&nbsp;method.<br>
&nbsp;<br>
&lt;&gt;&nbsp;Respond&nbsp;to&nbsp;incoming&nbsp;elements&nbsp;passed&nbsp;to&nbsp;your&nbsp;callback&nbsp;functions.<br>
&nbsp;<br>
&lt;&gt;&nbsp;Find&nbsp;bugs&nbsp;:)</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
    
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="debug.html">debug</a><br>
</td><td width="25%" valign=top><a href="sha.html">sha</a><br>
</td><td width="25%" valign=top><a href="time.html">time</a><br>
</td><td width="25%" valign=top><a href="xmlstream.html">xmlstream</a><br>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
    
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="xmlstream.html#Client">xmlstream.Client</a>(<a href="xmlstream.html#Stream">xmlstream.Stream</a>)
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="jabber.html#Connection">Connection</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="jabber.html#Client">Client</a>
</font></dt><dt><font face="helvetica, arial"><a href="jabber.html#Component">Component</a>
</font></dt></dl>
</dd>
</dl>
</dd>
<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="jabber.html#NodeProcessed">NodeProcessed</a>
</font></dt></dl>
</dd>
<dt><font face="helvetica, arial"><a href="jabber.html#JID">JID</a>
</font></dt><dt><font face="helvetica, arial"><a href="xmlstream.html#Node">xmlstream.Node</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="jabber.html#Protocol">Protocol</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="jabber.html#Iq">Iq</a>
</font></dt><dt><font face="helvetica, arial"><a href="jabber.html#Log">Log</a>
</font></dt><dt><font face="helvetica, arial"><a href="jabber.html#Message">Message</a>
</font></dt><dt><font face="helvetica, arial"><a href="jabber.html#Presence">Presence</a>
</font></dt><dt><font face="helvetica, arial"><a href="jabber.html#XDB">XDB</a>
</font></dt></dl>
</dd>
</dl>
</dd>
<dt><font face="helvetica, arial"><a href="jabber.html#Roster">Roster</a>
</font></dt><dt><font face="helvetica, arial"><a href="jabber.html#Server">Server</a>
</font></dt></dl>
 <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Client">class <strong>Client</strong></a>(<a href="jabber.html#Connection">Connection</a>)</font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Class&nbsp;for&nbsp;managing&nbsp;a&nbsp;client&nbsp;connection&nbsp;to&nbsp;a&nbsp;jabber&nbsp;server.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="jabber.html#Client">Client</a></dd>
<dd><a href="jabber.html#Connection">Connection</a></dd>
<dd><a href="xmlstream.html#Client">xmlstream.Client</a></dd>
<dd><a href="xmlstream.html#Stream">xmlstream.Stream</a></dd>
<dd><a href="xmlstream.html#NodeBuilder">xmlstream.NodeBuilder</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="Client-__init__"><strong>__init__</strong></a>(self, host, port<font color="#909090">=5222</font>, debug<font color="#909090">=[]</font>, log<font color="#909090">=0</font>, connection<font color="#909090">=1</font>, hostIP<font color="#909090">=None</font>, proxy<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Client-addRosterItem"><strong>addRosterItem</strong></a>(self, jid)</dt><dd><tt>Send&nbsp;off&nbsp;a&nbsp;request&nbsp;to&nbsp;subscribe&nbsp;to&nbsp;the&nbsp;given&nbsp;jid.</tt></dd></dl>

<dl><dt><a name="Client-auth"><strong>auth</strong></a>(self, username, passwd, resource)</dt><dd><tt>Authenticates&nbsp;and&nbsp;logs&nbsp;in&nbsp;to&nbsp;the&nbsp;specified&nbsp;jabber&nbsp;server<br>
Automatically&nbsp;selects&nbsp;the&nbsp;'best'&nbsp;authentication&nbsp;method<br>
provided&nbsp;by&nbsp;the&nbsp;server.<br>
Supports&nbsp;plain&nbsp;text,&nbsp;digest&nbsp;and&nbsp;zero-k&nbsp;authentication.<br>
&nbsp;<br>
Returns&nbsp;True&nbsp;if&nbsp;the&nbsp;login&nbsp;was&nbsp;successful,&nbsp;False&nbsp;otherwise.</tt></dd></dl>

<dl><dt><a name="Client-deregister"><strong>deregister</strong></a>(self, agent<font color="#909090">=None</font>)</dt><dd><tt>Send&nbsp;off&nbsp;a&nbsp;request&nbsp;to&nbsp;deregister&nbsp;with&nbsp;the&nbsp;server&nbsp;or&nbsp;with&nbsp;the&nbsp;given<br>
agent.&nbsp;&nbsp;Returns&nbsp;True&nbsp;if&nbsp;successful,&nbsp;else&nbsp;False.<br>
&nbsp;<br>
Note&nbsp;that&nbsp;you&nbsp;must&nbsp;be&nbsp;authorised&nbsp;before&nbsp;attempting&nbsp;to&nbsp;deregister.</tt></dd></dl>

<dl><dt><a name="Client-disconnect"><strong>disconnect</strong></a>(self)</dt><dd><tt>Safely&nbsp;disconnects&nbsp;from&nbsp;the&nbsp;connected&nbsp;server</tt></dd></dl>

<dl><dt><a name="Client-discoverInfo"><strong>discoverInfo</strong></a>(self, jid, node<font color="#909090">=None</font>)</dt><dd><tt>According&nbsp;to&nbsp;JEP-0030:<br>
For&nbsp;identity:&nbsp;category,&nbsp;name&nbsp;is&nbsp;mandatory,&nbsp;type&nbsp;is&nbsp;optional.<br>
For&nbsp;feature:&nbsp;var&nbsp;is&nbsp;mandatory</tt></dd></dl>

<dl><dt><a name="Client-discoverItems"><strong>discoverItems</strong></a>(self, jid, node<font color="#909090">=None</font>)</dt><dd><tt>According&nbsp;to&nbsp;JEP-0030:&nbsp;jid&nbsp;is&nbsp;mandatory,&nbsp;name,&nbsp;node,&nbsp;action&nbsp;is&nbsp;optional.</tt></dd></dl>

<dl><dt><a name="Client-getRegInfo"><strong>getRegInfo</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;dictionary&nbsp;of&nbsp;fields&nbsp;requested&nbsp;by&nbsp;the&nbsp;server&nbsp;for&nbsp;a<br>
registration&nbsp;attempt.&nbsp;&nbsp;Each&nbsp;dictionary&nbsp;entry&nbsp;maps&nbsp;from&nbsp;the&nbsp;name&nbsp;of<br>
the&nbsp;field&nbsp;to&nbsp;the&nbsp;field's&nbsp;current&nbsp;value&nbsp;(either&nbsp;as&nbsp;returned&nbsp;by&nbsp;the<br>
server&nbsp;or&nbsp;set&nbsp;programmatically&nbsp;by&nbsp;calling&nbsp;<a href="#Client-setRegInfo">setRegInfo</a>().</tt></dd></dl>

<dl><dt><a name="Client-getRoster"><strong>getRoster</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;current&nbsp;<a href="#Roster">Roster</a>()&nbsp;class&nbsp;instance.&nbsp;Does<br>
not&nbsp;contact&nbsp;the&nbsp;server.</tt></dd></dl>

<dl><dt><a name="Client-removeRosterItem"><strong>removeRosterItem</strong></a>(self, jid)</dt><dd><tt>Removes&nbsp;an&nbsp;item&nbsp;with&nbsp;Jabber&nbsp;ID&nbsp;jid&nbsp;from&nbsp;both&nbsp;the<br>
server's&nbsp;roster&nbsp;and&nbsp;the&nbsp;local&nbsp;internal&nbsp;<a href="#Roster">Roster</a>()<br>
instance</tt></dd></dl>

<dl><dt><a name="Client-requestAgents"><strong>requestAgents</strong></a>(self)</dt><dd><tt>Requests&nbsp;a&nbsp;list&nbsp;of&nbsp;available&nbsp;agents.&nbsp;&nbsp;Returns&nbsp;a&nbsp;dictionary<br>
containing&nbsp;information&nbsp;about&nbsp;each&nbsp;agent;&nbsp;each&nbsp;entry&nbsp;in&nbsp;the<br>
dictionary&nbsp;maps&nbsp;the&nbsp;agent's&nbsp;<a href="#JID">JID</a>&nbsp;to&nbsp;a&nbsp;dictionary&nbsp;of&nbsp;attributes<br>
describing&nbsp;what&nbsp;that&nbsp;agent&nbsp;can&nbsp;do&nbsp;(as&nbsp;returned&nbsp;by&nbsp;the<br>
NS_AGENTS&nbsp;query).</tt></dd></dl>

<dl><dt><a name="Client-requestRegInfo"><strong>requestRegInfo</strong></a>(self, agent<font color="#909090">=''</font>)</dt><dd><tt>Requests&nbsp;registration&nbsp;info&nbsp;from&nbsp;the&nbsp;server.<br>
Returns&nbsp;the&nbsp;<a href="#Iq">Iq</a>&nbsp;object&nbsp;received&nbsp;from&nbsp;the&nbsp;server.</tt></dd></dl>

<dl><dt><a name="Client-requestRoster"><strong>requestRoster</strong></a>(self)</dt><dd><tt>Requests&nbsp;the&nbsp;roster&nbsp;from&nbsp;the&nbsp;server&nbsp;and&nbsp;returns&nbsp;a<br>
<a href="#Roster">Roster</a>()&nbsp;class&nbsp;instance.</tt></dd></dl>

<dl><dt><a name="Client-sendInitPresence"><strong>sendInitPresence</strong></a> = <a href="#Client-sendPresence">sendPresence</a>(self, type<font color="#909090">=None</font>, priority<font color="#909090">=None</font>, show<font color="#909090">=None</font>, status<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Client-sendPresence"><strong>sendPresence</strong></a>(self, type<font color="#909090">=None</font>, priority<font color="#909090">=None</font>, show<font color="#909090">=None</font>, status<font color="#909090">=None</font>)</dt><dd><tt>Sends&nbsp;a&nbsp;presence&nbsp;protocol&nbsp;element&nbsp;to&nbsp;the&nbsp;server.<br>
Used&nbsp;to&nbsp;inform&nbsp;the&nbsp;server&nbsp;that&nbsp;you&nbsp;are&nbsp;online</tt></dd></dl>

<dl><dt><a name="Client-sendRegInfo"><strong>sendRegInfo</strong></a>(self, agent<font color="#909090">=None</font>)</dt><dd><tt>Sends&nbsp;the&nbsp;populated&nbsp;registration&nbsp;dictionary&nbsp;back&nbsp;to&nbsp;the&nbsp;server</tt></dd></dl>

<dl><dt><a name="Client-setRegInfo"><strong>setRegInfo</strong></a>(self, key, val)</dt><dd><tt>Sets&nbsp;a&nbsp;name/value&nbsp;attribute.&nbsp;Note:&nbsp;requestRegInfo&nbsp;must&nbsp;be<br>
called&nbsp;before&nbsp;setting.</tt></dd></dl>

<dl><dt><a name="Client-updateRosterItem"><strong>updateRosterItem</strong></a>(self, jid, name<font color="#909090">=None</font>, groups<font color="#909090">=None</font>)</dt><dd><tt>Update&nbsp;the&nbsp;information&nbsp;stored&nbsp;in&nbsp;the&nbsp;roster&nbsp;about&nbsp;a&nbsp;roster&nbsp;item.<br>
&nbsp;<br>
'jid'&nbsp;is&nbsp;the&nbsp;Jabber&nbsp;ID&nbsp;of&nbsp;the&nbsp;roster&nbsp;entry;&nbsp;'name'&nbsp;is&nbsp;the&nbsp;value&nbsp;to<br>
set&nbsp;the&nbsp;entry's&nbsp;name&nbsp;to,&nbsp;and&nbsp;'groups'&nbsp;is&nbsp;a&nbsp;list&nbsp;of&nbsp;groups&nbsp;to&nbsp;which<br>
this&nbsp;roster&nbsp;entry&nbsp;can&nbsp;belong.&nbsp;&nbsp;If&nbsp;either&nbsp;'name'&nbsp;or&nbsp;'groups'&nbsp;is&nbsp;not<br>
specified,&nbsp;that&nbsp;value&nbsp;is&nbsp;not&nbsp;updated&nbsp;in&nbsp;the&nbsp;roster.</tt></dd></dl>

<hr>
Methods inherited from <a href="jabber.html#Connection">Connection</a>:<br>
<dl><dt><a name="Client-SendAndWaitForResponse"><strong>SendAndWaitForResponse</strong></a>(self, obj, ID<font color="#909090">=None</font>, timeout<font color="#909090">=300</font>)</dt><dd><tt>Sends&nbsp;a&nbsp;protocol&nbsp;element&nbsp;object&nbsp;and&nbsp;blocks&nbsp;until&nbsp;a&nbsp;response&nbsp;with<br>
the&nbsp;same&nbsp;ID&nbsp;is&nbsp;received.&nbsp;&nbsp;The&nbsp;received&nbsp;protocol&nbsp;object&nbsp;is&nbsp;returned<br>
as&nbsp;the&nbsp;function&nbsp;result.</tt></dd></dl>

<dl><dt><a name="Client-dispatch"><strong>dispatch</strong></a>(self, stanza)</dt><dd><tt>Called&nbsp;internally&nbsp;when&nbsp;a&nbsp;'protocol&nbsp;element'&nbsp;is&nbsp;received.<br>
Builds&nbsp;the&nbsp;relevant&nbsp;jabber.py&nbsp;object&nbsp;and&nbsp;dispatches&nbsp;it<br>
to&nbsp;a&nbsp;relevant&nbsp;function&nbsp;or&nbsp;callback.</tt></dd></dl>

<dl><dt><a name="Client-getAnID"><strong>getAnID</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;unique&nbsp;ID</tt></dd></dl>

<dl><dt><a name="Client-header"><strong>header</strong></a>(self)</dt></dl>

<dl><dt><a name="Client-registerHandler"><strong>registerHandler</strong></a>(self, name, handler, type<font color="#909090">=''</font>, ns<font color="#909090">=''</font>, chained<font color="#909090">=0</font>, makefirst<font color="#909090">=0</font>, system<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;callback&nbsp;func&nbsp;for&nbsp;processing&nbsp;incoming&nbsp;stanzas.<br>
Multiple&nbsp;callback&nbsp;functions&nbsp;can&nbsp;be&nbsp;set&nbsp;which&nbsp;are&nbsp;called&nbsp;in<br>
succession.&nbsp;Callback&nbsp;can&nbsp;optionally&nbsp;raise&nbsp;an&nbsp;<a href="#NodeProcessed">NodeProcessed</a>&nbsp;error&nbsp;to<br>
stop&nbsp;stanza&nbsp;from&nbsp;further&nbsp;processing.&nbsp;A&nbsp;type&nbsp;and&nbsp;namespace&nbsp;attributes&nbsp;can<br>
also&nbsp;be&nbsp;optionally&nbsp;passed&nbsp;so&nbsp;the&nbsp;callback&nbsp;is&nbsp;only&nbsp;called&nbsp;when&nbsp;a&nbsp;stanza&nbsp;of<br>
this&nbsp;type&nbsp;is&nbsp;received.&nbsp;Namespace&nbsp;attribute&nbsp;MUST&nbsp;be&nbsp;omitted&nbsp;if&nbsp;you<br>
registering&nbsp;an&nbsp;<a href="#Iq">Iq</a>&nbsp;processing&nbsp;handler.<br>
&nbsp;<br>
If&nbsp;'chainOutput'&nbsp;is&nbsp;set&nbsp;to&nbsp;False&nbsp;(the&nbsp;default),&nbsp;the&nbsp;given&nbsp;function<br>
should&nbsp;be&nbsp;defined&nbsp;as&nbsp;follows:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;myCallback(c,&nbsp;p)<br>
&nbsp;<br>
Where&nbsp;the&nbsp;first&nbsp;parameter&nbsp;is&nbsp;the&nbsp;<a href="#Client">Client</a>&nbsp;object,&nbsp;and&nbsp;the&nbsp;second<br>
parameter&nbsp;is&nbsp;the&nbsp;[ancestor&nbsp;of]&nbsp;<a href="#Protocol">Protocol</a>&nbsp;object&nbsp;representing&nbsp;the&nbsp;stanza<br>
which&nbsp;was&nbsp;received.<br>
&nbsp;<br>
If&nbsp;'chainOutput'&nbsp;is&nbsp;set&nbsp;to&nbsp;True,&nbsp;the&nbsp;output&nbsp;from&nbsp;the&nbsp;various<br>
handler&nbsp;functions&nbsp;will&nbsp;be&nbsp;chained&nbsp;together.&nbsp;&nbsp;In&nbsp;this&nbsp;case,<br>
the&nbsp;given&nbsp;callback&nbsp;function&nbsp;should&nbsp;be&nbsp;defined&nbsp;like&nbsp;this:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;myCallback(c,&nbsp;p,&nbsp;output)<br>
&nbsp;<br>
Where&nbsp;'output'&nbsp;is&nbsp;the&nbsp;value&nbsp;returned&nbsp;by&nbsp;the&nbsp;previous<br>
callback&nbsp;function.&nbsp;&nbsp;For&nbsp;the&nbsp;first&nbsp;callback&nbsp;routine,&nbsp;'output'&nbsp;will&nbsp;be<br>
set&nbsp;to&nbsp;an&nbsp;empty&nbsp;string.<br>
&nbsp;<br>
'makefirst'&nbsp;argument&nbsp;gives&nbsp;you&nbsp;control&nbsp;over&nbsp;handler&nbsp;prioriy&nbsp;in&nbsp;its&nbsp;type<br>
and&nbsp;namespace&nbsp;scope.&nbsp;Note&nbsp;that&nbsp;handlers&nbsp;for&nbsp;particular&nbsp;type&nbsp;or&nbsp;namespace&nbsp;always<br>
have&nbsp;lower&nbsp;priority&nbsp;that&nbsp;common&nbsp;handlers.</tt></dd></dl>

<dl><dt><a name="Client-registerProtocol"><strong>registerProtocol</strong></a>(self, tag_name, Proto)</dt><dd><tt>Registers&nbsp;a&nbsp;protocol&nbsp;in&nbsp;protocol&nbsp;processing&nbsp;chain.&nbsp;You&nbsp;MUST&nbsp;register<br>
a&nbsp;protocol&nbsp;before&nbsp;you&nbsp;register&nbsp;any&nbsp;handler&nbsp;function&nbsp;for&nbsp;it.<br>
First&nbsp;parameter,&nbsp;that&nbsp;passed&nbsp;to&nbsp;this&nbsp;function&nbsp;is&nbsp;the&nbsp;tag&nbsp;name&nbsp;that<br>
belongs&nbsp;to&nbsp;all&nbsp;protocol&nbsp;elements.&nbsp;F.e.:&nbsp;message,&nbsp;presence,&nbsp;iq,&nbsp;xdb,&nbsp;...<br>
Second&nbsp;parameter&nbsp;is&nbsp;the&nbsp;[ancestor&nbsp;of]&nbsp;<a href="#Protocol">Protocol</a>&nbsp;class,&nbsp;which&nbsp;instance&nbsp;will<br>
built&nbsp;from&nbsp;the&nbsp;received&nbsp;node&nbsp;with&nbsp;call<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;received_packet.getName()==tag_name:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stanza&nbsp;=&nbsp;Proto(node&nbsp;=&nbsp;received_packet)</tt></dd></dl>

<dl><dt><a name="Client-send"><strong>send</strong></a>(self, what)</dt><dd><tt>Sends&nbsp;a&nbsp;jabber&nbsp;protocol&nbsp;element&nbsp;(<a href="xmlstream.html#Node">Node</a>)&nbsp;to&nbsp;the&nbsp;server</tt></dd></dl>

<dl><dt><a name="Client-setDisconnectHandler"><strong>setDisconnectHandler</strong></a>(self, func)</dt><dd><tt>Set&nbsp;the&nbsp;callback&nbsp;for&nbsp;a&nbsp;disconnect.<br>
The&nbsp;given&nbsp;function&nbsp;will&nbsp;be&nbsp;called&nbsp;with&nbsp;a&nbsp;single&nbsp;parameter&nbsp;(the<br>
connection&nbsp;object)&nbsp;when&nbsp;the&nbsp;connection&nbsp;is&nbsp;broken&nbsp;unexpectedly&nbsp;(eg,<br>
in&nbsp;response&nbsp;to&nbsp;sending&nbsp;badly&nbsp;formed&nbsp;XML).&nbsp;&nbsp;self.<strong>lastErr</strong>&nbsp;and<br>
self.<strong>lastErrCode</strong>&nbsp;will&nbsp;be&nbsp;set&nbsp;to&nbsp;the&nbsp;error&nbsp;which&nbsp;caused&nbsp;the<br>
disconnection,&nbsp;if&nbsp;any.</tt></dd></dl>

<dl><dt><a name="Client-setIqHandler"><strong>setIqHandler</strong></a>(self, func, type<font color="#909090">=''</font>, ns<font color="#909090">=''</font>)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Client-setMessageHandler"><strong>setMessageHandler</strong></a>(self, func, type<font color="#909090">=''</font>, chainOutput<font color="#909090">=0</font>)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Client-setPresenceHandler"><strong>setPresenceHandler</strong></a>(self, func, type<font color="#909090">=''</font>, chainOutput<font color="#909090">=0</font>)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Client-waitForResponse"><strong>waitForResponse</strong></a>(self, ID, timeout<font color="#909090">=300</font>)</dt><dd><tt>Blocks&nbsp;untils&nbsp;a&nbsp;protocol&nbsp;element&nbsp;with&nbsp;the&nbsp;given&nbsp;id&nbsp;is&nbsp;received.<br>
If&nbsp;an&nbsp;error&nbsp;is&nbsp;received,&nbsp;waitForResponse&nbsp;returns&nbsp;None&nbsp;and<br>
self.<strong>lastErr</strong>&nbsp;and&nbsp;self.<strong>lastErrCode</strong>&nbsp;is&nbsp;set&nbsp;to&nbsp;the&nbsp;received&nbsp;error.&nbsp;&nbsp;If<br>
the&nbsp;operation&nbsp;times&nbsp;out&nbsp;(which&nbsp;only&nbsp;happens&nbsp;if&nbsp;a&nbsp;timeout&nbsp;value&nbsp;is<br>
given),&nbsp;waitForResponse&nbsp;will&nbsp;return&nbsp;None&nbsp;and&nbsp;self.<strong>lastErr</strong>&nbsp;will&nbsp;be<br>
set&nbsp;to&nbsp;"Timeout".<br>
Changed&nbsp;default&nbsp;from&nbsp;timeout=0&nbsp;to&nbsp;timeout=300&nbsp;to&nbsp;avoid&nbsp;hangs&nbsp;in<br>
scripts&nbsp;and&nbsp;such.<br>
If&nbsp;you&nbsp;_really_&nbsp;want&nbsp;no&nbsp;timeout,&nbsp;just&nbsp;set&nbsp;it&nbsp;to&nbsp;0</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Client">xmlstream.Client</a>:<br>
<dl><dt><a name="Client-connect"><strong>connect</strong></a>(self)</dt><dd><tt>Attempt&nbsp;to&nbsp;connect&nbsp;to&nbsp;specified&nbsp;host</tt></dd></dl>

<dl><dt><a name="Client-getSocket"><strong>getSocket</strong></a>(self)</dt></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Stream">xmlstream.Stream</a>:<br>
<dl><dt><a name="Client-disconnectHandler"><strong>disconnectHandler</strong></a>(self, conn)</dt><dd><tt>Called&nbsp;when&nbsp;a&nbsp;Network&nbsp;Error&nbsp;or&nbsp;disconnection&nbsp;occurs.<br>
Designed&nbsp;to&nbsp;be&nbsp;overidden</tt></dd></dl>

<dl><dt><a name="Client-disconnected"><strong>disconnected</strong></a>(self, conn)</dt><dd><tt>Called&nbsp;when&nbsp;a&nbsp;Network&nbsp;Error&nbsp;or&nbsp;disconnection&nbsp;occurs.</tt></dd></dl>

<dl><dt><a name="Client-getIncomingID"><strong>getIncomingID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;streams&nbsp;ID</tt></dd></dl>

<dl><dt><a name="Client-getOutgoingID"><strong>getOutgoingID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;streams&nbsp;ID</tt></dd></dl>

<dl><dt><a name="Client-log"><strong>log</strong></a>(self, data, inout<font color="#909090">=''</font>)</dt><dd><tt>Logs&nbsp;data&nbsp;to&nbsp;the&nbsp;specified&nbsp;filehandle.&nbsp;Data&nbsp;is&nbsp;time&nbsp;stamped<br>
and&nbsp;prefixed&nbsp;with&nbsp;inout</tt></dd></dl>

<dl><dt><a name="Client-process"><strong>process</strong></a>(self, timeout<font color="#909090">=0</font>)</dt><dd><tt>Receives&nbsp;incoming&nbsp;data&nbsp;(if&nbsp;any)&nbsp;and&nbsp;processes&nbsp;it.<br>
Waits&nbsp;for&nbsp;data&nbsp;no&nbsp;more&nbsp;than&nbsp;timeout&nbsp;seconds.</tt></dd></dl>

<dl><dt><a name="Client-read"><strong>read</strong></a>(self)</dt><dd><tt>Reads&nbsp;incoming&nbsp;data.&nbsp;Blocks&nbsp;until&nbsp;done.&nbsp;Calls&nbsp;<a href="#Client-disconnected">disconnected</a>(self)&nbsp;if&nbsp;appropriate.</tt></dd></dl>

<dl><dt><a name="Client-timestampLog"><strong>timestampLog</strong></a>(self, timestamp)</dt><dd><tt>Enable&nbsp;or&nbsp;disable&nbsp;the&nbsp;showing&nbsp;of&nbsp;a&nbsp;timestamp&nbsp;in&nbsp;the&nbsp;log.<br>
By&nbsp;default,&nbsp;timestamping&nbsp;is&nbsp;enabled.</tt></dd></dl>

<dl><dt><a name="Client-write"><strong>write</strong></a>(self, raw_data)</dt><dd><tt>Writes&nbsp;raw&nbsp;outgoing&nbsp;data.&nbsp;Blocks&nbsp;until&nbsp;done.<br>
If&nbsp;supplied&nbsp;data&nbsp;is&nbsp;not&nbsp;unicode&nbsp;string,&nbsp;ENCODING<br>
is&nbsp;used&nbsp;for&nbsp;convertion.&nbsp;Avoid&nbsp;this!<br>
Always&nbsp;send&nbsp;your&nbsp;data&nbsp;as&nbsp;a&nbsp;unicode&nbsp;string.</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#NodeBuilder">xmlstream.NodeBuilder</a>:<br>
<dl><dt><a name="Client-DEBUG"><strong>DEBUG</strong></a>(self, dup1, dup2<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Client-getDom"><strong>getDom</strong></a>(self)</dt></dl>

<dl><dt><a name="Client-handle_data"><strong>handle_data</strong></a>(self, data)</dt><dd><tt>XML&nbsp;Parser&nbsp;callback</tt></dd></dl>

<dl><dt><a name="Client-unknown_endtag"><strong>unknown_endtag</strong></a>(self, tag)</dt><dd><tt>XML&nbsp;Parser&nbsp;callback</tt></dd></dl>

<dl><dt><a name="Client-unknown_starttag"><strong>unknown_starttag</strong></a>(self, tag, attrs)</dt><dd><tt>XML&nbsp;Parser&nbsp;callback</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Component">class <strong>Component</strong></a>(<a href="jabber.html#Connection">Connection</a>)</font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>docs&nbsp;to&nbsp;come&nbsp;soon...<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="jabber.html#Component">Component</a></dd>
<dd><a href="jabber.html#Connection">Connection</a></dd>
<dd><a href="xmlstream.html#Client">xmlstream.Client</a></dd>
<dd><a href="xmlstream.html#Stream">xmlstream.Stream</a></dd>
<dd><a href="xmlstream.html#NodeBuilder">xmlstream.NodeBuilder</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="Component-__init__"><strong>__init__</strong></a>(self, host, port, connection<font color="#909090">=1</font>, debug<font color="#909090">=[]</font>, log<font color="#909090">=0</font>, ns<font color="#909090">='jabber:component:accept'</font>, hostIP<font color="#909090">=None</font>, proxy<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Component-auth"><strong>auth</strong></a>(self, secret)</dt><dd><tt>will&nbsp;disconnect&nbsp;on&nbsp;failure</tt></dd></dl>

<dl><dt><a name="Component-dispatch"><strong>dispatch</strong></a>(self, root_node)</dt><dd><tt>Catch&nbsp;the&nbsp;&lt;handshake/&gt;&nbsp;here</tt></dd></dl>

<hr>
Methods inherited from <a href="jabber.html#Connection">Connection</a>:<br>
<dl><dt><a name="Component-SendAndWaitForResponse"><strong>SendAndWaitForResponse</strong></a>(self, obj, ID<font color="#909090">=None</font>, timeout<font color="#909090">=300</font>)</dt><dd><tt>Sends&nbsp;a&nbsp;protocol&nbsp;element&nbsp;object&nbsp;and&nbsp;blocks&nbsp;until&nbsp;a&nbsp;response&nbsp;with<br>
the&nbsp;same&nbsp;ID&nbsp;is&nbsp;received.&nbsp;&nbsp;The&nbsp;received&nbsp;protocol&nbsp;object&nbsp;is&nbsp;returned<br>
as&nbsp;the&nbsp;function&nbsp;result.</tt></dd></dl>

<dl><dt><a name="Component-getAnID"><strong>getAnID</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;unique&nbsp;ID</tt></dd></dl>

<dl><dt><a name="Component-header"><strong>header</strong></a>(self)</dt></dl>

<dl><dt><a name="Component-registerHandler"><strong>registerHandler</strong></a>(self, name, handler, type<font color="#909090">=''</font>, ns<font color="#909090">=''</font>, chained<font color="#909090">=0</font>, makefirst<font color="#909090">=0</font>, system<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;callback&nbsp;func&nbsp;for&nbsp;processing&nbsp;incoming&nbsp;stanzas.<br>
Multiple&nbsp;callback&nbsp;functions&nbsp;can&nbsp;be&nbsp;set&nbsp;which&nbsp;are&nbsp;called&nbsp;in<br>
succession.&nbsp;Callback&nbsp;can&nbsp;optionally&nbsp;raise&nbsp;an&nbsp;<a href="#NodeProcessed">NodeProcessed</a>&nbsp;error&nbsp;to<br>
stop&nbsp;stanza&nbsp;from&nbsp;further&nbsp;processing.&nbsp;A&nbsp;type&nbsp;and&nbsp;namespace&nbsp;attributes&nbsp;can<br>
also&nbsp;be&nbsp;optionally&nbsp;passed&nbsp;so&nbsp;the&nbsp;callback&nbsp;is&nbsp;only&nbsp;called&nbsp;when&nbsp;a&nbsp;stanza&nbsp;of<br>
this&nbsp;type&nbsp;is&nbsp;received.&nbsp;Namespace&nbsp;attribute&nbsp;MUST&nbsp;be&nbsp;omitted&nbsp;if&nbsp;you<br>
registering&nbsp;an&nbsp;<a href="#Iq">Iq</a>&nbsp;processing&nbsp;handler.<br>
&nbsp;<br>
If&nbsp;'chainOutput'&nbsp;is&nbsp;set&nbsp;to&nbsp;False&nbsp;(the&nbsp;default),&nbsp;the&nbsp;given&nbsp;function<br>
should&nbsp;be&nbsp;defined&nbsp;as&nbsp;follows:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;myCallback(c,&nbsp;p)<br>
&nbsp;<br>
Where&nbsp;the&nbsp;first&nbsp;parameter&nbsp;is&nbsp;the&nbsp;<a href="#Client">Client</a>&nbsp;object,&nbsp;and&nbsp;the&nbsp;second<br>
parameter&nbsp;is&nbsp;the&nbsp;[ancestor&nbsp;of]&nbsp;<a href="#Protocol">Protocol</a>&nbsp;object&nbsp;representing&nbsp;the&nbsp;stanza<br>
which&nbsp;was&nbsp;received.<br>
&nbsp;<br>
If&nbsp;'chainOutput'&nbsp;is&nbsp;set&nbsp;to&nbsp;True,&nbsp;the&nbsp;output&nbsp;from&nbsp;the&nbsp;various<br>
handler&nbsp;functions&nbsp;will&nbsp;be&nbsp;chained&nbsp;together.&nbsp;&nbsp;In&nbsp;this&nbsp;case,<br>
the&nbsp;given&nbsp;callback&nbsp;function&nbsp;should&nbsp;be&nbsp;defined&nbsp;like&nbsp;this:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;myCallback(c,&nbsp;p,&nbsp;output)<br>
&nbsp;<br>
Where&nbsp;'output'&nbsp;is&nbsp;the&nbsp;value&nbsp;returned&nbsp;by&nbsp;the&nbsp;previous<br>
callback&nbsp;function.&nbsp;&nbsp;For&nbsp;the&nbsp;first&nbsp;callback&nbsp;routine,&nbsp;'output'&nbsp;will&nbsp;be<br>
set&nbsp;to&nbsp;an&nbsp;empty&nbsp;string.<br>
&nbsp;<br>
'makefirst'&nbsp;argument&nbsp;gives&nbsp;you&nbsp;control&nbsp;over&nbsp;handler&nbsp;prioriy&nbsp;in&nbsp;its&nbsp;type<br>
and&nbsp;namespace&nbsp;scope.&nbsp;Note&nbsp;that&nbsp;handlers&nbsp;for&nbsp;particular&nbsp;type&nbsp;or&nbsp;namespace&nbsp;always<br>
have&nbsp;lower&nbsp;priority&nbsp;that&nbsp;common&nbsp;handlers.</tt></dd></dl>

<dl><dt><a name="Component-registerProtocol"><strong>registerProtocol</strong></a>(self, tag_name, Proto)</dt><dd><tt>Registers&nbsp;a&nbsp;protocol&nbsp;in&nbsp;protocol&nbsp;processing&nbsp;chain.&nbsp;You&nbsp;MUST&nbsp;register<br>
a&nbsp;protocol&nbsp;before&nbsp;you&nbsp;register&nbsp;any&nbsp;handler&nbsp;function&nbsp;for&nbsp;it.<br>
First&nbsp;parameter,&nbsp;that&nbsp;passed&nbsp;to&nbsp;this&nbsp;function&nbsp;is&nbsp;the&nbsp;tag&nbsp;name&nbsp;that<br>
belongs&nbsp;to&nbsp;all&nbsp;protocol&nbsp;elements.&nbsp;F.e.:&nbsp;message,&nbsp;presence,&nbsp;iq,&nbsp;xdb,&nbsp;...<br>
Second&nbsp;parameter&nbsp;is&nbsp;the&nbsp;[ancestor&nbsp;of]&nbsp;<a href="#Protocol">Protocol</a>&nbsp;class,&nbsp;which&nbsp;instance&nbsp;will<br>
built&nbsp;from&nbsp;the&nbsp;received&nbsp;node&nbsp;with&nbsp;call<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;received_packet.getName()==tag_name:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stanza&nbsp;=&nbsp;Proto(node&nbsp;=&nbsp;received_packet)</tt></dd></dl>

<dl><dt><a name="Component-send"><strong>send</strong></a>(self, what)</dt><dd><tt>Sends&nbsp;a&nbsp;jabber&nbsp;protocol&nbsp;element&nbsp;(<a href="xmlstream.html#Node">Node</a>)&nbsp;to&nbsp;the&nbsp;server</tt></dd></dl>

<dl><dt><a name="Component-setDisconnectHandler"><strong>setDisconnectHandler</strong></a>(self, func)</dt><dd><tt>Set&nbsp;the&nbsp;callback&nbsp;for&nbsp;a&nbsp;disconnect.<br>
The&nbsp;given&nbsp;function&nbsp;will&nbsp;be&nbsp;called&nbsp;with&nbsp;a&nbsp;single&nbsp;parameter&nbsp;(the<br>
connection&nbsp;object)&nbsp;when&nbsp;the&nbsp;connection&nbsp;is&nbsp;broken&nbsp;unexpectedly&nbsp;(eg,<br>
in&nbsp;response&nbsp;to&nbsp;sending&nbsp;badly&nbsp;formed&nbsp;XML).&nbsp;&nbsp;self.<strong>lastErr</strong>&nbsp;and<br>
self.<strong>lastErrCode</strong>&nbsp;will&nbsp;be&nbsp;set&nbsp;to&nbsp;the&nbsp;error&nbsp;which&nbsp;caused&nbsp;the<br>
disconnection,&nbsp;if&nbsp;any.</tt></dd></dl>

<dl><dt><a name="Component-setIqHandler"><strong>setIqHandler</strong></a>(self, func, type<font color="#909090">=''</font>, ns<font color="#909090">=''</font>)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Component-setMessageHandler"><strong>setMessageHandler</strong></a>(self, func, type<font color="#909090">=''</font>, chainOutput<font color="#909090">=0</font>)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Component-setPresenceHandler"><strong>setPresenceHandler</strong></a>(self, func, type<font color="#909090">=''</font>, chainOutput<font color="#909090">=0</font>)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Component-waitForResponse"><strong>waitForResponse</strong></a>(self, ID, timeout<font color="#909090">=300</font>)</dt><dd><tt>Blocks&nbsp;untils&nbsp;a&nbsp;protocol&nbsp;element&nbsp;with&nbsp;the&nbsp;given&nbsp;id&nbsp;is&nbsp;received.<br>
If&nbsp;an&nbsp;error&nbsp;is&nbsp;received,&nbsp;waitForResponse&nbsp;returns&nbsp;None&nbsp;and<br>
self.<strong>lastErr</strong>&nbsp;and&nbsp;self.<strong>lastErrCode</strong>&nbsp;is&nbsp;set&nbsp;to&nbsp;the&nbsp;received&nbsp;error.&nbsp;&nbsp;If<br>
the&nbsp;operation&nbsp;times&nbsp;out&nbsp;(which&nbsp;only&nbsp;happens&nbsp;if&nbsp;a&nbsp;timeout&nbsp;value&nbsp;is<br>
given),&nbsp;waitForResponse&nbsp;will&nbsp;return&nbsp;None&nbsp;and&nbsp;self.<strong>lastErr</strong>&nbsp;will&nbsp;be<br>
set&nbsp;to&nbsp;"Timeout".<br>
Changed&nbsp;default&nbsp;from&nbsp;timeout=0&nbsp;to&nbsp;timeout=300&nbsp;to&nbsp;avoid&nbsp;hangs&nbsp;in<br>
scripts&nbsp;and&nbsp;such.<br>
If&nbsp;you&nbsp;_really_&nbsp;want&nbsp;no&nbsp;timeout,&nbsp;just&nbsp;set&nbsp;it&nbsp;to&nbsp;0</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Client">xmlstream.Client</a>:<br>
<dl><dt><a name="Component-connect"><strong>connect</strong></a>(self)</dt><dd><tt>Attempt&nbsp;to&nbsp;connect&nbsp;to&nbsp;specified&nbsp;host</tt></dd></dl>

<dl><dt><a name="Component-getSocket"><strong>getSocket</strong></a>(self)</dt></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Stream">xmlstream.Stream</a>:<br>
<dl><dt><a name="Component-disconnect"><strong>disconnect</strong></a>(self)</dt><dd><tt>Close&nbsp;the&nbsp;stream&nbsp;and&nbsp;socket</tt></dd></dl>

<dl><dt><a name="Component-disconnectHandler"><strong>disconnectHandler</strong></a>(self, conn)</dt><dd><tt>Called&nbsp;when&nbsp;a&nbsp;Network&nbsp;Error&nbsp;or&nbsp;disconnection&nbsp;occurs.<br>
Designed&nbsp;to&nbsp;be&nbsp;overidden</tt></dd></dl>

<dl><dt><a name="Component-disconnected"><strong>disconnected</strong></a>(self, conn)</dt><dd><tt>Called&nbsp;when&nbsp;a&nbsp;Network&nbsp;Error&nbsp;or&nbsp;disconnection&nbsp;occurs.</tt></dd></dl>

<dl><dt><a name="Component-getIncomingID"><strong>getIncomingID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;streams&nbsp;ID</tt></dd></dl>

<dl><dt><a name="Component-getOutgoingID"><strong>getOutgoingID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;streams&nbsp;ID</tt></dd></dl>

<dl><dt><a name="Component-log"><strong>log</strong></a>(self, data, inout<font color="#909090">=''</font>)</dt><dd><tt>Logs&nbsp;data&nbsp;to&nbsp;the&nbsp;specified&nbsp;filehandle.&nbsp;Data&nbsp;is&nbsp;time&nbsp;stamped<br>
and&nbsp;prefixed&nbsp;with&nbsp;inout</tt></dd></dl>

<dl><dt><a name="Component-process"><strong>process</strong></a>(self, timeout<font color="#909090">=0</font>)</dt><dd><tt>Receives&nbsp;incoming&nbsp;data&nbsp;(if&nbsp;any)&nbsp;and&nbsp;processes&nbsp;it.<br>
Waits&nbsp;for&nbsp;data&nbsp;no&nbsp;more&nbsp;than&nbsp;timeout&nbsp;seconds.</tt></dd></dl>

<dl><dt><a name="Component-read"><strong>read</strong></a>(self)</dt><dd><tt>Reads&nbsp;incoming&nbsp;data.&nbsp;Blocks&nbsp;until&nbsp;done.&nbsp;Calls&nbsp;<a href="#Component-disconnected">disconnected</a>(self)&nbsp;if&nbsp;appropriate.</tt></dd></dl>

<dl><dt><a name="Component-timestampLog"><strong>timestampLog</strong></a>(self, timestamp)</dt><dd><tt>Enable&nbsp;or&nbsp;disable&nbsp;the&nbsp;showing&nbsp;of&nbsp;a&nbsp;timestamp&nbsp;in&nbsp;the&nbsp;log.<br>
By&nbsp;default,&nbsp;timestamping&nbsp;is&nbsp;enabled.</tt></dd></dl>

<dl><dt><a name="Component-write"><strong>write</strong></a>(self, raw_data)</dt><dd><tt>Writes&nbsp;raw&nbsp;outgoing&nbsp;data.&nbsp;Blocks&nbsp;until&nbsp;done.<br>
If&nbsp;supplied&nbsp;data&nbsp;is&nbsp;not&nbsp;unicode&nbsp;string,&nbsp;ENCODING<br>
is&nbsp;used&nbsp;for&nbsp;convertion.&nbsp;Avoid&nbsp;this!<br>
Always&nbsp;send&nbsp;your&nbsp;data&nbsp;as&nbsp;a&nbsp;unicode&nbsp;string.</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#NodeBuilder">xmlstream.NodeBuilder</a>:<br>
<dl><dt><a name="Component-DEBUG"><strong>DEBUG</strong></a>(self, dup1, dup2<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Component-getDom"><strong>getDom</strong></a>(self)</dt></dl>

<dl><dt><a name="Component-handle_data"><strong>handle_data</strong></a>(self, data)</dt><dd><tt>XML&nbsp;Parser&nbsp;callback</tt></dd></dl>

<dl><dt><a name="Component-unknown_endtag"><strong>unknown_endtag</strong></a>(self, tag)</dt><dd><tt>XML&nbsp;Parser&nbsp;callback</tt></dd></dl>

<dl><dt><a name="Component-unknown_starttag"><strong>unknown_starttag</strong></a>(self, tag, attrs)</dt><dd><tt>XML&nbsp;Parser&nbsp;callback</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Connection">class <strong>Connection</strong></a>(<a href="xmlstream.html#Client">xmlstream.Client</a>)</font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Forms&nbsp;the&nbsp;base&nbsp;for&nbsp;both&nbsp;<a href="#Client">Client</a>&nbsp;and&nbsp;<a href="#Component">Component</a>&nbsp;Classes<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="jabber.html#Connection">Connection</a></dd>
<dd><a href="xmlstream.html#Client">xmlstream.Client</a></dd>
<dd><a href="xmlstream.html#Stream">xmlstream.Stream</a></dd>
<dd><a href="xmlstream.html#NodeBuilder">xmlstream.NodeBuilder</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="Connection-SendAndWaitForResponse"><strong>SendAndWaitForResponse</strong></a>(self, obj, ID<font color="#909090">=None</font>, timeout<font color="#909090">=300</font>)</dt><dd><tt>Sends&nbsp;a&nbsp;protocol&nbsp;element&nbsp;object&nbsp;and&nbsp;blocks&nbsp;until&nbsp;a&nbsp;response&nbsp;with<br>
the&nbsp;same&nbsp;ID&nbsp;is&nbsp;received.&nbsp;&nbsp;The&nbsp;received&nbsp;protocol&nbsp;object&nbsp;is&nbsp;returned<br>
as&nbsp;the&nbsp;function&nbsp;result.</tt></dd></dl>

<dl><dt><a name="Connection-__init__"><strong>__init__</strong></a>(self, host, port, namespace, debug<font color="#909090">=[]</font>, log<font color="#909090">=0</font>, connection<font color="#909090">=1</font>, hostIP<font color="#909090">=None</font>, proxy<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Connection-dispatch"><strong>dispatch</strong></a>(self, stanza)</dt><dd><tt>Called&nbsp;internally&nbsp;when&nbsp;a&nbsp;'protocol&nbsp;element'&nbsp;is&nbsp;received.<br>
Builds&nbsp;the&nbsp;relevant&nbsp;jabber.py&nbsp;object&nbsp;and&nbsp;dispatches&nbsp;it<br>
to&nbsp;a&nbsp;relevant&nbsp;function&nbsp;or&nbsp;callback.</tt></dd></dl>

<dl><dt><a name="Connection-getAnID"><strong>getAnID</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;unique&nbsp;ID</tt></dd></dl>

<dl><dt><a name="Connection-header"><strong>header</strong></a>(self)</dt></dl>

<dl><dt><a name="Connection-registerHandler"><strong>registerHandler</strong></a>(self, name, handler, type<font color="#909090">=''</font>, ns<font color="#909090">=''</font>, chained<font color="#909090">=0</font>, makefirst<font color="#909090">=0</font>, system<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;callback&nbsp;func&nbsp;for&nbsp;processing&nbsp;incoming&nbsp;stanzas.<br>
Multiple&nbsp;callback&nbsp;functions&nbsp;can&nbsp;be&nbsp;set&nbsp;which&nbsp;are&nbsp;called&nbsp;in<br>
succession.&nbsp;Callback&nbsp;can&nbsp;optionally&nbsp;raise&nbsp;an&nbsp;<a href="#NodeProcessed">NodeProcessed</a>&nbsp;error&nbsp;to<br>
stop&nbsp;stanza&nbsp;from&nbsp;further&nbsp;processing.&nbsp;A&nbsp;type&nbsp;and&nbsp;namespace&nbsp;attributes&nbsp;can<br>
also&nbsp;be&nbsp;optionally&nbsp;passed&nbsp;so&nbsp;the&nbsp;callback&nbsp;is&nbsp;only&nbsp;called&nbsp;when&nbsp;a&nbsp;stanza&nbsp;of<br>
this&nbsp;type&nbsp;is&nbsp;received.&nbsp;Namespace&nbsp;attribute&nbsp;MUST&nbsp;be&nbsp;omitted&nbsp;if&nbsp;you<br>
registering&nbsp;an&nbsp;<a href="#Iq">Iq</a>&nbsp;processing&nbsp;handler.<br>
&nbsp;<br>
If&nbsp;'chainOutput'&nbsp;is&nbsp;set&nbsp;to&nbsp;False&nbsp;(the&nbsp;default),&nbsp;the&nbsp;given&nbsp;function<br>
should&nbsp;be&nbsp;defined&nbsp;as&nbsp;follows:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;myCallback(c,&nbsp;p)<br>
&nbsp;<br>
Where&nbsp;the&nbsp;first&nbsp;parameter&nbsp;is&nbsp;the&nbsp;<a href="#Client">Client</a>&nbsp;object,&nbsp;and&nbsp;the&nbsp;second<br>
parameter&nbsp;is&nbsp;the&nbsp;[ancestor&nbsp;of]&nbsp;<a href="#Protocol">Protocol</a>&nbsp;object&nbsp;representing&nbsp;the&nbsp;stanza<br>
which&nbsp;was&nbsp;received.<br>
&nbsp;<br>
If&nbsp;'chainOutput'&nbsp;is&nbsp;set&nbsp;to&nbsp;True,&nbsp;the&nbsp;output&nbsp;from&nbsp;the&nbsp;various<br>
handler&nbsp;functions&nbsp;will&nbsp;be&nbsp;chained&nbsp;together.&nbsp;&nbsp;In&nbsp;this&nbsp;case,<br>
the&nbsp;given&nbsp;callback&nbsp;function&nbsp;should&nbsp;be&nbsp;defined&nbsp;like&nbsp;this:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;myCallback(c,&nbsp;p,&nbsp;output)<br>
&nbsp;<br>
Where&nbsp;'output'&nbsp;is&nbsp;the&nbsp;value&nbsp;returned&nbsp;by&nbsp;the&nbsp;previous<br>
callback&nbsp;function.&nbsp;&nbsp;For&nbsp;the&nbsp;first&nbsp;callback&nbsp;routine,&nbsp;'output'&nbsp;will&nbsp;be<br>
set&nbsp;to&nbsp;an&nbsp;empty&nbsp;string.<br>
&nbsp;<br>
'makefirst'&nbsp;argument&nbsp;gives&nbsp;you&nbsp;control&nbsp;over&nbsp;handler&nbsp;prioriy&nbsp;in&nbsp;its&nbsp;type<br>
and&nbsp;namespace&nbsp;scope.&nbsp;Note&nbsp;that&nbsp;handlers&nbsp;for&nbsp;particular&nbsp;type&nbsp;or&nbsp;namespace&nbsp;always<br>
have&nbsp;lower&nbsp;priority&nbsp;that&nbsp;common&nbsp;handlers.</tt></dd></dl>

<dl><dt><a name="Connection-registerProtocol"><strong>registerProtocol</strong></a>(self, tag_name, Proto)</dt><dd><tt>Registers&nbsp;a&nbsp;protocol&nbsp;in&nbsp;protocol&nbsp;processing&nbsp;chain.&nbsp;You&nbsp;MUST&nbsp;register<br>
a&nbsp;protocol&nbsp;before&nbsp;you&nbsp;register&nbsp;any&nbsp;handler&nbsp;function&nbsp;for&nbsp;it.<br>
First&nbsp;parameter,&nbsp;that&nbsp;passed&nbsp;to&nbsp;this&nbsp;function&nbsp;is&nbsp;the&nbsp;tag&nbsp;name&nbsp;that<br>
belongs&nbsp;to&nbsp;all&nbsp;protocol&nbsp;elements.&nbsp;F.e.:&nbsp;message,&nbsp;presence,&nbsp;iq,&nbsp;xdb,&nbsp;...<br>
Second&nbsp;parameter&nbsp;is&nbsp;the&nbsp;[ancestor&nbsp;of]&nbsp;<a href="#Protocol">Protocol</a>&nbsp;class,&nbsp;which&nbsp;instance&nbsp;will<br>
built&nbsp;from&nbsp;the&nbsp;received&nbsp;node&nbsp;with&nbsp;call<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;received_packet.getName()==tag_name:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stanza&nbsp;=&nbsp;Proto(node&nbsp;=&nbsp;received_packet)</tt></dd></dl>

<dl><dt><a name="Connection-send"><strong>send</strong></a>(self, what)</dt><dd><tt>Sends&nbsp;a&nbsp;jabber&nbsp;protocol&nbsp;element&nbsp;(<a href="xmlstream.html#Node">Node</a>)&nbsp;to&nbsp;the&nbsp;server</tt></dd></dl>

<dl><dt><a name="Connection-setDisconnectHandler"><strong>setDisconnectHandler</strong></a>(self, func)</dt><dd><tt>Set&nbsp;the&nbsp;callback&nbsp;for&nbsp;a&nbsp;disconnect.<br>
The&nbsp;given&nbsp;function&nbsp;will&nbsp;be&nbsp;called&nbsp;with&nbsp;a&nbsp;single&nbsp;parameter&nbsp;(the<br>
connection&nbsp;object)&nbsp;when&nbsp;the&nbsp;connection&nbsp;is&nbsp;broken&nbsp;unexpectedly&nbsp;(eg,<br>
in&nbsp;response&nbsp;to&nbsp;sending&nbsp;badly&nbsp;formed&nbsp;XML).&nbsp;&nbsp;self.<strong>lastErr</strong>&nbsp;and<br>
self.<strong>lastErrCode</strong>&nbsp;will&nbsp;be&nbsp;set&nbsp;to&nbsp;the&nbsp;error&nbsp;which&nbsp;caused&nbsp;the<br>
disconnection,&nbsp;if&nbsp;any.</tt></dd></dl>

<dl><dt><a name="Connection-setIqHandler"><strong>setIqHandler</strong></a>(self, func, type<font color="#909090">=''</font>, ns<font color="#909090">=''</font>)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Connection-setMessageHandler"><strong>setMessageHandler</strong></a>(self, func, type<font color="#909090">=''</font>, chainOutput<font color="#909090">=0</font>)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Connection-setPresenceHandler"><strong>setPresenceHandler</strong></a>(self, func, type<font color="#909090">=''</font>, chainOutput<font color="#909090">=0</font>)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Connection-waitForResponse"><strong>waitForResponse</strong></a>(self, ID, timeout<font color="#909090">=300</font>)</dt><dd><tt>Blocks&nbsp;untils&nbsp;a&nbsp;protocol&nbsp;element&nbsp;with&nbsp;the&nbsp;given&nbsp;id&nbsp;is&nbsp;received.<br>
If&nbsp;an&nbsp;error&nbsp;is&nbsp;received,&nbsp;waitForResponse&nbsp;returns&nbsp;None&nbsp;and<br>
self.<strong>lastErr</strong>&nbsp;and&nbsp;self.<strong>lastErrCode</strong>&nbsp;is&nbsp;set&nbsp;to&nbsp;the&nbsp;received&nbsp;error.&nbsp;&nbsp;If<br>
the&nbsp;operation&nbsp;times&nbsp;out&nbsp;(which&nbsp;only&nbsp;happens&nbsp;if&nbsp;a&nbsp;timeout&nbsp;value&nbsp;is<br>
given),&nbsp;waitForResponse&nbsp;will&nbsp;return&nbsp;None&nbsp;and&nbsp;self.<strong>lastErr</strong>&nbsp;will&nbsp;be<br>
set&nbsp;to&nbsp;"Timeout".<br>
Changed&nbsp;default&nbsp;from&nbsp;timeout=0&nbsp;to&nbsp;timeout=300&nbsp;to&nbsp;avoid&nbsp;hangs&nbsp;in<br>
scripts&nbsp;and&nbsp;such.<br>
If&nbsp;you&nbsp;_really_&nbsp;want&nbsp;no&nbsp;timeout,&nbsp;just&nbsp;set&nbsp;it&nbsp;to&nbsp;0</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Client">xmlstream.Client</a>:<br>
<dl><dt><a name="Connection-connect"><strong>connect</strong></a>(self)</dt><dd><tt>Attempt&nbsp;to&nbsp;connect&nbsp;to&nbsp;specified&nbsp;host</tt></dd></dl>

<dl><dt><a name="Connection-getSocket"><strong>getSocket</strong></a>(self)</dt></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Stream">xmlstream.Stream</a>:<br>
<dl><dt><a name="Connection-disconnect"><strong>disconnect</strong></a>(self)</dt><dd><tt>Close&nbsp;the&nbsp;stream&nbsp;and&nbsp;socket</tt></dd></dl>

<dl><dt><a name="Connection-disconnectHandler"><strong>disconnectHandler</strong></a>(self, conn)</dt><dd><tt>Called&nbsp;when&nbsp;a&nbsp;Network&nbsp;Error&nbsp;or&nbsp;disconnection&nbsp;occurs.<br>
Designed&nbsp;to&nbsp;be&nbsp;overidden</tt></dd></dl>

<dl><dt><a name="Connection-disconnected"><strong>disconnected</strong></a>(self, conn)</dt><dd><tt>Called&nbsp;when&nbsp;a&nbsp;Network&nbsp;Error&nbsp;or&nbsp;disconnection&nbsp;occurs.</tt></dd></dl>

<dl><dt><a name="Connection-getIncomingID"><strong>getIncomingID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;streams&nbsp;ID</tt></dd></dl>

<dl><dt><a name="Connection-getOutgoingID"><strong>getOutgoingID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;streams&nbsp;ID</tt></dd></dl>

<dl><dt><a name="Connection-log"><strong>log</strong></a>(self, data, inout<font color="#909090">=''</font>)</dt><dd><tt>Logs&nbsp;data&nbsp;to&nbsp;the&nbsp;specified&nbsp;filehandle.&nbsp;Data&nbsp;is&nbsp;time&nbsp;stamped<br>
and&nbsp;prefixed&nbsp;with&nbsp;inout</tt></dd></dl>

<dl><dt><a name="Connection-process"><strong>process</strong></a>(self, timeout<font color="#909090">=0</font>)</dt><dd><tt>Receives&nbsp;incoming&nbsp;data&nbsp;(if&nbsp;any)&nbsp;and&nbsp;processes&nbsp;it.<br>
Waits&nbsp;for&nbsp;data&nbsp;no&nbsp;more&nbsp;than&nbsp;timeout&nbsp;seconds.</tt></dd></dl>

<dl><dt><a name="Connection-read"><strong>read</strong></a>(self)</dt><dd><tt>Reads&nbsp;incoming&nbsp;data.&nbsp;Blocks&nbsp;until&nbsp;done.&nbsp;Calls&nbsp;<a href="#Connection-disconnected">disconnected</a>(self)&nbsp;if&nbsp;appropriate.</tt></dd></dl>

<dl><dt><a name="Connection-timestampLog"><strong>timestampLog</strong></a>(self, timestamp)</dt><dd><tt>Enable&nbsp;or&nbsp;disable&nbsp;the&nbsp;showing&nbsp;of&nbsp;a&nbsp;timestamp&nbsp;in&nbsp;the&nbsp;log.<br>
By&nbsp;default,&nbsp;timestamping&nbsp;is&nbsp;enabled.</tt></dd></dl>

<dl><dt><a name="Connection-write"><strong>write</strong></a>(self, raw_data)</dt><dd><tt>Writes&nbsp;raw&nbsp;outgoing&nbsp;data.&nbsp;Blocks&nbsp;until&nbsp;done.<br>
If&nbsp;supplied&nbsp;data&nbsp;is&nbsp;not&nbsp;unicode&nbsp;string,&nbsp;ENCODING<br>
is&nbsp;used&nbsp;for&nbsp;convertion.&nbsp;Avoid&nbsp;this!<br>
Always&nbsp;send&nbsp;your&nbsp;data&nbsp;as&nbsp;a&nbsp;unicode&nbsp;string.</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#NodeBuilder">xmlstream.NodeBuilder</a>:<br>
<dl><dt><a name="Connection-DEBUG"><strong>DEBUG</strong></a>(self, dup1, dup2<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Connection-getDom"><strong>getDom</strong></a>(self)</dt></dl>

<dl><dt><a name="Connection-handle_data"><strong>handle_data</strong></a>(self, data)</dt><dd><tt>XML&nbsp;Parser&nbsp;callback</tt></dd></dl>

<dl><dt><a name="Connection-unknown_endtag"><strong>unknown_endtag</strong></a>(self, tag)</dt><dd><tt>XML&nbsp;Parser&nbsp;callback</tt></dd></dl>

<dl><dt><a name="Connection-unknown_starttag"><strong>unknown_starttag</strong></a>(self, tag, attrs)</dt><dd><tt>XML&nbsp;Parser&nbsp;callback</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Iq">class <strong>Iq</strong></a>(<a href="jabber.html#Protocol">Protocol</a>)</font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Class&nbsp;for&nbsp;creating&nbsp;and&nbsp;managing&nbsp;jabber&nbsp;&lt;iq&gt;&nbsp;protocol<br>
elements<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="jabber.html#Iq">Iq</a></dd>
<dd><a href="jabber.html#Protocol">Protocol</a></dd>
<dd><a href="xmlstream.html#Node">xmlstream.Node</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="Iq-__init__"><strong>__init__</strong></a>(self, to<font color="#909090">=None</font>, type<font color="#909090">=None</font>, query<font color="#909090">=None</font>, attrs<font color="#909090">=None</font>, frm<font color="#909090">=None</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Iq-getList"><strong>getList</strong></a>(self)</dt><dd><tt>returns&nbsp;the&nbsp;list&nbsp;namespace</tt></dd></dl>

<dl><dt><a name="Iq-getQuery"><strong>getQuery</strong></a>(self)</dt><dd><tt>returns&nbsp;the&nbsp;query&nbsp;namespace</tt></dd></dl>

<dl><dt><a name="Iq-getQueryNode"><strong>getQueryNode</strong></a>(self)</dt><dd><tt>Returns&nbsp;any&nbsp;textual&nbsp;data&nbsp;contained&nbsp;by&nbsp;the&nbsp;query&nbsp;tag</tt></dd></dl>

<dl><dt><a name="Iq-getQueryPayload"><strong>getQueryPayload</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;query's&nbsp;payload&nbsp;as&nbsp;a&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;list</tt></dd></dl>

<dl><dt><a name="Iq-setList"><strong>setList</strong></a>(self, namespace)</dt></dl>

<dl><dt><a name="Iq-setQuery"><strong>setQuery</strong></a>(self, namespace)</dt><dd><tt>Sets&nbsp;a&nbsp;query's&nbsp;namespace,&nbsp;and&nbsp;inserts&nbsp;a&nbsp;query&nbsp;tag&nbsp;if<br>
one&nbsp;doesn't&nbsp;already&nbsp;exist.&nbsp;&nbsp;The&nbsp;resulting&nbsp;query&nbsp;tag<br>
is&nbsp;returned&nbsp;as&nbsp;the&nbsp;function&nbsp;result.</tt></dd></dl>

<dl><dt><a name="Iq-setQueryNode"><strong>setQueryNode</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;textual&nbsp;data&nbsp;contained&nbsp;by&nbsp;the&nbsp;query&nbsp;tag</tt></dd></dl>

<dl><dt><a name="Iq-setQueryPayload"><strong>setQueryPayload</strong></a>(self, payload, add<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;a&nbsp;<a href="#Iq">Iq</a>'s&nbsp;query&nbsp;payload.&nbsp;&nbsp;'payload'&nbsp;can&nbsp;be&nbsp;either&nbsp;a&nbsp;<a href="xmlstream.html#Node">Node</a><br>
structure&nbsp;or&nbsp;a&nbsp;valid&nbsp;xml&nbsp;document.&nbsp;The&nbsp;query&nbsp;tag&nbsp;is&nbsp;automatically<br>
inserted&nbsp;if&nbsp;it&nbsp;doesn't&nbsp;already&nbsp;exist.</tt></dd></dl>

<hr>
Methods inherited from <a href="jabber.html#Protocol">Protocol</a>:<br>
<dl><dt><a name="Iq-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>

<dl><dt><a name="Iq-asNode"><strong>asNode</strong></a>(self)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Iq-fromTo"><strong>fromTo</strong></a>(self)</dt><dd><tt>Swaps&nbsp;the&nbsp;element's&nbsp;from&nbsp;and&nbsp;to&nbsp;attributes.<br>
Note&nbsp;that&nbsp;this&nbsp;is&nbsp;only&nbsp;useful&nbsp;for&nbsp;writing&nbsp;components;&nbsp;if&nbsp;you&nbsp;are<br>
writing&nbsp;a&nbsp;Jabber&nbsp;client&nbsp;you&nbsp;shouldn't&nbsp;use&nbsp;this,&nbsp;because&nbsp;the&nbsp;Jabber<br>
server&nbsp;will&nbsp;set&nbsp;the&nbsp;'from'&nbsp;field&nbsp;automatically.</tt></dd></dl>

<dl><dt><a name="Iq-getError"><strong>getError</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;string,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Iq-getErrorCode"><strong>getErrorCode</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;code,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Iq-getFrom"><strong>getFrom</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'from'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Iq-getID"><strong>getID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'id'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Iq-getTo"><strong>getTo</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'to'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Iq-getType"><strong>getType</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Iq-getX"><strong>getX</strong></a>(self, index<font color="#909090">=0</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;namespace,&nbsp;optionally&nbsp;passed&nbsp;an&nbsp;index&nbsp;if&nbsp;there&nbsp;are<br>
multiple&nbsp;tags.</tt></dd></dl>

<dl><dt><a name="Iq-getXNode"><strong>getXNode</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance.&nbsp;If&nbsp;there&nbsp;are&nbsp;multiple&nbsp;tags<br>
the&nbsp;first&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;is&nbsp;returned.&nbsp;For&nbsp;multiple&nbsp;X&nbsp;nodes&nbsp;use&nbsp;getXNodes<br>
or&nbsp;pass&nbsp;an&nbsp;index&nbsp;integer&nbsp;value&nbsp;or&nbsp;namespace&nbsp;string&nbsp;to&nbsp;getXNode<br>
and&nbsp;if&nbsp;a&nbsp;match&nbsp;is&nbsp;found&nbsp;it&nbsp;will&nbsp;be&nbsp;returned.</tt></dd></dl>

<dl><dt><a name="Iq-getXNodes"><strong>getXNodes</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;list&nbsp;of&nbsp;X&nbsp;nodes.</tt></dd></dl>

<dl><dt><a name="Iq-getXPayload"><strong>getXPayload</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;tags'&nbsp;payload&nbsp;as&nbsp;a&nbsp;list&nbsp;of&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instances.</tt></dd></dl>

<dl><dt><a name="Iq-setError"><strong>setError</strong></a>(self, val, code)</dt><dd><tt>Sets&nbsp;an&nbsp;error&nbsp;string&nbsp;and&nbsp;code</tt></dd></dl>

<dl><dt><a name="Iq-setFrom"><strong>setFrom</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'from'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Iq-setID"><strong>setID</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;ID&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Iq-setTo"><strong>setTo</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'to'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Iq-setType"><strong>setType</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Iq-setX"><strong>setX</strong></a>(self, namespace, index<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;name&nbsp;space&nbsp;of&nbsp;the&nbsp;x&nbsp;tag.&nbsp;It&nbsp;also&nbsp;creates&nbsp;the&nbsp;node<br>
if&nbsp;it&nbsp;doesn't&nbsp;already&nbsp;exist.</tt></dd></dl>

<dl><dt><a name="Iq-setXNode"><strong>setXNode</strong></a>(self, val<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;x&nbsp;tag's&nbsp;data&nbsp;to&nbsp;the&nbsp;given&nbsp;textual&nbsp;value.</tt></dd></dl>

<dl><dt><a name="Iq-setXPayload"><strong>setXPayload</strong></a>(self, payload, namespace<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;Child&nbsp;of&nbsp;an&nbsp;'x'&nbsp;tag.&nbsp;Can&nbsp;be&nbsp;a&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance&nbsp;or&nbsp;an<br>
XML&nbsp;document</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Node">xmlstream.Node</a>:<br>
<dl><dt><a name="Iq-__str__"><strong>__str__</strong></a>(self)</dt></dl>

<dl><dt><a name="Iq-getAttr"><strong>getAttr</strong></a>(self, key)</dt><dd><tt>Get&nbsp;a&nbsp;value&nbsp;for&nbsp;the&nbsp;nodes&nbsp;named&nbsp;attribute.</tt></dd></dl>

<dl><dt><a name="Iq-getChildren"><strong>getChildren</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;nodes&nbsp;children</tt></dd></dl>

<dl><dt><a name="Iq-getData"><strong>getData</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Iq-getDataAsParts"><strong>getDataAsParts</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;node&nbsp;data&nbsp;as&nbsp;an&nbsp;array</tt></dd></dl>

<dl><dt><a name="Iq-getName"><strong>getName</strong></a>(self)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Iq-getNamespace"><strong>getNamespace</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Iq-getParent"><strong>getParent</strong></a>(self)</dt><dd><tt>return&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Iq-getTag"><strong>getTag</strong></a>(self, name, index<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;a&nbsp;child&nbsp;node&nbsp;with&nbsp;tag&nbsp;name.&nbsp;Returns&nbsp;None<br>
if&nbsp;not&nbsp;found.</tt></dd></dl>

<dl><dt><a name="Iq-getTags"><strong>getTags</strong></a>(self, name)</dt><dd><tt>Like&nbsp;getTag&nbsp;but&nbsp;returns&nbsp;a&nbsp;list&nbsp;with&nbsp;matching&nbsp;child&nbsp;nodes</tt></dd></dl>

<dl><dt><a name="Iq-insertData"><strong>insertData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Iq-insertNode"><strong>insertNode</strong></a>(self, node)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;node&nbsp;to&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Iq-insertTag"><strong>insertTag</strong></a>(self, name<font color="#909090">=None</font>, attrs<font color="#909090">={}</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;tag&nbsp;of&nbsp;name&nbsp;'name'&nbsp;to&nbsp;the&nbsp;node.<br>
&nbsp;<br>
Returns&nbsp;the&nbsp;newly&nbsp;created&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Iq-insertXML"><strong>insertXML</strong></a>(self, xml_str)</dt><dd><tt>Add&nbsp;raw&nbsp;xml&nbsp;as&nbsp;a&nbsp;child&nbsp;of&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Iq-putAttr"><strong>putAttr</strong></a>(self, key, val)</dt><dd><tt>Add&nbsp;a&nbsp;name/value&nbsp;attribute&nbsp;to&nbsp;the&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Iq-putData"><strong>putData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Iq-removeTag"><strong>removeTag</strong></a>(self, tag)</dt><dd><tt>Pops&nbsp;out&nbsp;specified&nbsp;child&nbsp;and&nbsp;returns&nbsp;it.</tt></dd></dl>

<dl><dt><a name="Iq-setName"><strong>setName</strong></a>(self, val)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Iq-setNamespace"><strong>setNamespace</strong></a>(self, namespace)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Iq-setParent"><strong>setParent</strong></a>(self, node)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="JID">class <strong>JID</strong></a></font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;Simple&nbsp;class&nbsp;for&nbsp;managing&nbsp;jabber&nbsp;users&nbsp;id's<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="JID-__eq__"><strong>__eq__</strong></a>(self, other)</dt><dd><tt>Returns&nbsp;whether&nbsp;this&nbsp;<a href="#JID">JID</a>&nbsp;is&nbsp;identical&nbsp;to&nbsp;another&nbsp;one.<br>
The&nbsp;"other"&nbsp;can&nbsp;be&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object&nbsp;or&nbsp;a&nbsp;string.</tt></dd></dl>

<dl><dt><a name="JID-__init__"><strong>__init__</strong></a>(self, jid<font color="#909090">=''</font>, node<font color="#909090">=''</font>, domain<font color="#909090">=''</font>, resource<font color="#909090">=''</font>)</dt></dl>

<dl><dt><a name="JID-__repr__"><strong>__repr__</strong></a> = <a href="#JID-__str__">__str__</a>(self)</dt></dl>

<dl><dt><a name="JID-__str__"><strong>__str__</strong></a>(self)</dt></dl>

<dl><dt><a name="JID-getDomain"><strong>getDomain</strong></a>(self)</dt><dd><tt>Returns&nbsp;<a href="#JID">JID</a>&nbsp;domain&nbsp;as&nbsp;string&nbsp;or&nbsp;None&nbsp;if&nbsp;absent</tt></dd></dl>

<dl><dt><a name="JID-getNode"><strong>getNode</strong></a>(self)</dt><dd><tt>Returns&nbsp;<a href="#JID">JID</a>&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;as&nbsp;string</tt></dd></dl>

<dl><dt><a name="JID-getResource"><strong>getResource</strong></a>(self)</dt><dd><tt>Returns&nbsp;<a href="#JID">JID</a>&nbsp;resource&nbsp;as&nbsp;string&nbsp;or&nbsp;None&nbsp;if&nbsp;absent</tt></dd></dl>

<dl><dt><a name="JID-getStripped"><strong>getStripped</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;string&nbsp;with&nbsp;no&nbsp;resource</tt></dd></dl>

<dl><dt><a name="JID-setDomain"><strong>setDomain</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;<a href="#JID">JID</a>&nbsp;domain&nbsp;from&nbsp;string</tt></dd></dl>

<dl><dt><a name="JID-setNode"><strong>setNode</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;<a href="#JID">JID</a>&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;from&nbsp;string</tt></dd></dl>

<dl><dt><a name="JID-setResource"><strong>setResource</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;<a href="#JID">JID</a>&nbsp;resource&nbsp;from&nbsp;string</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Log">class <strong>Log</strong></a>(<a href="jabber.html#Protocol">Protocol</a>)</font></td></tr>
    
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="jabber.html#Log">Log</a></dd>
<dd><a href="jabber.html#Protocol">Protocol</a></dd>
<dd><a href="xmlstream.html#Node">xmlstream.Node</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="Log-__init__"><strong>__init__</strong></a>(self, attrs<font color="#909090">=None</font>, type<font color="#909090">=None</font>, frm<font color="#909090">=None</font>, to<font color="#909090">=None</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt><dd><tt>##&nbsp;eg:&nbsp;&lt;log&nbsp;type='warn'&nbsp;from='component'&gt;Hello&nbsp;<a href="#Log">Log</a>&nbsp;File&lt;/log&gt;</tt></dd></dl>

<dl><dt><a name="Log-getBody"><strong>getBody</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;log&nbsp;message&nbsp;text.</tt></dd></dl>

<dl><dt><a name="Log-setBody"><strong>setBody</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;log&nbsp;message&nbsp;text.</tt></dd></dl>

<hr>
Methods inherited from <a href="jabber.html#Protocol">Protocol</a>:<br>
<dl><dt><a name="Log-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>

<dl><dt><a name="Log-asNode"><strong>asNode</strong></a>(self)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Log-fromTo"><strong>fromTo</strong></a>(self)</dt><dd><tt>Swaps&nbsp;the&nbsp;element's&nbsp;from&nbsp;and&nbsp;to&nbsp;attributes.<br>
Note&nbsp;that&nbsp;this&nbsp;is&nbsp;only&nbsp;useful&nbsp;for&nbsp;writing&nbsp;components;&nbsp;if&nbsp;you&nbsp;are<br>
writing&nbsp;a&nbsp;Jabber&nbsp;client&nbsp;you&nbsp;shouldn't&nbsp;use&nbsp;this,&nbsp;because&nbsp;the&nbsp;Jabber<br>
server&nbsp;will&nbsp;set&nbsp;the&nbsp;'from'&nbsp;field&nbsp;automatically.</tt></dd></dl>

<dl><dt><a name="Log-getError"><strong>getError</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;string,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Log-getErrorCode"><strong>getErrorCode</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;code,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Log-getFrom"><strong>getFrom</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'from'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Log-getID"><strong>getID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'id'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Log-getTo"><strong>getTo</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'to'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Log-getType"><strong>getType</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Log-getX"><strong>getX</strong></a>(self, index<font color="#909090">=0</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;namespace,&nbsp;optionally&nbsp;passed&nbsp;an&nbsp;index&nbsp;if&nbsp;there&nbsp;are<br>
multiple&nbsp;tags.</tt></dd></dl>

<dl><dt><a name="Log-getXNode"><strong>getXNode</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance.&nbsp;If&nbsp;there&nbsp;are&nbsp;multiple&nbsp;tags<br>
the&nbsp;first&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;is&nbsp;returned.&nbsp;For&nbsp;multiple&nbsp;X&nbsp;nodes&nbsp;use&nbsp;getXNodes<br>
or&nbsp;pass&nbsp;an&nbsp;index&nbsp;integer&nbsp;value&nbsp;or&nbsp;namespace&nbsp;string&nbsp;to&nbsp;getXNode<br>
and&nbsp;if&nbsp;a&nbsp;match&nbsp;is&nbsp;found&nbsp;it&nbsp;will&nbsp;be&nbsp;returned.</tt></dd></dl>

<dl><dt><a name="Log-getXNodes"><strong>getXNodes</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;list&nbsp;of&nbsp;X&nbsp;nodes.</tt></dd></dl>

<dl><dt><a name="Log-getXPayload"><strong>getXPayload</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;tags'&nbsp;payload&nbsp;as&nbsp;a&nbsp;list&nbsp;of&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instances.</tt></dd></dl>

<dl><dt><a name="Log-setError"><strong>setError</strong></a>(self, val, code)</dt><dd><tt>Sets&nbsp;an&nbsp;error&nbsp;string&nbsp;and&nbsp;code</tt></dd></dl>

<dl><dt><a name="Log-setFrom"><strong>setFrom</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'from'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Log-setID"><strong>setID</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;ID&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Log-setTo"><strong>setTo</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'to'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Log-setType"><strong>setType</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Log-setX"><strong>setX</strong></a>(self, namespace, index<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;name&nbsp;space&nbsp;of&nbsp;the&nbsp;x&nbsp;tag.&nbsp;It&nbsp;also&nbsp;creates&nbsp;the&nbsp;node<br>
if&nbsp;it&nbsp;doesn't&nbsp;already&nbsp;exist.</tt></dd></dl>

<dl><dt><a name="Log-setXNode"><strong>setXNode</strong></a>(self, val<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;x&nbsp;tag's&nbsp;data&nbsp;to&nbsp;the&nbsp;given&nbsp;textual&nbsp;value.</tt></dd></dl>

<dl><dt><a name="Log-setXPayload"><strong>setXPayload</strong></a>(self, payload, namespace<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;Child&nbsp;of&nbsp;an&nbsp;'x'&nbsp;tag.&nbsp;Can&nbsp;be&nbsp;a&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance&nbsp;or&nbsp;an<br>
XML&nbsp;document</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Node">xmlstream.Node</a>:<br>
<dl><dt><a name="Log-__str__"><strong>__str__</strong></a>(self)</dt></dl>

<dl><dt><a name="Log-getAttr"><strong>getAttr</strong></a>(self, key)</dt><dd><tt>Get&nbsp;a&nbsp;value&nbsp;for&nbsp;the&nbsp;nodes&nbsp;named&nbsp;attribute.</tt></dd></dl>

<dl><dt><a name="Log-getChildren"><strong>getChildren</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;nodes&nbsp;children</tt></dd></dl>

<dl><dt><a name="Log-getData"><strong>getData</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Log-getDataAsParts"><strong>getDataAsParts</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;node&nbsp;data&nbsp;as&nbsp;an&nbsp;array</tt></dd></dl>

<dl><dt><a name="Log-getName"><strong>getName</strong></a>(self)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Log-getNamespace"><strong>getNamespace</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Log-getParent"><strong>getParent</strong></a>(self)</dt><dd><tt>return&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Log-getTag"><strong>getTag</strong></a>(self, name, index<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;a&nbsp;child&nbsp;node&nbsp;with&nbsp;tag&nbsp;name.&nbsp;Returns&nbsp;None<br>
if&nbsp;not&nbsp;found.</tt></dd></dl>

<dl><dt><a name="Log-getTags"><strong>getTags</strong></a>(self, name)</dt><dd><tt>Like&nbsp;getTag&nbsp;but&nbsp;returns&nbsp;a&nbsp;list&nbsp;with&nbsp;matching&nbsp;child&nbsp;nodes</tt></dd></dl>

<dl><dt><a name="Log-insertData"><strong>insertData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Log-insertNode"><strong>insertNode</strong></a>(self, node)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;node&nbsp;to&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Log-insertTag"><strong>insertTag</strong></a>(self, name<font color="#909090">=None</font>, attrs<font color="#909090">={}</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;tag&nbsp;of&nbsp;name&nbsp;'name'&nbsp;to&nbsp;the&nbsp;node.<br>
&nbsp;<br>
Returns&nbsp;the&nbsp;newly&nbsp;created&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Log-insertXML"><strong>insertXML</strong></a>(self, xml_str)</dt><dd><tt>Add&nbsp;raw&nbsp;xml&nbsp;as&nbsp;a&nbsp;child&nbsp;of&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Log-putAttr"><strong>putAttr</strong></a>(self, key, val)</dt><dd><tt>Add&nbsp;a&nbsp;name/value&nbsp;attribute&nbsp;to&nbsp;the&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Log-putData"><strong>putData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Log-removeTag"><strong>removeTag</strong></a>(self, tag)</dt><dd><tt>Pops&nbsp;out&nbsp;specified&nbsp;child&nbsp;and&nbsp;returns&nbsp;it.</tt></dd></dl>

<dl><dt><a name="Log-setName"><strong>setName</strong></a>(self, val)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Log-setNamespace"><strong>setNamespace</strong></a>(self, namespace)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Log-setParent"><strong>setParent</strong></a>(self, node)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Message">class <strong>Message</strong></a>(<a href="jabber.html#Protocol">Protocol</a>)</font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Builds&nbsp;on&nbsp;the&nbsp;<a href="#Protocol">Protocol</a>&nbsp;class&nbsp;to&nbsp;provide&nbsp;an&nbsp;interface&nbsp;for&nbsp;sending<br>
message&nbsp;protocol&nbsp;elements<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="jabber.html#Message">Message</a></dd>
<dd><a href="jabber.html#Protocol">Protocol</a></dd>
<dd><a href="xmlstream.html#Node">xmlstream.Node</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="Message-__init__"><strong>__init__</strong></a>(self, to<font color="#909090">=None</font>, body<font color="#909090">=None</font>, type<font color="#909090">=None</font>, subject<font color="#909090">=None</font>, attrs<font color="#909090">=None</font>, frm<font color="#909090">=None</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Message-buildReply"><strong>buildReply</strong></a>(self, reply_txt<font color="#909090">=''</font>)</dt><dd><tt>Returns&nbsp;a&nbsp;new&nbsp;<a href="#Message">Message</a>&nbsp;object&nbsp;as&nbsp;a&nbsp;reply&nbsp;to&nbsp;itself.<br>
The&nbsp;reply&nbsp;message&nbsp;has&nbsp;the&nbsp;'to',&nbsp;'type'&nbsp;and&nbsp;'thread'&nbsp;attributes<br>
automatically&nbsp;set.</tt></dd></dl>

<dl><dt><a name="Message-build_reply"><strong>build_reply</strong></a>(self, reply_txt<font color="#909090">=''</font>)</dt></dl>

<dl><dt><a name="Message-getBody"><strong>getBody</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;message&nbsp;body.</tt></dd></dl>

<dl><dt><a name="Message-getSubject"><strong>getSubject</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;message's&nbsp;subject.</tt></dd></dl>

<dl><dt><a name="Message-getThread"><strong>getThread</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;message's&nbsp;thread&nbsp;ID.</tt></dd></dl>

<dl><dt><a name="Message-getTimestamp"><strong>getTimestamp</strong></a>(self)</dt></dl>

<dl><dt><a name="Message-setBody"><strong>setBody</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;message&nbsp;body&nbsp;text.</tt></dd></dl>

<dl><dt><a name="Message-setSubject"><strong>setSubject</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;message&nbsp;subject&nbsp;text.</tt></dd></dl>

<dl><dt><a name="Message-setThread"><strong>setThread</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;message&nbsp;thread&nbsp;ID.</tt></dd></dl>

<dl><dt><a name="Message-setTimestamp"><strong>setTimestamp</strong></a>(self, val<font color="#909090">=None</font>)</dt></dl>

<hr>
Methods inherited from <a href="jabber.html#Protocol">Protocol</a>:<br>
<dl><dt><a name="Message-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>

<dl><dt><a name="Message-asNode"><strong>asNode</strong></a>(self)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Message-fromTo"><strong>fromTo</strong></a>(self)</dt><dd><tt>Swaps&nbsp;the&nbsp;element's&nbsp;from&nbsp;and&nbsp;to&nbsp;attributes.<br>
Note&nbsp;that&nbsp;this&nbsp;is&nbsp;only&nbsp;useful&nbsp;for&nbsp;writing&nbsp;components;&nbsp;if&nbsp;you&nbsp;are<br>
writing&nbsp;a&nbsp;Jabber&nbsp;client&nbsp;you&nbsp;shouldn't&nbsp;use&nbsp;this,&nbsp;because&nbsp;the&nbsp;Jabber<br>
server&nbsp;will&nbsp;set&nbsp;the&nbsp;'from'&nbsp;field&nbsp;automatically.</tt></dd></dl>

<dl><dt><a name="Message-getError"><strong>getError</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;string,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Message-getErrorCode"><strong>getErrorCode</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;code,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Message-getFrom"><strong>getFrom</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'from'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Message-getID"><strong>getID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'id'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Message-getTo"><strong>getTo</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'to'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Message-getType"><strong>getType</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Message-getX"><strong>getX</strong></a>(self, index<font color="#909090">=0</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;namespace,&nbsp;optionally&nbsp;passed&nbsp;an&nbsp;index&nbsp;if&nbsp;there&nbsp;are<br>
multiple&nbsp;tags.</tt></dd></dl>

<dl><dt><a name="Message-getXNode"><strong>getXNode</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance.&nbsp;If&nbsp;there&nbsp;are&nbsp;multiple&nbsp;tags<br>
the&nbsp;first&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;is&nbsp;returned.&nbsp;For&nbsp;multiple&nbsp;X&nbsp;nodes&nbsp;use&nbsp;getXNodes<br>
or&nbsp;pass&nbsp;an&nbsp;index&nbsp;integer&nbsp;value&nbsp;or&nbsp;namespace&nbsp;string&nbsp;to&nbsp;getXNode<br>
and&nbsp;if&nbsp;a&nbsp;match&nbsp;is&nbsp;found&nbsp;it&nbsp;will&nbsp;be&nbsp;returned.</tt></dd></dl>

<dl><dt><a name="Message-getXNodes"><strong>getXNodes</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;list&nbsp;of&nbsp;X&nbsp;nodes.</tt></dd></dl>

<dl><dt><a name="Message-getXPayload"><strong>getXPayload</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;tags'&nbsp;payload&nbsp;as&nbsp;a&nbsp;list&nbsp;of&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instances.</tt></dd></dl>

<dl><dt><a name="Message-setError"><strong>setError</strong></a>(self, val, code)</dt><dd><tt>Sets&nbsp;an&nbsp;error&nbsp;string&nbsp;and&nbsp;code</tt></dd></dl>

<dl><dt><a name="Message-setFrom"><strong>setFrom</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'from'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Message-setID"><strong>setID</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;ID&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Message-setTo"><strong>setTo</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'to'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Message-setType"><strong>setType</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Message-setX"><strong>setX</strong></a>(self, namespace, index<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;name&nbsp;space&nbsp;of&nbsp;the&nbsp;x&nbsp;tag.&nbsp;It&nbsp;also&nbsp;creates&nbsp;the&nbsp;node<br>
if&nbsp;it&nbsp;doesn't&nbsp;already&nbsp;exist.</tt></dd></dl>

<dl><dt><a name="Message-setXNode"><strong>setXNode</strong></a>(self, val<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;x&nbsp;tag's&nbsp;data&nbsp;to&nbsp;the&nbsp;given&nbsp;textual&nbsp;value.</tt></dd></dl>

<dl><dt><a name="Message-setXPayload"><strong>setXPayload</strong></a>(self, payload, namespace<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;Child&nbsp;of&nbsp;an&nbsp;'x'&nbsp;tag.&nbsp;Can&nbsp;be&nbsp;a&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance&nbsp;or&nbsp;an<br>
XML&nbsp;document</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Node">xmlstream.Node</a>:<br>
<dl><dt><a name="Message-__str__"><strong>__str__</strong></a>(self)</dt></dl>

<dl><dt><a name="Message-getAttr"><strong>getAttr</strong></a>(self, key)</dt><dd><tt>Get&nbsp;a&nbsp;value&nbsp;for&nbsp;the&nbsp;nodes&nbsp;named&nbsp;attribute.</tt></dd></dl>

<dl><dt><a name="Message-getChildren"><strong>getChildren</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;nodes&nbsp;children</tt></dd></dl>

<dl><dt><a name="Message-getData"><strong>getData</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Message-getDataAsParts"><strong>getDataAsParts</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;node&nbsp;data&nbsp;as&nbsp;an&nbsp;array</tt></dd></dl>

<dl><dt><a name="Message-getName"><strong>getName</strong></a>(self)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Message-getNamespace"><strong>getNamespace</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Message-getParent"><strong>getParent</strong></a>(self)</dt><dd><tt>return&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Message-getTag"><strong>getTag</strong></a>(self, name, index<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;a&nbsp;child&nbsp;node&nbsp;with&nbsp;tag&nbsp;name.&nbsp;Returns&nbsp;None<br>
if&nbsp;not&nbsp;found.</tt></dd></dl>

<dl><dt><a name="Message-getTags"><strong>getTags</strong></a>(self, name)</dt><dd><tt>Like&nbsp;getTag&nbsp;but&nbsp;returns&nbsp;a&nbsp;list&nbsp;with&nbsp;matching&nbsp;child&nbsp;nodes</tt></dd></dl>

<dl><dt><a name="Message-insertData"><strong>insertData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Message-insertNode"><strong>insertNode</strong></a>(self, node)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;node&nbsp;to&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Message-insertTag"><strong>insertTag</strong></a>(self, name<font color="#909090">=None</font>, attrs<font color="#909090">={}</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;tag&nbsp;of&nbsp;name&nbsp;'name'&nbsp;to&nbsp;the&nbsp;node.<br>
&nbsp;<br>
Returns&nbsp;the&nbsp;newly&nbsp;created&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Message-insertXML"><strong>insertXML</strong></a>(self, xml_str)</dt><dd><tt>Add&nbsp;raw&nbsp;xml&nbsp;as&nbsp;a&nbsp;child&nbsp;of&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Message-putAttr"><strong>putAttr</strong></a>(self, key, val)</dt><dd><tt>Add&nbsp;a&nbsp;name/value&nbsp;attribute&nbsp;to&nbsp;the&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Message-putData"><strong>putData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Message-removeTag"><strong>removeTag</strong></a>(self, tag)</dt><dd><tt>Pops&nbsp;out&nbsp;specified&nbsp;child&nbsp;and&nbsp;returns&nbsp;it.</tt></dd></dl>

<dl><dt><a name="Message-setName"><strong>setName</strong></a>(self, val)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Message-setNamespace"><strong>setNamespace</strong></a>(self, namespace)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Message-setParent"><strong>setParent</strong></a>(self, node)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="NodeProcessed">class <strong>NodeProcessed</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
    
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="NodeProcessed-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>

<dl><dt><a name="NodeProcessed-__init__"><strong>__init__</strong></a>(...)</dt></dl>

<dl><dt><a name="NodeProcessed-__str__"><strong>__str__</strong></a>(...)</dt></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Presence">class <strong>Presence</strong></a>(<a href="jabber.html#Protocol">Protocol</a>)</font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Class&nbsp;for&nbsp;creating&nbsp;and&nbsp;managing&nbsp;jabber&nbsp;&lt;presence&gt;&nbsp;protocol<br>
elements<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="jabber.html#Presence">Presence</a></dd>
<dd><a href="jabber.html#Protocol">Protocol</a></dd>
<dd><a href="xmlstream.html#Node">xmlstream.Node</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="Presence-__init__"><strong>__init__</strong></a>(self, to<font color="#909090">=None</font>, type<font color="#909090">=None</font>, priority<font color="#909090">=None</font>, show<font color="#909090">=None</font>, status<font color="#909090">=None</font>, attrs<font color="#909090">=None</font>, frm<font color="#909090">=None</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Presence-getPriority"><strong>getPriority</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;presence&nbsp;priority</tt></dd></dl>

<dl><dt><a name="Presence-getShow"><strong>getShow</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;presence&nbsp;show</tt></dd></dl>

<dl><dt><a name="Presence-getStatus"><strong>getStatus</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;presence&nbsp;status</tt></dd></dl>

<dl><dt><a name="Presence-setPriority"><strong>setPriority</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;presence&nbsp;priority</tt></dd></dl>

<dl><dt><a name="Presence-setShow"><strong>setShow</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;presence&nbsp;show</tt></dd></dl>

<dl><dt><a name="Presence-setStatus"><strong>setStatus</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;presence&nbsp;status</tt></dd></dl>

<hr>
Methods inherited from <a href="jabber.html#Protocol">Protocol</a>:<br>
<dl><dt><a name="Presence-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>

<dl><dt><a name="Presence-asNode"><strong>asNode</strong></a>(self)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Presence-fromTo"><strong>fromTo</strong></a>(self)</dt><dd><tt>Swaps&nbsp;the&nbsp;element's&nbsp;from&nbsp;and&nbsp;to&nbsp;attributes.<br>
Note&nbsp;that&nbsp;this&nbsp;is&nbsp;only&nbsp;useful&nbsp;for&nbsp;writing&nbsp;components;&nbsp;if&nbsp;you&nbsp;are<br>
writing&nbsp;a&nbsp;Jabber&nbsp;client&nbsp;you&nbsp;shouldn't&nbsp;use&nbsp;this,&nbsp;because&nbsp;the&nbsp;Jabber<br>
server&nbsp;will&nbsp;set&nbsp;the&nbsp;'from'&nbsp;field&nbsp;automatically.</tt></dd></dl>

<dl><dt><a name="Presence-getError"><strong>getError</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;string,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Presence-getErrorCode"><strong>getErrorCode</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;code,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Presence-getFrom"><strong>getFrom</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'from'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Presence-getID"><strong>getID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'id'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Presence-getTo"><strong>getTo</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'to'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Presence-getType"><strong>getType</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Presence-getX"><strong>getX</strong></a>(self, index<font color="#909090">=0</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;namespace,&nbsp;optionally&nbsp;passed&nbsp;an&nbsp;index&nbsp;if&nbsp;there&nbsp;are<br>
multiple&nbsp;tags.</tt></dd></dl>

<dl><dt><a name="Presence-getXNode"><strong>getXNode</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance.&nbsp;If&nbsp;there&nbsp;are&nbsp;multiple&nbsp;tags<br>
the&nbsp;first&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;is&nbsp;returned.&nbsp;For&nbsp;multiple&nbsp;X&nbsp;nodes&nbsp;use&nbsp;getXNodes<br>
or&nbsp;pass&nbsp;an&nbsp;index&nbsp;integer&nbsp;value&nbsp;or&nbsp;namespace&nbsp;string&nbsp;to&nbsp;getXNode<br>
and&nbsp;if&nbsp;a&nbsp;match&nbsp;is&nbsp;found&nbsp;it&nbsp;will&nbsp;be&nbsp;returned.</tt></dd></dl>

<dl><dt><a name="Presence-getXNodes"><strong>getXNodes</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;list&nbsp;of&nbsp;X&nbsp;nodes.</tt></dd></dl>

<dl><dt><a name="Presence-getXPayload"><strong>getXPayload</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;tags'&nbsp;payload&nbsp;as&nbsp;a&nbsp;list&nbsp;of&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instances.</tt></dd></dl>

<dl><dt><a name="Presence-setError"><strong>setError</strong></a>(self, val, code)</dt><dd><tt>Sets&nbsp;an&nbsp;error&nbsp;string&nbsp;and&nbsp;code</tt></dd></dl>

<dl><dt><a name="Presence-setFrom"><strong>setFrom</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'from'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Presence-setID"><strong>setID</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;ID&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Presence-setTo"><strong>setTo</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'to'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Presence-setType"><strong>setType</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Presence-setX"><strong>setX</strong></a>(self, namespace, index<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;name&nbsp;space&nbsp;of&nbsp;the&nbsp;x&nbsp;tag.&nbsp;It&nbsp;also&nbsp;creates&nbsp;the&nbsp;node<br>
if&nbsp;it&nbsp;doesn't&nbsp;already&nbsp;exist.</tt></dd></dl>

<dl><dt><a name="Presence-setXNode"><strong>setXNode</strong></a>(self, val<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;x&nbsp;tag's&nbsp;data&nbsp;to&nbsp;the&nbsp;given&nbsp;textual&nbsp;value.</tt></dd></dl>

<dl><dt><a name="Presence-setXPayload"><strong>setXPayload</strong></a>(self, payload, namespace<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;Child&nbsp;of&nbsp;an&nbsp;'x'&nbsp;tag.&nbsp;Can&nbsp;be&nbsp;a&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance&nbsp;or&nbsp;an<br>
XML&nbsp;document</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Node">xmlstream.Node</a>:<br>
<dl><dt><a name="Presence-__str__"><strong>__str__</strong></a>(self)</dt></dl>

<dl><dt><a name="Presence-getAttr"><strong>getAttr</strong></a>(self, key)</dt><dd><tt>Get&nbsp;a&nbsp;value&nbsp;for&nbsp;the&nbsp;nodes&nbsp;named&nbsp;attribute.</tt></dd></dl>

<dl><dt><a name="Presence-getChildren"><strong>getChildren</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;nodes&nbsp;children</tt></dd></dl>

<dl><dt><a name="Presence-getData"><strong>getData</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Presence-getDataAsParts"><strong>getDataAsParts</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;node&nbsp;data&nbsp;as&nbsp;an&nbsp;array</tt></dd></dl>

<dl><dt><a name="Presence-getName"><strong>getName</strong></a>(self)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Presence-getNamespace"><strong>getNamespace</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Presence-getParent"><strong>getParent</strong></a>(self)</dt><dd><tt>return&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Presence-getTag"><strong>getTag</strong></a>(self, name, index<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;a&nbsp;child&nbsp;node&nbsp;with&nbsp;tag&nbsp;name.&nbsp;Returns&nbsp;None<br>
if&nbsp;not&nbsp;found.</tt></dd></dl>

<dl><dt><a name="Presence-getTags"><strong>getTags</strong></a>(self, name)</dt><dd><tt>Like&nbsp;getTag&nbsp;but&nbsp;returns&nbsp;a&nbsp;list&nbsp;with&nbsp;matching&nbsp;child&nbsp;nodes</tt></dd></dl>

<dl><dt><a name="Presence-insertData"><strong>insertData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Presence-insertNode"><strong>insertNode</strong></a>(self, node)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;node&nbsp;to&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Presence-insertTag"><strong>insertTag</strong></a>(self, name<font color="#909090">=None</font>, attrs<font color="#909090">={}</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;tag&nbsp;of&nbsp;name&nbsp;'name'&nbsp;to&nbsp;the&nbsp;node.<br>
&nbsp;<br>
Returns&nbsp;the&nbsp;newly&nbsp;created&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Presence-insertXML"><strong>insertXML</strong></a>(self, xml_str)</dt><dd><tt>Add&nbsp;raw&nbsp;xml&nbsp;as&nbsp;a&nbsp;child&nbsp;of&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Presence-putAttr"><strong>putAttr</strong></a>(self, key, val)</dt><dd><tt>Add&nbsp;a&nbsp;name/value&nbsp;attribute&nbsp;to&nbsp;the&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Presence-putData"><strong>putData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Presence-removeTag"><strong>removeTag</strong></a>(self, tag)</dt><dd><tt>Pops&nbsp;out&nbsp;specified&nbsp;child&nbsp;and&nbsp;returns&nbsp;it.</tt></dd></dl>

<dl><dt><a name="Presence-setName"><strong>setName</strong></a>(self, val)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Presence-setNamespace"><strong>setNamespace</strong></a>(self, namespace)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Presence-setParent"><strong>setParent</strong></a>(self, node)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Protocol">class <strong>Protocol</strong></a>(<a href="xmlstream.html#Node">xmlstream.Node</a>)</font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Base&nbsp;class&nbsp;for&nbsp;jabber&nbsp;'protocol&nbsp;elements'&nbsp;-&nbsp;messages,&nbsp;presences&nbsp;and&nbsp;iqs.<br>
Implements&nbsp;methods&nbsp;that&nbsp;are&nbsp;common&nbsp;to&nbsp;all&nbsp;these<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Protocol-__init__"><strong>__init__</strong></a>(self, name<font color="#909090">=None</font>, to<font color="#909090">=None</font>, type<font color="#909090">=None</font>, attrs<font color="#909090">=None</font>, frm<font color="#909090">=None</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt></dl>

<dl><dt><a name="Protocol-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>

<dl><dt><a name="Protocol-asNode"><strong>asNode</strong></a>(self)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="Protocol-fromTo"><strong>fromTo</strong></a>(self)</dt><dd><tt>Swaps&nbsp;the&nbsp;element's&nbsp;from&nbsp;and&nbsp;to&nbsp;attributes.<br>
Note&nbsp;that&nbsp;this&nbsp;is&nbsp;only&nbsp;useful&nbsp;for&nbsp;writing&nbsp;components;&nbsp;if&nbsp;you&nbsp;are<br>
writing&nbsp;a&nbsp;Jabber&nbsp;client&nbsp;you&nbsp;shouldn't&nbsp;use&nbsp;this,&nbsp;because&nbsp;the&nbsp;Jabber<br>
server&nbsp;will&nbsp;set&nbsp;the&nbsp;'from'&nbsp;field&nbsp;automatically.</tt></dd></dl>

<dl><dt><a name="Protocol-getError"><strong>getError</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;string,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Protocol-getErrorCode"><strong>getErrorCode</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;code,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="Protocol-getFrom"><strong>getFrom</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'from'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Protocol-getID"><strong>getID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'id'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Protocol-getTo"><strong>getTo</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'to'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Protocol-getType"><strong>getType</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="Protocol-getX"><strong>getX</strong></a>(self, index<font color="#909090">=0</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;namespace,&nbsp;optionally&nbsp;passed&nbsp;an&nbsp;index&nbsp;if&nbsp;there&nbsp;are<br>
multiple&nbsp;tags.</tt></dd></dl>

<dl><dt><a name="Protocol-getXNode"><strong>getXNode</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance.&nbsp;If&nbsp;there&nbsp;are&nbsp;multiple&nbsp;tags<br>
the&nbsp;first&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;is&nbsp;returned.&nbsp;For&nbsp;multiple&nbsp;X&nbsp;nodes&nbsp;use&nbsp;getXNodes<br>
or&nbsp;pass&nbsp;an&nbsp;index&nbsp;integer&nbsp;value&nbsp;or&nbsp;namespace&nbsp;string&nbsp;to&nbsp;getXNode<br>
and&nbsp;if&nbsp;a&nbsp;match&nbsp;is&nbsp;found&nbsp;it&nbsp;will&nbsp;be&nbsp;returned.</tt></dd></dl>

<dl><dt><a name="Protocol-getXNodes"><strong>getXNodes</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;list&nbsp;of&nbsp;X&nbsp;nodes.</tt></dd></dl>

<dl><dt><a name="Protocol-getXPayload"><strong>getXPayload</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;tags'&nbsp;payload&nbsp;as&nbsp;a&nbsp;list&nbsp;of&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instances.</tt></dd></dl>

<dl><dt><a name="Protocol-setError"><strong>setError</strong></a>(self, val, code)</dt><dd><tt>Sets&nbsp;an&nbsp;error&nbsp;string&nbsp;and&nbsp;code</tt></dd></dl>

<dl><dt><a name="Protocol-setFrom"><strong>setFrom</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'from'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Protocol-setID"><strong>setID</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;ID&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Protocol-setTo"><strong>setTo</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'to'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="Protocol-setType"><strong>setType</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="Protocol-setX"><strong>setX</strong></a>(self, namespace, index<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;name&nbsp;space&nbsp;of&nbsp;the&nbsp;x&nbsp;tag.&nbsp;It&nbsp;also&nbsp;creates&nbsp;the&nbsp;node<br>
if&nbsp;it&nbsp;doesn't&nbsp;already&nbsp;exist.</tt></dd></dl>

<dl><dt><a name="Protocol-setXNode"><strong>setXNode</strong></a>(self, val<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;x&nbsp;tag's&nbsp;data&nbsp;to&nbsp;the&nbsp;given&nbsp;textual&nbsp;value.</tt></dd></dl>

<dl><dt><a name="Protocol-setXPayload"><strong>setXPayload</strong></a>(self, payload, namespace<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;Child&nbsp;of&nbsp;an&nbsp;'x'&nbsp;tag.&nbsp;Can&nbsp;be&nbsp;a&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance&nbsp;or&nbsp;an<br>
XML&nbsp;document</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Node">xmlstream.Node</a>:<br>
<dl><dt><a name="Protocol-__str__"><strong>__str__</strong></a>(self)</dt></dl>

<dl><dt><a name="Protocol-getAttr"><strong>getAttr</strong></a>(self, key)</dt><dd><tt>Get&nbsp;a&nbsp;value&nbsp;for&nbsp;the&nbsp;nodes&nbsp;named&nbsp;attribute.</tt></dd></dl>

<dl><dt><a name="Protocol-getChildren"><strong>getChildren</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;nodes&nbsp;children</tt></dd></dl>

<dl><dt><a name="Protocol-getData"><strong>getData</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Protocol-getDataAsParts"><strong>getDataAsParts</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;node&nbsp;data&nbsp;as&nbsp;an&nbsp;array</tt></dd></dl>

<dl><dt><a name="Protocol-getName"><strong>getName</strong></a>(self)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Protocol-getNamespace"><strong>getNamespace</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Protocol-getParent"><strong>getParent</strong></a>(self)</dt><dd><tt>return&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Protocol-getTag"><strong>getTag</strong></a>(self, name, index<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;a&nbsp;child&nbsp;node&nbsp;with&nbsp;tag&nbsp;name.&nbsp;Returns&nbsp;None<br>
if&nbsp;not&nbsp;found.</tt></dd></dl>

<dl><dt><a name="Protocol-getTags"><strong>getTags</strong></a>(self, name)</dt><dd><tt>Like&nbsp;getTag&nbsp;but&nbsp;returns&nbsp;a&nbsp;list&nbsp;with&nbsp;matching&nbsp;child&nbsp;nodes</tt></dd></dl>

<dl><dt><a name="Protocol-insertData"><strong>insertData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Protocol-insertNode"><strong>insertNode</strong></a>(self, node)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;node&nbsp;to&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Protocol-insertTag"><strong>insertTag</strong></a>(self, name<font color="#909090">=None</font>, attrs<font color="#909090">={}</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;tag&nbsp;of&nbsp;name&nbsp;'name'&nbsp;to&nbsp;the&nbsp;node.<br>
&nbsp;<br>
Returns&nbsp;the&nbsp;newly&nbsp;created&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Protocol-insertXML"><strong>insertXML</strong></a>(self, xml_str)</dt><dd><tt>Add&nbsp;raw&nbsp;xml&nbsp;as&nbsp;a&nbsp;child&nbsp;of&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="Protocol-putAttr"><strong>putAttr</strong></a>(self, key, val)</dt><dd><tt>Add&nbsp;a&nbsp;name/value&nbsp;attribute&nbsp;to&nbsp;the&nbsp;node.</tt></dd></dl>

<dl><dt><a name="Protocol-putData"><strong>putData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="Protocol-removeTag"><strong>removeTag</strong></a>(self, tag)</dt><dd><tt>Pops&nbsp;out&nbsp;specified&nbsp;child&nbsp;and&nbsp;returns&nbsp;it.</tt></dd></dl>

<dl><dt><a name="Protocol-setName"><strong>setName</strong></a>(self, val)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="Protocol-setNamespace"><strong>setNamespace</strong></a>(self, namespace)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="Protocol-setParent"><strong>setParent</strong></a>(self, node)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Roster">class <strong>Roster</strong></a></font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;Class&nbsp;for&nbsp;simplifying&nbsp;roster&nbsp;management.&nbsp;Also&nbsp;tracks&nbsp;roster<br>
item&nbsp;availability.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Roster-__init__"><strong>__init__</strong></a>(self)</dt></dl>

<dl><dt><a name="Roster-getAsk"><strong>getAsk</strong></a>(self, jid)</dt><dd><tt>Returns&nbsp;the&nbsp;'ask'&nbsp;status&nbsp;for&nbsp;a&nbsp;<a href="#Roster">Roster</a>&nbsp;item&nbsp;with&nbsp;the&nbsp;given&nbsp;jid.</tt></dd></dl>

<dl><dt><a name="Roster-getGroups"><strong>getGroups</strong></a>(self, jid)</dt><dd><tt>Returns&nbsp;the&nbsp;lsit&nbsp;of&nbsp;groups&nbsp;associated&nbsp;with&nbsp;the&nbsp;given&nbsp;roster&nbsp;item.</tt></dd></dl>

<dl><dt><a name="Roster-getJIDs"><strong>getJIDs</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;list&nbsp;of&nbsp;JIDs&nbsp;stored&nbsp;within&nbsp;the&nbsp;roster.&nbsp;&nbsp;Each&nbsp;entry&nbsp;in&nbsp;the<br>
list&nbsp;is&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="Roster-getName"><strong>getName</strong></a>(self, jid)</dt><dd><tt>Returns&nbsp;the&nbsp;'name'&nbsp;for&nbsp;a&nbsp;<a href="#Roster">Roster</a>&nbsp;item&nbsp;with&nbsp;the&nbsp;given&nbsp;jid.</tt></dd></dl>

<dl><dt><a name="Roster-getOnline"><strong>getOnline</strong></a>(self, jid)</dt><dd><tt>Returns&nbsp;the&nbsp;'online'&nbsp;status&nbsp;for&nbsp;a&nbsp;<a href="#Roster">Roster</a>&nbsp;item&nbsp;with&nbsp;the&nbsp;given&nbsp;jid.</tt></dd></dl>

<dl><dt><a name="Roster-getRaw"><strong>getRaw</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;internal&nbsp;data&nbsp;representation&nbsp;of&nbsp;the&nbsp;roster.</tt></dd></dl>

<dl><dt><a name="Roster-getShow"><strong>getShow</strong></a>(self, jid)</dt><dd><tt>Returns&nbsp;the&nbsp;'show'&nbsp;value&nbsp;for&nbsp;a&nbsp;<a href="#Roster">Roster</a>&nbsp;item&nbsp;with&nbsp;the&nbsp;given&nbsp;jid.</tt></dd></dl>

<dl><dt><a name="Roster-getStatus"><strong>getStatus</strong></a>(self, jid)</dt><dd><tt>Returns&nbsp;the&nbsp;'status'&nbsp;value&nbsp;for&nbsp;a&nbsp;<a href="#Roster">Roster</a>&nbsp;item&nbsp;with&nbsp;the&nbsp;given&nbsp;jid.</tt></dd></dl>

<dl><dt><a name="Roster-getSub"><strong>getSub</strong></a>(self, jid)</dt><dd><tt>Returns&nbsp;the&nbsp;'subscription'&nbsp;status&nbsp;for&nbsp;a&nbsp;<a href="#Roster">Roster</a>&nbsp;item&nbsp;with&nbsp;the&nbsp;given<br>
jid.</tt></dd></dl>

<dl><dt><a name="Roster-getSummary"><strong>getSummary</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;summary&nbsp;of&nbsp;the&nbsp;roster's&nbsp;contents.&nbsp;&nbsp;The&nbsp;returned&nbsp;value&nbsp;is&nbsp;a<br>
dictionary&nbsp;mapping&nbsp;the&nbsp;basic&nbsp;(no&nbsp;resource)&nbsp;JIDs&nbsp;to&nbsp;their&nbsp;current<br>
availability&nbsp;status&nbsp;(online,&nbsp;offline,&nbsp;pending).</tt></dd></dl>

<dl><dt><a name="Roster-isOnline"><strong>isOnline</strong></a>(self, jid)</dt><dd><tt>Returns&nbsp;True&nbsp;if&nbsp;the&nbsp;given&nbsp;jid&nbsp;is&nbsp;online,&nbsp;False&nbsp;if&nbsp;not.</tt></dd></dl>

<dl><dt><a name="Roster-setListener"><strong>setListener</strong></a>(self, listener)</dt><dd><tt>Set&nbsp;a&nbsp;listener&nbsp;function&nbsp;to&nbsp;be&nbsp;called&nbsp;whenever&nbsp;the&nbsp;roster&nbsp;changes.<br>
&nbsp;<br>
The&nbsp;given&nbsp;function&nbsp;will&nbsp;be&nbsp;called&nbsp;whenever&nbsp;the&nbsp;contents&nbsp;of&nbsp;the<br>
roster&nbsp;changes&nbsp;in&nbsp;response&nbsp;to&nbsp;a&nbsp;received&nbsp;&lt;presence&gt;&nbsp;or&nbsp;&lt;iq&gt;&nbsp;packet.<br>
The&nbsp;listener&nbsp;function&nbsp;should&nbsp;be&nbsp;defined&nbsp;as&nbsp;follows:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;listener(action,&nbsp;jid,&nbsp;info)<br>
&nbsp;<br>
'action'&nbsp;is&nbsp;a&nbsp;string&nbsp;indicating&nbsp;what&nbsp;type&nbsp;of&nbsp;change&nbsp;has&nbsp;occurred:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;"add"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;new&nbsp;item&nbsp;has&nbsp;been&nbsp;added&nbsp;to&nbsp;the&nbsp;roster.<br>
&nbsp;&nbsp;&nbsp;&nbsp;"update"&nbsp;&nbsp;An&nbsp;existing&nbsp;roster&nbsp;item&nbsp;has&nbsp;been&nbsp;updated.<br>
&nbsp;&nbsp;&nbsp;&nbsp;"remove"&nbsp;&nbsp;A&nbsp;roster&nbsp;entry&nbsp;has&nbsp;been&nbsp;removed.<br>
&nbsp;<br>
'jid'&nbsp;is&nbsp;the&nbsp;Jabber&nbsp;ID&nbsp;(as&nbsp;a&nbsp;string)&nbsp;of&nbsp;the&nbsp;affected&nbsp;roster&nbsp;entry.<br>
&nbsp;<br>
'info'&nbsp;is&nbsp;a&nbsp;dictionary&nbsp;containing&nbsp;the&nbsp;information&nbsp;that&nbsp;has&nbsp;been<br>
added&nbsp;or&nbsp;updated&nbsp;for&nbsp;this&nbsp;roster&nbsp;entry.&nbsp;&nbsp;This&nbsp;dictionary&nbsp;may<br>
contain&nbsp;any&nbsp;combination&nbsp;of&nbsp;the&nbsp;following:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;"name"&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;associated&nbsp;name&nbsp;of&nbsp;this&nbsp;roster&nbsp;entry.<br>
&nbsp;&nbsp;&nbsp;&nbsp;"groups"&nbsp;&nbsp;A&nbsp;list&nbsp;of&nbsp;groups&nbsp;associated&nbsp;with&nbsp;this&nbsp;roster&nbsp;entry.<br>
&nbsp;&nbsp;&nbsp;&nbsp;"online"&nbsp;&nbsp;The&nbsp;roster&nbsp;entry's&nbsp;"online"&nbsp;value&nbsp;("online",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"offline"&nbsp;or&nbsp;"pending").<br>
&nbsp;&nbsp;&nbsp;&nbsp;"sub"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;roster&nbsp;entry's&nbsp;subscription&nbsp;value&nbsp;("none",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"from",&nbsp;"to"&nbsp;or&nbsp;"both").<br>
&nbsp;&nbsp;&nbsp;&nbsp;"ask"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;roster&nbsp;entry's&nbsp;ask&nbsp;value,&nbsp;if&nbsp;any&nbsp;(None,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"subscribe",&nbsp;"unsubscribe").<br>
&nbsp;&nbsp;&nbsp;&nbsp;"show"&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;roster&nbsp;entry's&nbsp;show&nbsp;value,&nbsp;if&nbsp;any&nbsp;(None,&nbsp;"away",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"chat",&nbsp;"dnd",&nbsp;"normal",&nbsp;"xa").<br>
&nbsp;&nbsp;&nbsp;&nbsp;"status"&nbsp;&nbsp;The&nbsp;roster&nbsp;entry's&nbsp;current&nbsp;'status'&nbsp;value,&nbsp;if<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;specified.</tt></dd></dl>

</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Server">class <strong>Server</strong></a></font></td></tr>
    
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"></td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="XDB">class <strong>XDB</strong></a>(<a href="jabber.html#Protocol">Protocol</a>)</font></td></tr>
    
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="jabber.html#XDB">XDB</a></dd>
<dd><a href="jabber.html#Protocol">Protocol</a></dd>
<dd><a href="xmlstream.html#Node">xmlstream.Node</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="XDB-__init__"><strong>__init__</strong></a>(self, attrs<font color="#909090">=None</font>, type<font color="#909090">=None</font>, frm<font color="#909090">=None</font>, to<font color="#909090">=None</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt></dl>

<hr>
Methods inherited from <a href="jabber.html#Protocol">Protocol</a>:<br>
<dl><dt><a name="XDB-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>

<dl><dt><a name="XDB-asNode"><strong>asNode</strong></a>(self)</dt><dd><tt>Back&nbsp;compartibility&nbsp;method</tt></dd></dl>

<dl><dt><a name="XDB-fromTo"><strong>fromTo</strong></a>(self)</dt><dd><tt>Swaps&nbsp;the&nbsp;element's&nbsp;from&nbsp;and&nbsp;to&nbsp;attributes.<br>
Note&nbsp;that&nbsp;this&nbsp;is&nbsp;only&nbsp;useful&nbsp;for&nbsp;writing&nbsp;components;&nbsp;if&nbsp;you&nbsp;are<br>
writing&nbsp;a&nbsp;Jabber&nbsp;client&nbsp;you&nbsp;shouldn't&nbsp;use&nbsp;this,&nbsp;because&nbsp;the&nbsp;Jabber<br>
server&nbsp;will&nbsp;set&nbsp;the&nbsp;'from'&nbsp;field&nbsp;automatically.</tt></dd></dl>

<dl><dt><a name="XDB-getError"><strong>getError</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;string,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="XDB-getErrorCode"><strong>getErrorCode</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;error&nbsp;code,&nbsp;if&nbsp;any</tt></dd></dl>

<dl><dt><a name="XDB-getFrom"><strong>getFrom</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'from'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="XDB-getID"><strong>getID</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'id'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="XDB-getTo"><strong>getTo</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'to'&nbsp;attribute&nbsp;as&nbsp;a&nbsp;<a href="#JID">JID</a>&nbsp;object.</tt></dd></dl>

<dl><dt><a name="XDB-getType"><strong>getType</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element.</tt></dd></dl>

<dl><dt><a name="XDB-getX"><strong>getX</strong></a>(self, index<font color="#909090">=0</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;namespace,&nbsp;optionally&nbsp;passed&nbsp;an&nbsp;index&nbsp;if&nbsp;there&nbsp;are<br>
multiple&nbsp;tags.</tt></dd></dl>

<dl><dt><a name="XDB-getXNode"><strong>getXNode</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance.&nbsp;If&nbsp;there&nbsp;are&nbsp;multiple&nbsp;tags<br>
the&nbsp;first&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;is&nbsp;returned.&nbsp;For&nbsp;multiple&nbsp;X&nbsp;nodes&nbsp;use&nbsp;getXNodes<br>
or&nbsp;pass&nbsp;an&nbsp;index&nbsp;integer&nbsp;value&nbsp;or&nbsp;namespace&nbsp;string&nbsp;to&nbsp;getXNode<br>
and&nbsp;if&nbsp;a&nbsp;match&nbsp;is&nbsp;found&nbsp;it&nbsp;will&nbsp;be&nbsp;returned.</tt></dd></dl>

<dl><dt><a name="XDB-getXNodes"><strong>getXNodes</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;list&nbsp;of&nbsp;X&nbsp;nodes.</tt></dd></dl>

<dl><dt><a name="XDB-getXPayload"><strong>getXPayload</strong></a>(self, val<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;the&nbsp;x&nbsp;tags'&nbsp;payload&nbsp;as&nbsp;a&nbsp;list&nbsp;of&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instances.</tt></dd></dl>

<dl><dt><a name="XDB-setError"><strong>setError</strong></a>(self, val, code)</dt><dd><tt>Sets&nbsp;an&nbsp;error&nbsp;string&nbsp;and&nbsp;code</tt></dd></dl>

<dl><dt><a name="XDB-setFrom"><strong>setFrom</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'from'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="XDB-setID"><strong>setID</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;ID&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="XDB-setTo"><strong>setTo</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'to'&nbsp;element&nbsp;to&nbsp;the&nbsp;given&nbsp;<a href="#JID">JID</a>.</tt></dd></dl>

<dl><dt><a name="XDB-setType"><strong>setType</strong></a>(self, val)</dt><dd><tt>Sets&nbsp;the&nbsp;'type'&nbsp;attribute&nbsp;of&nbsp;the&nbsp;protocol&nbsp;element</tt></dd></dl>

<dl><dt><a name="XDB-setX"><strong>setX</strong></a>(self, namespace, index<font color="#909090">=0</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;name&nbsp;space&nbsp;of&nbsp;the&nbsp;x&nbsp;tag.&nbsp;It&nbsp;also&nbsp;creates&nbsp;the&nbsp;node<br>
if&nbsp;it&nbsp;doesn't&nbsp;already&nbsp;exist.</tt></dd></dl>

<dl><dt><a name="XDB-setXNode"><strong>setXNode</strong></a>(self, val<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;x&nbsp;tag's&nbsp;data&nbsp;to&nbsp;the&nbsp;given&nbsp;textual&nbsp;value.</tt></dd></dl>

<dl><dt><a name="XDB-setXPayload"><strong>setXPayload</strong></a>(self, payload, namespace<font color="#909090">=''</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;Child&nbsp;of&nbsp;an&nbsp;'x'&nbsp;tag.&nbsp;Can&nbsp;be&nbsp;a&nbsp;<a href="xmlstream.html#Node">Node</a>&nbsp;instance&nbsp;or&nbsp;an<br>
XML&nbsp;document</tt></dd></dl>

<hr>
Methods inherited from <a href="xmlstream.html#Node">xmlstream.Node</a>:<br>
<dl><dt><a name="XDB-__str__"><strong>__str__</strong></a>(self)</dt></dl>

<dl><dt><a name="XDB-getAttr"><strong>getAttr</strong></a>(self, key)</dt><dd><tt>Get&nbsp;a&nbsp;value&nbsp;for&nbsp;the&nbsp;nodes&nbsp;named&nbsp;attribute.</tt></dd></dl>

<dl><dt><a name="XDB-getChildren"><strong>getChildren</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;nodes&nbsp;children</tt></dd></dl>

<dl><dt><a name="XDB-getData"><strong>getData</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="XDB-getDataAsParts"><strong>getDataAsParts</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;node&nbsp;data&nbsp;as&nbsp;an&nbsp;array</tt></dd></dl>

<dl><dt><a name="XDB-getName"><strong>getName</strong></a>(self)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="XDB-getNamespace"><strong>getNamespace</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="XDB-getParent"><strong>getParent</strong></a>(self)</dt><dd><tt>return&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

<dl><dt><a name="XDB-getTag"><strong>getTag</strong></a>(self, name, index<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;a&nbsp;child&nbsp;node&nbsp;with&nbsp;tag&nbsp;name.&nbsp;Returns&nbsp;None<br>
if&nbsp;not&nbsp;found.</tt></dd></dl>

<dl><dt><a name="XDB-getTags"><strong>getTags</strong></a>(self, name)</dt><dd><tt>Like&nbsp;getTag&nbsp;but&nbsp;returns&nbsp;a&nbsp;list&nbsp;with&nbsp;matching&nbsp;child&nbsp;nodes</tt></dd></dl>

<dl><dt><a name="XDB-insertData"><strong>insertData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="XDB-insertNode"><strong>insertNode</strong></a>(self, node)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;node&nbsp;to&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="XDB-insertTag"><strong>insertTag</strong></a>(self, name<font color="#909090">=None</font>, attrs<font color="#909090">={}</font>, payload<font color="#909090">=[]</font>, node<font color="#909090">=None</font>)</dt><dd><tt>Add&nbsp;a&nbsp;child&nbsp;tag&nbsp;of&nbsp;name&nbsp;'name'&nbsp;to&nbsp;the&nbsp;node.<br>
&nbsp;<br>
Returns&nbsp;the&nbsp;newly&nbsp;created&nbsp;node.</tt></dd></dl>

<dl><dt><a name="XDB-insertXML"><strong>insertXML</strong></a>(self, xml_str)</dt><dd><tt>Add&nbsp;raw&nbsp;xml&nbsp;as&nbsp;a&nbsp;child&nbsp;of&nbsp;the&nbsp;node</tt></dd></dl>

<dl><dt><a name="XDB-putAttr"><strong>putAttr</strong></a>(self, key, val)</dt><dd><tt>Add&nbsp;a&nbsp;name/value&nbsp;attribute&nbsp;to&nbsp;the&nbsp;node.</tt></dd></dl>

<dl><dt><a name="XDB-putData"><strong>putData</strong></a>(self, data)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;textual&nbsp;data</tt></dd></dl>

<dl><dt><a name="XDB-removeTag"><strong>removeTag</strong></a>(self, tag)</dt><dd><tt>Pops&nbsp;out&nbsp;specified&nbsp;child&nbsp;and&nbsp;returns&nbsp;it.</tt></dd></dl>

<dl><dt><a name="XDB-setName"><strong>setName</strong></a>(self, val)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;tag&nbsp;name.</tt></dd></dl>

<dl><dt><a name="XDB-setNamespace"><strong>setNamespace</strong></a>(self, namespace)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;namespace.</tt></dd></dl>

<dl><dt><a name="XDB-setParent"><strong>setParent</strong></a>(self, node)</dt><dd><tt>Set&nbsp;the&nbsp;nodes&nbsp;parent&nbsp;node.</tt></dd></dl>

</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
    
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-ustr"><strong>ustr</strong></a>(what)</dt><dd><tt>If&nbsp;sending&nbsp;object&nbsp;is&nbsp;already&nbsp;a&nbsp;unicode&nbsp;str,&nbsp;just<br>
return&nbsp;it,&nbsp;otherwise&nbsp;convert&nbsp;it&nbsp;using&nbsp;xmlstream.ENCODING</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
    
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>DBG_ALWAYS</strong> = 'always'<br>
<strong>DBG_DISPATCH</strong> = 'jb-dispatch'<br>
<strong>DBG_INIT</strong> = 'init'<br>
<strong>DBG_NODE</strong> = 'jb-node'<br>
<strong>DBG_NODE_IQ</strong> = 'jb-node-iq'<br>
<strong>DBG_NODE_MESSAGE</strong> = 'jb-node-message'<br>
<strong>DBG_NODE_PRESENCE</strong> = 'jb-node-pressence'<br>
<strong>DBG_NODE_UNKNOWN</strong> = 'jb-node-unknown'<br>
<strong>False</strong> = 0<br>
<strong>NS_AGENT</strong> = 'jabber:iq:agent'<br>
<strong>NS_AGENTS</strong> = 'jabber:iq:agents'<br>
<strong>NS_AUTH</strong> = 'jabber:iq:auth'<br>
<strong>NS_BROWSE</strong> = 'jabber:iq:browse'<br>
<strong>NS_CLIENT</strong> = 'jabber:client'<br>
<strong>NS_COMP_ACCEPT</strong> = 'jabber:component:accept'<br>
<strong>NS_COMP_CONNECT</strong> = 'jabber:component:connect'<br>
<strong>NS_DELAY</strong> = 'jabber:x:delay'<br>
<strong>NS_LAST</strong> = 'jabber:iq:last'<br>
<strong>NS_OOB</strong> = 'jabber:iq:oob'<br>
<strong>NS_PASS</strong> = 'jabber:iq:pass'<br>
<strong>NS_PRIVACY</strong> = 'jabber:iq:privacy'<br>
<strong>NS_P_COMMANDS</strong> = 'http://jabber.org/protocol/commands'<br>
<strong>NS_P_DISC_INFO</strong> = 'http://jabber.org/protocol/disco#info'<br>
<strong>NS_P_DISC_ITEMS</strong> = 'http://jabber.org/protocol/disco#items'<br>
<strong>NS_P_MUC</strong> = 'http://jabber.org/protocol/muc'<br>
<strong>NS_REGISTER</strong> = 'jabber:iq:register'<br>
<strong>NS_ROSTER</strong> = 'jabber:iq:roster'<br>
<strong>NS_RPC</strong> = 'jabber:iq:rpc'<br>
<strong>NS_SERVER</strong> = 'jabber:server'<br>
<strong>NS_TIME</strong> = 'jabber:iq:time'<br>
<strong>NS_VCARD</strong> = 'vcard-temp'<br>
<strong>NS_VERSION</strong> = 'jabber:iq:version'<br>
<strong>NS_XDATA</strong> = 'jabber:x:data'<br>
<strong>NS_XENCRYPTED</strong> = 'jabber:x:encrypted'<br>
<strong>NS_XEVENT</strong> = 'jabber:x:event'<br>
<strong>NS_XEXPIRE</strong> = 'jabber:x:expire'<br>
<strong>NS_XROSTER</strong> = 'jabber:x:roster'<br>
<strong>NS_XSIGNED</strong> = 'jabber:x:signed'<br>
<strong>RS_ASK_SUBSCRIBE</strong> = 1<br>
<strong>RS_ASK_UNSUBSCRIBE</strong> = 0<br>
<strong>RS_EXT_OFFLINE</strong> = 1<br>
<strong>RS_EXT_ONLINE</strong> = 2<br>
<strong>RS_EXT_PENDING</strong> = 0<br>
<strong>RS_SUB_BOTH</strong> = 0<br>
<strong>RS_SUB_FROM</strong> = 1<br>
<strong>RS_SUB_TO</strong> = 2<br>
<strong>True</strong> = 1<br>
<strong>VERSION</strong> = '0.5'<br>
<strong>timeout</strong> = 300</td></tr></table>
</body></html>