/
BNSharp.xml
12446 lines (12445 loc) · 777 KB
/
BNSharp.xml
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
<?xml version="1.0"?>
<doc>
<assembly>
<name>BNSharp</name>
</assembly>
<members>
<member name="T:BNSharp.AccountCreationEventArgs">
<summary>
Contains information about an attempted account creation event.
</summary>
</member>
<member name="T:BNSharp.BaseEventArgs">
<summary>
Provides the base class from which all BN# event argument class should derive.
</summary>
</member>
<member name="M:BNSharp.BaseEventArgs.#ctor">
<summary>
Creates a new instance of <see>BaseEventArgs</see>.
</summary>
</member>
<member name="M:BNSharp.BaseEventArgs.GetEmpty(BNSharp.BattleNet.BattleNetClient.ParseData)">
<summary>
Gets a new empty BaseEventArgs object for a specified event data object. This method is not CLS-compliant.
</summary>
<param name="eventData">The client parsing data.</param>
<returns>An empty instance with the specified client parsing data.</returns>
</member>
<member name="M:BNSharp.BaseEventArgs.GetKnownTypes">
<summary>
This method is provided as infrastructure code for WCF services. This allows inheritence
to function correctly on all types derived from BaseEventArgs that are known to the server.
For more information, see the MSDN Library article "Data Contract Known Types" at
http://msdn.microsoft.com/en-us/library/ms730167.aspx
</summary>
</member>
<member name="P:BNSharp.BaseEventArgs.EventData">
<summary>
Gets or sets the underlying connection data that was used to drive this event. This property is not CLS-compliant.
</summary>
</member>
<member name="M:BNSharp.AccountCreationEventArgs.#ctor(System.String)">
<summary>
Creates a new <see>AccountCreationEventArgs</see> for the specified account name.
</summary>
<param name="accountName">The name of the account being created.</param>
</member>
<member name="P:BNSharp.AccountCreationEventArgs.AccountName">
<summary>
Gets the name of the account being created.
</summary>
</member>
<member name="T:BNSharp.AccountCreationEventHandler">
<summary>
Specifies the contract for handlers wishing to listen for account creation events.
</summary>
<param name="sender">The object that originated the event.</param>
<param name="e">The event arguments.</param>
</member>
<member name="T:BNSharp.AccountCreationFailedEventArgs">
<summary>
Contains information about an account creation attempt that failed.
</summary>
</member>
<member name="M:BNSharp.AccountCreationFailedEventArgs.#ctor(System.String,BNSharp.CreationFailureReason)">
<summary>
Creates a new <see>AccountCreationFailedEventArgs</see> for the specifiec account.
</summary>
<param name="accountName">The name that failed to be created.</param>
<param name="reason">The reason provided by Battle.net for the failure.</param>
</member>
<member name="P:BNSharp.AccountCreationFailedEventArgs.Reason">
<summary>
Gets the reason for the account creation failure.
</summary>
</member>
<member name="T:BNSharp.AccountCreationFailedEventHandler">
<summary>
Specifies the contract for handlers wishing to listen for account creation failure events.
</summary>
<param name="sender">The object that originated the event.</param>
<param name="e">The event arguments.</param>
</member>
<member name="T:BNSharp.BattleNetSettingsErrorsException">
<summary>
Contains error information raised when a new <see>BattleNetClient</see> is constructed with
invalid settings.
</summary>
</member>
<member name="M:BNSharp.BattleNetSettingsErrorsException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<inheritdoc />
</member>
<member name="P:BNSharp.BattleNetSettingsErrorsException.Errors">
<summary>
Gets the bitwise combination of errors that were associated with this exception.
</summary>
</member>
<member name="T:BNSharp.BattleNetSettingsErrors">
<summary>
Specifies one or more errors that were found with an initialized <see>BattleNetClient</see>.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.None">
<summary>
Indicates no errors were found.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.GameExeMissingOrNotFound">
<summary>
Indicates that the game executable file (<see cref="P:BNSharp.IBattleNetSettings.GameFile3">the GameExe
property</see>) was not specified or did not exist.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.GameFile2MissingOrNotFound">
<summary>
Indicates that the second game file (<see cref="P:BNSharp.IBattleNetSettings.GameFile3">the GameFile2
property</see>) was not specified or did not exist.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.GameFile3MissingOrNotFound">
<summary>
Indicates that the third game file (<see cref="P:BNSharp.IBattleNetSettings.GameFile3">the GameFile3
property</see>) was not specified or did not exist.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.UserNameNull">
<summary>
Indicates that the username (<see cref="P:BNSharp.IBattleNetSettings.Username">the Username
property</see>) was null or empty.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.InvalidPingType">
<summary>
Indicates that the emulated ping response (<see cref="P:BNSharp.IBattleNetSettings.PingMethod">the
PingMethod property</see>) was not one of the known values of the <see>PingType</see>
enumeration.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.InvalidEmulationClient">
<summary>
Indicates that the client specified (<see cref="P:BNSharp.IBattleNetSettings.Client">the Client
property</see>) was not valid for emulation; the only valid values are presently
<c>STAR</c>, <c>SEXP</c>, <c>D2DV</c>, <c>D2XP</c>, <c>W2BN</c>, <c>WAR3</c>, and <c>W3XP</c>.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.PrimaryCdKeyMissingOrInvalid">
<summary>
Indicates that the primary CD key (<see cref="P:BNSharp.IBattleNetSettings.CdKey1">the CdKey1
property</see>) was not specified or was invalid.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.SecondaryCdKeyMissingOrInvalid">
<summary>
Indicates that the secondary CD key (<see cref="P:BNSharp.IBattleNetSettings.CdKey2">the CdKey2
property</see>) was not specified or was invalid, but was required for the selected client.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.LockdownFileMissingOrNotFound">
<summary>
Indicates that the lockdown file (<see cref="P:BNSharp.IBattleNetSettings.ImageFile">the ImageFile
property</see> was not specified or did not exist.
</summary>
</member>
<member name="F:BNSharp.BattleNetSettingsErrors.InvalidGatewayServer">
<summary>
Indicates that the gateway's server name (<see cref="P:BNSharp.IBattleNetSettings.Gateway">the
Gateway property</see>, then the <see cref="P:BNSharp.BattleNet.Gateway.ServerHost">ServerHost
property</see>) was null or empty.
</summary>
</member>
<member name="T:BNSharp.BattleNet.AdChangedEventArgs">
<summary>
Contains information about a change in advertisements.
</summary>
</member>
<member name="M:BNSharp.BattleNet.AdChangedEventArgs.#ctor(System.Int32,System.DateTime,System.String,System.String)">
<summary>
Creates a new <see>AdChangedEventArgs</see>.
</summary>
<param name="adID">The unique ID of the ad.</param>
<param name="fileTime">The local time of the file's most recent change.</param>
<param name="fileName">The name of the file that contains the ad image.</param>
<param name="linkUrl">The URL to which the ad links.</param>
</member>
<member name="P:BNSharp.BattleNet.AdChangedEventArgs.AdID">
<summary>
Gets the unique ID of the ad.
</summary>
</member>
<member name="P:BNSharp.BattleNet.AdChangedEventArgs.FileTime">
<summary>
Gets the local time of the file's most recent change.
</summary>
</member>
<member name="P:BNSharp.BattleNet.AdChangedEventArgs.Filename">
<summary>
Gets the name of the file that has the ad image.
</summary>
</member>
<member name="P:BNSharp.BattleNet.AdChangedEventArgs.LinkUrl">
<summary>
Gets the URL to the link to which the ad links.
</summary>
</member>
<member name="T:BNSharp.BattleNet.AdChangedEventHandler">
<summary>
Specifies the contract for handlers wishing to listen for AdChanged events.
</summary>
<param name="sender">The object that originated the event.</param>
<param name="e">The event arguments.</param>
</member>
<member name="T:BNSharp.BattleNet.BattleNetClient">
<summary>
Implements a client connection to Battle.net.
</summary>
<remarks>
<para>This is the primary class that should be used when implementing a Battle.net client. To implement one, you only need to implement
the <see>IBattleNetSettings</see> interface, which provides information about a connection to Battle.net. Once this interface is implemented
and this object is created, the client should register for events and that's it.</para>
</remarks>
</member>
<member name="T:BNSharp.Net.ThinProxiedConnectionBase">
<summary>
Enables proxy support to a connection by redirecting a normal <see>ConnectionBase</see> to a plugin (<see>IProxyConnector</see>),
which then can manipulate the underlying data connection as needed by the protocol.
</summary>
</member>
<member name="T:BNSharp.Net.ConnectionBase">
<summary>
Represents a TCP/IP connection.
</summary>
</member>
<member name="M:BNSharp.Net.ConnectionBase.#ctor(System.String,System.Int32)">
<summary>
Creates a new instance of the <b>ConnectionBase</b> class.
</summary>
<param name="server">The URI of the server to connect to.</param>
<param name="port">The port of the server to connect to.</param>
</member>
<member name="M:BNSharp.Net.ConnectionBase.ResolveEndpoint(System.String,System.Int32)">
<summary>
Resolves an IP end point for the specified server and port.
</summary>
<param name="server">The DNS name or IP address (as a string) of the server to look up.</param>
<param name="port">The port number to which to connect.</param>
<returns>An <see>IPEndPoint</see> representing the server and port; or, if resolution failed, <see langword="null" />.</returns>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Connect(System.String,System.Int32)">
<summary>
Connects the connection to a remote host other than the one for which the connection was initialized.
</summary>
<param name="server">The URI of the server to which to connect.</param>
<param name="port">The port of the server to which to connect.</param>
<returns><see langword="true"/> if the connection completed successfully; otherwise <see langword="false"/>.</returns>
<remarks>
<para>The <see cref="M:BNSharp.Net.ConnectionBase.OnError(System.String,System.Exception)">OnError</see> method is called when an error takes place, but no
behavior is defined by default. Inheriting classes should provide an implementation
to handle errors.</para>
<para>This method may return false if the connection is already established. To check whether the
connection is established, check the <see>IsConnected</see> property.</para>
</remarks>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Connect">
<summary>
Connects the connection to the remote host.
</summary>
<returns><b>True</b> if the connection completed successfully; otherwise <b>false</b>.</returns>
<remarks>
<para>The <see cref="M:BNSharp.Net.ConnectionBase.OnError(System.String,System.Exception)">OnError</see> method is called when an error takes place, but no
behavior is defined by default. Inheriting classes should provide an implementation
to handle errors.</para>
<para>This method may return false if the connection is already established. To check whether the
connection is established, check the <see>IsConnected</see> property.</para>
</remarks>
</member>
<member name="M:BNSharp.Net.ConnectionBase.ConnectAsync(System.Object,BNSharp.Net.ConnectCompletedCallback)">
<summary>
Begins a connection asynchronously.
</summary>
<param name="state">Any user object that is desired to be passed back to the connection completed callback. This will be represented
through the <see>ConnectCompletedResult.State</see> property.</param>
<param name="callback">The method to call when the connection has completed.</param>
</member>
<member name="M:BNSharp.Net.ConnectionBase.OnError(System.String,System.Exception)">
<summary>
When overridden by a derived class, provides error information from the current connection.
</summary>
<param name="message">Human-readable information about the error.</param>
<param name="ex">An internal exception containing the error details.</param>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Close">
<summary>
Closes the connection and prepares for a new connection.
</summary>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Send(System.Byte[])">
<summary>
For derived classes, sends the specified binary data to the server.
</summary>
<param name="data">The data to send.</param>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Send(System.Byte[],System.Int32,System.Int32)">
<summary>
For derived classes, sends part of the specified binary data to the server.
</summary>
<param name="data">The data to send.</param>
<param name="index">The start index of the data.</param>
<param name="length">The amount of data to send.</param>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Receive(System.Int32)">
<summary>
Receives the specified number of bytes.
</summary>
<remarks>
<para>This method blocks in a loop until all of the data comes through. For that reason, it
is recommended that this method is only used in a background thread.</para>
</remarks>
<param name="len">The amount of data to receive.</param>
<returns>A byte array containing the specified data.</returns>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Receive(System.Byte[],System.Int32,System.Int32)">
<summary>
Receives the specified number of bytes into the provided buffer.
</summary>
<param name="buffer">The buffer to receive the data.</param>
<param name="index">The starting index to place the data.</param>
<param name="length">The amount of data to receive.</param>
<returns>A reference to <paramref name="buffer"/> if the operation completed successfully, or else
<see langword="null"/>.</returns>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="buffer"/> is <see langword="null"/></exception>
<exception cref="T:System.ArgumentOutOfRangeException">Thrown if the combination of <paramref name="length"/> and
<paramref name="index"/> point to invalid positions in the buffer.</exception>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Receive">
<summary>
Retrieves an arbitrarily-sized byte array of data.
</summary>
<returns>An array of bytes of data that have been received from the server.</returns>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Dispose">
<summary>
Disposes the specified object.
</summary>
</member>
<member name="M:BNSharp.Net.ConnectionBase.Dispose(System.Boolean)">
<summary>
Disposes the object, freeing unmanaged and optionally managed resources.
</summary>
<param name="disposing">Whether to free managed resources.</param>
</member>
<member name="P:BNSharp.Net.ConnectionBase.IsConnected">
<summary>
Gets whether the connection is alive or not.
</summary>
</member>
<member name="P:BNSharp.Net.ConnectionBase.LocalEP">
<summary>
Once the connection is established, gets the local endpoint to which the client is bound.
</summary>
</member>
<member name="P:BNSharp.Net.ConnectionBase.RemoteEP">
<summary>
Once the connection is established, gets the remote endpoint to which the client is bound.
</summary>
</member>
<member name="P:BNSharp.Net.ConnectionBase.AlwaysResolveRemoteHost">
<summary>
Allows derived classes to always require the connection to re-resolve the remote host during the <see cref="M:BNSharp.Net.ConnectionBase.Connect"/> method.
</summary>
</member>
<member name="T:BNSharp.Plugins.IProxiedRealConnection">
<summary>
Provides real communication services to a proxy connector. This interface does not need to be implemented by a user wishing to
add proxy support to BN#; rather, it is provided via the <see cref="M:BNSharp.Plugins.IProxyConnector.Initialize(BNSharp.Plugins.IProxiedRealConnection)">IProxyConnector.Initialize</see> method.
</summary>
</member>
<member name="M:BNSharp.Plugins.IProxiedRealConnection.Receive(System.Byte[],System.Int32,System.Int32)">
<summary>
Receives the specified number of bytes into the provided buffer from the real underlying connection.
</summary>
<param name="buffer">The buffer to receive the data.</param>
<param name="index">The starting index to place the data.</param>
<param name="length">The amount of data to receive.</param>
<returns>A reference to <paramref name="buffer"/> if the operation completed successfully, or else
<see langword="null"/>.</returns>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="buffer"/> is <see langword="null"/></exception>
<exception cref="T:System.ArgumentOutOfRangeException">Thrown if the combination of <paramref name="length"/> and
<paramref name="index"/> point to invalid positions in the buffer.</exception>
</member>
<member name="M:BNSharp.Plugins.IProxiedRealConnection.Receive">
<summary>
Retrieves an arbitrarily-sized byte array of data from the real underlying connection.
</summary>
<returns>An array of bytes of data that have been received from the server.</returns>
</member>
<member name="M:BNSharp.Plugins.IProxiedRealConnection.Send(System.Byte[],System.Int32,System.Int32)">
<summary>
Sends part of the specified binary data to the server through the real underlying connection.
</summary>
<param name="data">The data to send.</param>
<param name="index">The start index of the data.</param>
<param name="length">The amount of data to send.</param>
</member>
<member name="M:BNSharp.Plugins.IProxiedRealConnection.ResolveEndPoint(System.String,System.Int32)">
<summary>
Provides a real implementation of endpoint resolution for the specified host and port.
</summary>
<param name="host">The DNS name or IP address (as a string) of the server to look up.</param>
<param name="port">The port number to which to connect.</param>
<returns>An <see>IPEndPoint</see> representing the server and port.</returns>
</member>
<member name="M:BNSharp.Net.ThinProxiedConnectionBase.#ctor(System.String,System.Int32)">
<summary>
Creates a new instance of the <b>ConnectionBase</b> class.
</summary>
<param name="server">The URI of the server to connect to.</param>
<param name="port">The port of the server to connect to.</param>
</member>
<member name="M:BNSharp.Net.ThinProxiedConnectionBase.Connect">
<inheritdoc />
</member>
<member name="M:BNSharp.Net.ThinProxiedConnectionBase.ResolveEndpoint(System.String,System.Int32)">
<inheritdoc />
</member>
<member name="M:BNSharp.Net.ThinProxiedConnectionBase.Receive(System.Byte[],System.Int32,System.Int32)">
<inheritdoc />
</member>
<member name="M:BNSharp.Net.ThinProxiedConnectionBase.Send(System.Byte[],System.Int32,System.Int32)">
<inheritdoc />
</member>
<member name="M:BNSharp.Net.ThinProxiedConnectionBase.Receive">
<inheritdoc />
</member>
<member name="P:BNSharp.Net.ThinProxiedConnectionBase.ProxyConnector">
<summary>
Gets or sets an <see>IProxyConnector</see> that can be used to redirect this connection through a proxy.
</summary>
<remarks>
<para>For more information on proxy support in BN#, please see the wiki article
<a href="http://www.jinxbot.net/wiki/index.php?title=Proxy_support_in_BNSharp">Proxy support in BN#</a> or the
<see>IProxyConnector</see> interface.</para>
<para>When this value is set to <see langword="null" />, a default proxy connector is instantiated. Consequently this property
will never return <see langword="null" />.</para>
</remarks>
</member>
<member name="P:BNSharp.Net.ThinProxiedConnectionBase.AlwaysResolveRemoteHost">
<inheritdoc />
</member>
<member name="T:BNSharp.Plugins.IProxyConnector">
<summary>
Enables a client connection to be connected through a proxy server that may decorate any part of the protocol with additional data.
</summary>
</member>
<member name="M:BNSharp.Plugins.IProxyConnector.Initialize(BNSharp.Plugins.IProxiedRealConnection)">
<summary>
Initializes the proxy connector for the specified client.
</summary>
<param name="client">Provides the real connection services to the proxy connector.</param>
</member>
<member name="M:BNSharp.Plugins.IProxyConnector.Negotiate">
<summary>
Allows a presentation-level proxy protocol to negotiate immediately after connecting to the proxy host.
</summary>
<returns><see langword="true" /> if negotiation succeeded; otherwsie <see langword="false" />.</returns>
</member>
<member name="M:BNSharp.Plugins.IProxyConnector.ResolveEndPoint(System.String,System.Int32)">
<summary>
Resolves an IP end point for the specified server and port.
</summary>
<param name="host">The DNS name or IP address (as a string) of the server to look up.</param>
<param name="port">The port number to which to connect.</param>
<remarks>
<para>Proxy implementations should use this method to resolve the real and proxy IP addresses for connection and return
the IP end point of the proxy host. This allows the base class to transparently connect to the proxy server.</para>
</remarks>
<returns>An <see>IPEndPoint</see> representing the server and port.</returns>
</member>
<member name="M:BNSharp.Plugins.IProxyConnector.Receive(System.Byte[],System.Int32,System.Int32)">
<summary>
Receives the specified number of bytes into the provided buffer.
</summary>
<param name="buffer">The buffer to receive the data.</param>
<param name="index">The starting index to place the data.</param>
<param name="length">The amount of data to receive.</param>
<returns>A reference to <paramref name="buffer"/> if the operation completed successfully, or else
<see langword="null"/>.</returns>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="buffer"/> is <see langword="null"/></exception>
<exception cref="T:System.ArgumentOutOfRangeException">Thrown if the combination of <paramref name="length"/> and
<paramref name="index"/> point to invalid positions in the buffer.</exception>
</member>
<member name="M:BNSharp.Plugins.IProxyConnector.Receive">
<summary>
Retrieves an arbitrarily-sized byte array of data.
</summary>
<returns>An array of bytes of data that have been received from the server.</returns>
</member>
<member name="M:BNSharp.Plugins.IProxyConnector.Send(System.Byte[],System.Int32,System.Int32)">
<summary>
Sends part of the specified binary data to the server.
</summary>
<param name="data">The data to send.</param>
<param name="index">The start index of the data.</param>
<param name="length">The amount of data to send.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RequestWarcraft3Profile(System.String,System.Boolean)">
<summary>
Requests a Warcraft 3 profile.
</summary>
<param name="username">The name of the user to request.</param>
<param name="getFrozenThroneProfile"><see langword="true" /> to get the Frozen Throne profile;
<see langword="false" /> to get the Reign of Chaos profile.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RequestWarcraft3Profile(BNSharp.BattleNet.ChatUser)">
<summary>
Requests a Warcraft 3 profile for the specified user, requesting them for the user's
specific product.
</summary>
<param name="user">The user for whom to request a profile.</param>
<exception cref="T:System.ArgumentOutOfRangeException">Thrown if <paramref name="user"/> does
not on Warcraft III: The Reign of Chaos or The Frozen Throne.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RegisterWarcraftProfileReceivedNotification(BNSharp.Priority,BNSharp.BattleNet.Stats.WarcraftProfileEventHandler)">
<summary>
Registers for notification of the <see>WarcraftProfileReceived</see> event at the specified priority.
</summary>
<remarks>
<para>The event system in the JinxBot API supports normal event registration and prioritized event registration. You can use
normal syntax to register for events at <see cref="T:BNSharp.Priority">Normal priority</see>, so no special registration is needed; this is
accessed through normal event handling syntax (the += syntax in C#, or the <see langword="Handles" lang="VB"/> in Visual Basic.</para>
<para>Events in the JinxBot API are never guaranteed to be executed on the UI thread. Events that affect the user interface should
be marshaled back to the UI thread by the event handling code. Generally, high-priority event handlers are
raised on the thread that is parsing data from Battle.net, and lower-priority event handler are executed from the thread pool.</para>
<para>JinxBot guarantees that all event handlers will be fired regardless of exceptions raised in previous event handlers. However,
if a plugin repeatedly raises an exception, it may be forcefully unregistered from events.</para>
<para>To be well-behaved within JinxBot, plugins should always unregister themselves when they are being unloaded or when they
otherwise need to do so. Plugins may opt-in to a Reflection-based event handling registration system which uses attributes to
mark methods that should be used as event handlers.</para>
</remarks>
<param name="p">The priority at which to register.</param>
<param name="callback">The event handler that should be registered for this event.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.WarcraftProfileReceived"/>
<seealso cref="M:BNSharp.BattleNet.BattleNetClient.UnregisterWarcraftProfileReceivedNotification(BNSharp.Priority,BNSharp.BattleNet.Stats.WarcraftProfileEventHandler)"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.UnregisterWarcraftProfileReceivedNotification(BNSharp.Priority,BNSharp.BattleNet.Stats.WarcraftProfileEventHandler)">
<summary>
Unregisters for notification of the <see>WarcraftProfileReceived</see> event at the specified priority.
</summary>
<remarks>
<para>The event system in the JinxBot API supports normal event registration and prioritized event registration. You can use
normal syntax to register for events at <see cref="T:BNSharp.Priority">Normal priority</see>, so no special registration is needed; this is
accessed through normal event handling syntax (the += syntax in C#, or the <see langword="Handles" lang="VB"/> in Visual Basic.</para>
<para>Events in the JinxBot API are never guaranteed to be executed on the UI thread. Events that affect the user interface should
be marshaled back to the UI thread by the event handling code. Generally, high-priority event handlers are
raised on the thread that is parsing data from Battle.net, and lower-priority event handler are executed from the thread pool.</para>
<para>JinxBot guarantees that all event handlers will be fired regardless of exceptions raised in previous event handlers. However,
if a plugin repeatedly raises an exception, it may be forcefully unregistered from events.</para>
<para>To be well-behaved within JinxBot, plugins should always unregister themselves when they are being unloaded or when they
otherwise need to do so. Plugins may opt-in to a Reflection-based event handling registration system which uses attributes to
mark methods that should be used as event handlers.</para>
</remarks>
<param name="p">The priority from which to unregister.</param>
<param name="callback">The event handler that should be unregistered for this event.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.WarcraftProfileReceived"/>
<seealso cref="M:BNSharp.BattleNet.BattleNetClient.RegisterWarcraftProfileReceivedNotification(BNSharp.Priority,BNSharp.BattleNet.Stats.WarcraftProfileEventHandler)"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.OnWarcraftProfileReceived(BNSharp.BattleNet.Stats.WarcraftProfileEventArgs)">
<summary>
Raises the WarcraftProfileReceived event.
</summary>
<remarks>
<para>Only high-priority events are invoked immediately; others are deferred. For more information, see <see>WarcraftProfileReceived</see>.</para>
</remarks>
<param name="e">The event arguments.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.WarcraftProfileReceived"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RegisterProfileLookupFailedNotification(BNSharp.Priority,BNSharp.BattleNet.Stats.ProfileLookupFailedEventHandler)">
<summary>
Registers for notification of the <see>ProfileLookupFailed</see> event at the specified priority.
</summary>
<remarks>
<para>The event system in the JinxBot API supports normal event registration and prioritized event registration. You can use
normal syntax to register for events at <see cref="T:BNSharp.Priority">Normal priority</see>, so no special registration is needed; this is
accessed through normal event handling syntax (the += syntax in C#, or the <see langword="Handles" lang="VB"/> in Visual Basic.</para>
<para>Events in the JinxBot API are never guaranteed to be executed on the UI thread. Events that affect the user interface should
be marshaled back to the UI thread by the event handling code. Generally, high-priority event handlers are
raised on the thread that is parsing data from Battle.net, and lower-priority event handler are executed from the thread pool.</para>
<para>JinxBot guarantees that all event handlers will be fired regardless of exceptions raised in previous event handlers. However,
if a plugin repeatedly raises an exception, it may be forcefully unregistered from events.</para>
<para>To be well-behaved within JinxBot, plugins should always unregister themselves when they are being unloaded or when they
otherwise need to do so. Plugins may opt-in to a Reflection-based event handling registration system which uses attributes to
mark methods that should be used as event handlers.</para>
</remarks>
<param name="p">The priority at which to register.</param>
<param name="callback">The event handler that should be registered for this event.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.ProfileLookupFailed"/>
<seealso cref="M:BNSharp.BattleNet.BattleNetClient.UnregisterProfileLookupFailedNotification(BNSharp.Priority,BNSharp.BattleNet.Stats.ProfileLookupFailedEventHandler)"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.UnregisterProfileLookupFailedNotification(BNSharp.Priority,BNSharp.BattleNet.Stats.ProfileLookupFailedEventHandler)">
<summary>
Unregisters for notification of the <see>ProfileLookupFailed</see> event at the specified priority.
</summary>
<remarks>
<para>The event system in the JinxBot API supports normal event registration and prioritized event registration. You can use
normal syntax to register for events at <see cref="T:BNSharp.Priority">Normal priority</see>, so no special registration is needed; this is
accessed through normal event handling syntax (the += syntax in C#, or the <see langword="Handles" lang="VB"/> in Visual Basic.</para>
<para>Events in the JinxBot API are never guaranteed to be executed on the UI thread. Events that affect the user interface should
be marshaled back to the UI thread by the event handling code. Generally, high-priority event handlers are
raised on the thread that is parsing data from Battle.net, and lower-priority event handler are executed from the thread pool.</para>
<para>JinxBot guarantees that all event handlers will be fired regardless of exceptions raised in previous event handlers. However,
if a plugin repeatedly raises an exception, it may be forcefully unregistered from events.</para>
<para>To be well-behaved within JinxBot, plugins should always unregister themselves when they are being unloaded or when they
otherwise need to do so. Plugins may opt-in to a Reflection-based event handling registration system which uses attributes to
mark methods that should be used as event handlers.</para>
</remarks>
<param name="p">The priority from which to unregister.</param>
<param name="callback">The event handler that should be unregistered for this event.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.ProfileLookupFailed"/>
<seealso cref="M:BNSharp.BattleNet.BattleNetClient.RegisterProfileLookupFailedNotification(BNSharp.Priority,BNSharp.BattleNet.Stats.ProfileLookupFailedEventHandler)"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.OnProfileLookupFailed(BNSharp.BattleNet.Stats.ProfileLookupFailedEventArgs)">
<summary>
Raises the ProfileLookupFailed event.
</summary>
<remarks>
<para>Only high-priority events are invoked immediately; others are deferred. For more information, see <see>ProfileLookupFailed</see>.</para>
</remarks>
<param name="e">The event arguments.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.ProfileLookupFailed"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.SetClanMessageOfTheDay(System.String)">
<summary>
If the client is logged on as a clan Chieftan or Shaman, sets the clan message-of-the-day.
</summary>
<param name="motd">The new message-of-the-day.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.BeginClanCandidatesSearch(System.String)">
<summary>
Begins searching for clan candidates in the channel and friends list, and checks the availability of the specified clan tag.
</summary>
<param name="clanTag">The clan tag to check for availability.</param>
<returns>The request ID assigned to the request.</returns>
<remarks>
<para>This method will return immediately, but will cause the <see>ClanCandidatesSearchCompleted</see> event to be fired. That event does not
specifically indicate that the proper number of candidates were found, simply that Battle.net responded. The event arguments sent
as part of the event indicate the success or failure of the request.</para>
</remarks>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="clanTag"/> is <see langword="null"/>.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.InviteUsersToNewClan(System.String,System.String,System.String[])">
<summary>
Invites the specified number of users to form a new clan.
</summary>
<param name="clanName">The name of the clan to form.</param>
<param name="clanTag">The tag of the clan to form.</param>
<param name="usersToInvite">The list of users to invite. This parameter must be exactly 9 items long.</param>
<returns>The request ID assigned to this request.</returns>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="clanName"/>, <paramref name="clanTag"/>,
<paramref name="usersToInvite"/>, or any of the strings in the array of <paramref name="usersToInvite"/>
is <see langword="null"/>.</exception>
<exception cref="T:System.ArgumentOutOfRangeException">Thrown if <paramref name="usersToInvite"/> is not exactly 9 items long.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RespondToNewClanInvitation(System.Int32,System.String,System.String,System.Boolean)">
<summary>
Responds to the invitation to form a new clan.
</summary>
<param name="requestID">The request ID, provided by the <see cref="P:BNSharp.BattleNet.Clans.ClanFormationInvitationEventArgs.RequestID">ClanFormationInvitationEventArgs</see>.</param>
<param name="clanTag">The clan tag.</param>
<param name="inviter">The user who invited the client to the clan.</param>
<param name="accept">Whether to accept the invitation.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.DisbandClan">
<summary>
Disbands the clan to which the client belongs.
</summary>
<returns>The request ID assigned to the request.</returns>
<remarks>
<para>The client must be the leader of the clan in order to send this command.</para>
</remarks>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.DesignateClanChieftan(System.String)">
<summary>
Designates a user as a new clan chieftan (leader).
</summary>
<returns>The unique request ID assigned to the request.</returns>
<param name="newChieftanName">The name of the new clan chieftan.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.InviteUserToClan(System.String)">
<summary>
Begins the process of inviting a user to join a clan.
</summary>
<param name="userToInvite">The name of the user to invite.</param>
<returns>A unique request identifier.</returns>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RemoveClanMember(System.String)">
<summary>
Begins the process for removing a member from the clan.
</summary>
<param name="memberToRemove">The name of the clan member to remove.</param>
<returns>The request ID assigned to this request.</returns>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="memberToRemove"/> is <see langword="null"/> or zero-length.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RespondToClanInvitation(BNSharp.BattleNet.Clans.ClanInvitationEventArgs,System.Boolean)">
<summary>
Responds to a clan invitation received via the <see>ClanInvitationReceived</see> event.
</summary>
<param name="invitation">The arguments that accompanied the invitation.</param>
<param name="accept"><see langword="true" /> to accept the invitation and join the clan; otherwise <see langword="false" />.</param>
<remarks>
<para>Following the acceptance of an invitation, the client should receive <see>ClanMembershipReceived</see> and automatically respond by requesting clan
membership information.</para>
</remarks>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.ChangeClanMemberRank(System.String,BNSharp.BattleNet.Clans.ClanRank)">
<summary>
Attempts to change the specified clan member's rank.
</summary>
<remarks>
<para>This method does not attempt to verify that the current user is allowed to change the specified user's rank, or even if the specified
user exists or is in the current user's clan. The results of this method call are returned via the
<see>ClanRankChangeResponseReceived</see> event.</para>
</remarks>
<param name="name">The name of the user to change.</param>
<param name="newRank">The user's new rank.</param>
<exception cref="T:System.ComponentModel.InvalidEnumArgumentException">Thrown if <paramref name="newRank"/> is not a valid value of the <see>ClanRank</see>
enumeration</exception>.
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="name"/> is <see langword="null"/> or zero-length.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.#ctor(BNSharp.IBattleNetSettings)">
<summary>
Creates a new <see>BattleNetClient</see> with the specified settings.
</summary>
<param name="settings">An object containing the settings for a Battle.net connection.</param>
<exception cref="T:BNSharp.BattleNetSettingsErrorsException">Thrown if required parameters of the
<paramref name="settings"/> object are invalid.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.Send(BNSharp.MBNCSUtil.DataBuffer)">
<summary>
Sends a data buffer to the server.
</summary>
<param name="packet">The buffer to send.</param>
<remarks>
<para>Use of this method is preferred when sending binary messages because, after sending the buffer, it frees the buffer from the outgoing buffer pool. If you
are only sending a text command, you should use <see>Send(string)</see>; it not only automatically creates the packet, but uses the speed delay provider,
if any, assigned to the <see>CommandQueueProvider</see> property.</para>
</remarks>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.Connect">
<summary>
Begins the connection to Battle.net.
</summary>
<returns><see langword="true" /> if the connection succeeded; otherwise <see langword="false" />.</returns>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.Close">
<summary>
Closes the connection.
</summary>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.Dispose(System.Boolean)">
<inheritdoc />
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.Send(System.String,BNSharp.Priority)">
<summary>
Sends a textual message to the server.
</summary>
<param name="text">The message to send.</param>
<param name="priority">The priority at which to send the message.</param>
<exception cref="T:System.InvalidOperationException">Thrown if the client is not connected.</exception>
<exception cref="T:System.Net.ProtocolViolationException">Thrown if <paramref name="text"/> is longer than 223 characters.</exception>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="text"/> is <see langword="null"/> or zero-length.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.SendMessage(System.String)">
<summary>
Sends a textual message to the server at normal priority.
</summary>
<param name="text">The message to send.</param>
<exception cref="T:System.InvalidOperationException">Thrown if the client is not connected.</exception>
<exception cref="T:System.Net.ProtocolViolationException">Thrown if <paramref name="text"/> is longer than 223 characters.</exception>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="text"/> is <see langword="null"/>.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.CreateAccount">
<summary>
Creates a new account, attempting to use the login information provided in the settings.
</summary>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.ContinueLogin">
<summary>
Allows the client to continue logging in if the login has stopped due to a non-existent username or password.
</summary>
<remarks>
<para>If a <see>LoginFailed</see> event occurs, the client is not automatically disconnected. The UI can then present an interface
by which the user may modify the client's <see>Settings</see> instance with proper login information. Once this has been done, the
user may then call this method to attempt to log in again.</para>
<para>This method does not need to be called after the <see>AccountCreated</see> event.</para>
</remarks>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.DisplayAd(System.Int32)">
<summary>
Informs the server that an ad has been displayed. This should be sent whenever an ad
is updated on the client.
</summary>
<param name="adID">The ID of the ad assigned by the server.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.ClickAd(System.Int32)">
<summary>
Informs the server that an ad has been clicked.
</summary>
<param name="adID">The ID of the ad assigned by the server.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.JoinChannel(System.String,BNSharp.BattleNet.JoinMethod)">
<summary>
Sends a binary channel join command.
</summary>
<param name="channelName">The name of the channel to join.</param>
<param name="method">The specific way by which to join. This should typically be
set to <see cref="T:BNSharp.BattleNet.JoinMethod">JoinMethod.NoCreate</see>.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RequestUserProfile(System.String,BNSharp.BattleNet.UserProfileRequest)">
<summary>
Requests a user's profile.
</summary>
<param name="accountName">The name of the user for whom to request information.</param>
<param name="profile">The profile request, which should contain the keys to request.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RegisterCustomPacketHandler(BNSharp.BncsPacketId,BNSharp.Plugins.ParseCallback,BNSharp.Plugins.ParseCallback@)">
<summary>
Registers a custom handler for a specific packet ID. This method is not CLS-compliant.
</summary>
<param name="packetID">The packet to register to handle.</param>
<param name="parser">A callback that will handle the data.</param>
<param name="previousParser">A previous parser, or <see langword="null"/> if no parser was set to handle such a packet.</param>
<returns>A sink to fire off <see>BattleNetClient</see> events.</returns>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="parser"/> is <see langword="null"/>.</exception>
<exception cref="T:System.ArgumentOutOfRangeException">Thrown if <paramref name="packetID"/> refers to the <c>Warden</c> value, or if the
value is greater than 255 or less than 0.</exception>
<remarks>
<para>This method can be used to replace the default BN# packet handlers or to augment them with new handlers. For example, BN# does
not and will not likely ever support Diablo II Realms and Realm Character login. However, third-party developers can augment BN# to
handle those packets and support events on their own.</para>
<para>The <see>IBattleNetEvents</see> sink is the same for subsequent calls to this method per-instance of <see>BattleNetClient</see>,
so you don't need to do anything special with the return value each time you call this method.</para>
</remarks>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.UnregisterCustomPacketHandler(BNSharp.BncsPacketId,BNSharp.Plugins.ParseCallback)">
<summary>
Unregisters a custom handler for a specific packet ID, restoring the previous handler. This method is not CLS-compliant.
</summary>
<param name="packetID">The packet ID for which to unregister.</param>
<param name="previousParser">The previous parser. If none was provided during registration, this value may be <see langword="null"/>.</param>
<exception cref="T:System.ArgumentOutOfRangeException">Thrown if <paramref name="packetID"/> refers to the <c>Warden</c> value, or if the
value is greater than 255 or less than 0.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RegisterCustomPacketPriorities(BNSharp.Plugins.IPacketPriorityProvider)">
<summary>
Registers a custom packet priority list for consideration during packet parsing.
</summary>
<param name="newProvider">The new priority provider to use for priority lookups.</param>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="newProvider"/> is <see langword="null"/>.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.UnregisterCustomPacketPriorities(BNSharp.Plugins.IPacketPriorityProvider)">
<summary>
Unregisters a custom packet priority list from consideration during packet parsing.
</summary>
<param name="providerToRemove">The priority provider to remove from consideration.</param>
<exception cref="T:System.ArgumentNullException">Thrown if <paramref name="providerToRemove"/> is
<see langword="null"/>.</exception>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.OnEventExceptionThrown(BNSharp.EventExceptionEventArgs)">
<summary>
Raises the <see>EventExceptionThrown</see> event.
</summary>
<param name="e">The event arguments.</param>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RegisterUserJoinedNotification(BNSharp.Priority,BNSharp.UserEventHandler)">
<summary>
Registers for notification of the <see>UserJoined</see> event at the specified priority.
</summary>
<remarks>
<para>The event system in the JinxBot API supports normal event registration and prioritized event registration. You can use
normal syntax to register for events at <see cref="T:BNSharp.Priority">Normal priority</see>, so no special registration is needed; this is
accessed through normal event handling syntax (the += syntax in C#, or the <see langword="Handles" lang="VB"/> in Visual Basic.</para>
<para>Events in the JinxBot API are never guaranteed to be executed on the UI thread. Events that affect the user interface should
be marshaled back to the UI thread by the event handling code. Generally, high-priority event handlers are
raised on the thread that is parsing data from Battle.net, and lower-priority event handler are executed from the thread pool.</para>
<para>JinxBot guarantees that all event handlers will be fired regardless of exceptions raised in previous event handlers. However,
if a plugin repeatedly raises an exception, it may be forcefully unregistered from events.</para>
<para>To be well-behaved within JinxBot, plugins should always unregister themselves when they are being unloaded or when they
otherwise need to do so. Plugins may opt-in to a Reflection-based event handling registration system which uses attributes to
mark methods that should be used as event handlers.</para>
</remarks>
<param name="p">The priority at which to register.</param>
<param name="callback">The event handler that should be registered for this event.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.UserJoined"/>
<seealso cref="M:BNSharp.BattleNet.BattleNetClient.UnregisterUserJoinedNotification(BNSharp.Priority,BNSharp.UserEventHandler)"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.UnregisterUserJoinedNotification(BNSharp.Priority,BNSharp.UserEventHandler)">
<summary>
Unregisters for notification of the <see>UserJoined</see> event at the specified priority.
</summary>
<remarks>
<para>The event system in the JinxBot API supports normal event registration and prioritized event registration. You can use
normal syntax to register for events at <see cref="T:BNSharp.Priority">Normal priority</see>, so no special registration is needed; this is
accessed through normal event handling syntax (the += syntax in C#, or the <see langword="Handles" lang="VB"/> in Visual Basic.</para>
<para>Events in the JinxBot API are never guaranteed to be executed on the UI thread. Events that affect the user interface should
be marshaled back to the UI thread by the event handling code. Generally, high-priority event handlers are
raised on the thread that is parsing data from Battle.net, and lower-priority event handler are executed from the thread pool.</para>
<para>JinxBot guarantees that all event handlers will be fired regardless of exceptions raised in previous event handlers. However,
if a plugin repeatedly raises an exception, it may be forcefully unregistered from events.</para>
<para>To be well-behaved within JinxBot, plugins should always unregister themselves when they are being unloaded or when they
otherwise need to do so. Plugins may opt-in to a Reflection-based event handling registration system which uses attributes to
mark methods that should be used as event handlers.</para>
</remarks>
<param name="p">The priority from which to unregister.</param>
<param name="callback">The event handler that should be unregistered for this event.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.UserJoined"/>
<seealso cref="M:BNSharp.BattleNet.BattleNetClient.RegisterUserJoinedNotification(BNSharp.Priority,BNSharp.UserEventHandler)"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.OnUserJoined(BNSharp.UserEventArgs)">
<summary>
Raises the UserJoined event.
</summary>
<remarks>
<para>Only high-priority events are invoked immediately; others are deferred. For more information, see <see>UserJoined</see>.</para>
</remarks>
<param name="e">The event arguments.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.UserJoined"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RegisterUserLeftNotification(BNSharp.Priority,BNSharp.UserEventHandler)">
<summary>
Registers for notification of the <see>UserLeft</see> event at the specified priority.
</summary>
<remarks>
<para>The event system in the JinxBot API supports normal event registration and prioritized event registration. You can use
normal syntax to register for events at <see cref="T:BNSharp.Priority">Normal priority</see>, so no special registration is needed; this is
accessed through normal event handling syntax (the += syntax in C#, or the <see langword="Handles" lang="VB"/> in Visual Basic.</para>
<para>Events in the JinxBot API are never guaranteed to be executed on the UI thread. Events that affect the user interface should
be marshaled back to the UI thread by the event handling code. Generally, high-priority event handlers are
raised on the thread that is parsing data from Battle.net, and lower-priority event handler are executed from the thread pool.</para>
<para>JinxBot guarantees that all event handlers will be fired regardless of exceptions raised in previous event handlers. However,
if a plugin repeatedly raises an exception, it may be forcefully unregistered from events.</para>
<para>To be well-behaved within JinxBot, plugins should always unregister themselves when they are being unloaded or when they
otherwise need to do so. Plugins may opt-in to a Reflection-based event handling registration system which uses attributes to
mark methods that should be used as event handlers.</para>
</remarks>
<param name="p">The priority at which to register.</param>
<param name="callback">The event handler that should be registered for this event.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.UserLeft"/>
<seealso cref="M:BNSharp.BattleNet.BattleNetClient.UnregisterUserLeftNotification(BNSharp.Priority,BNSharp.UserEventHandler)"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.UnregisterUserLeftNotification(BNSharp.Priority,BNSharp.UserEventHandler)">
<summary>
Unregisters for notification of the <see>UserLeft</see> event at the specified priority.
</summary>
<remarks>
<para>The event system in the JinxBot API supports normal event registration and prioritized event registration. You can use
normal syntax to register for events at <see cref="T:BNSharp.Priority">Normal priority</see>, so no special registration is needed; this is
accessed through normal event handling syntax (the += syntax in C#, or the <see langword="Handles" lang="VB"/> in Visual Basic.</para>
<para>Events in the JinxBot API are never guaranteed to be executed on the UI thread. Events that affect the user interface should
be marshaled back to the UI thread by the event handling code. Generally, high-priority event handlers are
raised on the thread that is parsing data from Battle.net, and lower-priority event handler are executed from the thread pool.</para>
<para>JinxBot guarantees that all event handlers will be fired regardless of exceptions raised in previous event handlers. However,
if a plugin repeatedly raises an exception, it may be forcefully unregistered from events.</para>
<para>To be well-behaved within JinxBot, plugins should always unregister themselves when they are being unloaded or when they
otherwise need to do so. Plugins may opt-in to a Reflection-based event handling registration system which uses attributes to
mark methods that should be used as event handlers.</para>
</remarks>
<param name="p">The priority from which to unregister.</param>
<param name="callback">The event handler that should be unregistered for this event.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.UserLeft"/>
<seealso cref="M:BNSharp.BattleNet.BattleNetClient.RegisterUserLeftNotification(BNSharp.Priority,BNSharp.UserEventHandler)"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.OnUserLeft(BNSharp.UserEventArgs)">
<summary>
Raises the UserLeft event.
</summary>
<remarks>
<para>Only high-priority events are invoked immediately; others are deferred. For more information, see <see>UserLeft</see>.</para>
</remarks>
<param name="e">The event arguments.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.UserLeft"/>
</member>
<member name="M:BNSharp.BattleNet.BattleNetClient.RegisterUserShownNotification(BNSharp.Priority,BNSharp.UserEventHandler)">
<summary>
Registers for notification of the <see>UserShown</see> event at the specified priority.
</summary>
<remarks>
<para>The event system in the JinxBot API supports normal event registration and prioritized event registration. You can use
normal syntax to register for events at <see cref="T:BNSharp.Priority">Normal priority</see>, so no special registration is needed; this is
accessed through normal event handling syntax (the += syntax in C#, or the <see langword="Handles" lang="VB"/> in Visual Basic.</para>
<para>Events in the JinxBot API are never guaranteed to be executed on the UI thread. Events that affect the user interface should
be marshaled back to the UI thread by the event handling code. Generally, high-priority event handlers are
raised on the thread that is parsing data from Battle.net, and lower-priority event handler are executed from the thread pool.</para>
<para>JinxBot guarantees that all event handlers will be fired regardless of exceptions raised in previous event handlers. However,
if a plugin repeatedly raises an exception, it may be forcefully unregistered from events.</para>
<para>To be well-behaved within JinxBot, plugins should always unregister themselves when they are being unloaded or when they
otherwise need to do so. Plugins may opt-in to a Reflection-based event handling registration system which uses attributes to
mark methods that should be used as event handlers.</para>
</remarks>
<param name="p">The priority at which to register.</param>
<param name="callback">The event handler that should be registered for this event.</param>
<seealso cref="E:BNSharp.BattleNet.BattleNetClient.UserShown"/>