-
Notifications
You must be signed in to change notification settings - Fork 182
Expand file tree
/
Copy pathTeamTalkSrv.cs
More file actions
755 lines (686 loc) · 31.6 KB
/
TeamTalkSrv.cs
File metadata and controls
755 lines (686 loc) · 31.6 KB
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
/*
* Copyright (c) 2005-2018, BearWare.dk
*
* Contact Information:
*
* Bjoern D. Rasmussen
* Kirketoften 5
* DK-8260 Viby J
* Denmark
* Email: contact@bearware.dk
* Phone: +45 20 20 54 59
* Web: http://www.bearware.dk
*
* This source code is part of the TeamTalk SDK owned by
* BearWare.dk. Use of this file, or its compiled unit, requires a
* TeamTalk SDK License Key issued by BearWare.dk.
*
* The TeamTalk SDK License Agreement along with its Terms and
* Conditions are outlined in the file License.txt included with the
* TeamTalk SDK distribution.
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using c_tt;
namespace BearWare
{
/** @ingroup serverapi
*
* @brief Instantiate this class to start a TeamTalk server.
*
* These are the steps to start a TeamTalk server:
* - First call TeamTalk5Srv.SetEncryptionContext() to setup encryption.
* - Second call TeamTalk5Srv.UpdateServer() to setup server properties.
* - Third call TeamTalk5Srv.MakeChannel() to create the root channel.
*
* @see TeamTalk5Srv.StartServer() */
public class TeamTalk5Srv : TeamTalkSrvBase, IDisposable
{
/** @addtogroup servercallbacks
* @{ */
/**
* @brief Callback when a user is requesting to log on to the
* server.
*
* This callback occurs in the context of TeamTalkBase.DoLogin().
*
* @param lpClientErrorMsg Error message which should be sent back to
* user. Set @c nErrorNo to #BearWare.ClientError.CMDERR_SUCCESS if user is authorized.
* @param lpUser The user properties gathered so far.
* @param lpUserAccount The user account information which should
* be set for this user. */
public delegate void UserLogin(ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, ref UserAccount lpUserAccount);
/**
* @brief Register using #UserLogin delegate.
*/
public event UserLogin OnUserLogin;
/**
* @brief Callback when a user is requesting to change nickname
*
* This callback occurs in the context of TeamTalkBase.DoChangeNickname()
*
* @param lpClientErrorMsg Error message which should be sent back to
* user. Set @c nErrorNo to #BearWare.ClientError.CMDERR_SUCCESS if user is authorized.
* @param lpUser The user's properties.
* @param szNewNickname The new nickname requested by the user. */
public delegate void UserChangeNickname(ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, string szNewNickname);
/**
* @brief Register using #UserChangeNickname delegate.
*/
public event UserChangeNickname OnUserChangeNickname;
/**
* @brief Callback when a user is requesting to change status
*
* This callback occurs in the context of TeamTalkBase.DoChangeStatus()
*
* @param lpClientErrorMsg Error message which should be sent back to
* user. Set @c nErrorNo to #BearWare.ClientError.CMDERR_SUCCESS if user is authorized.
* @param lpUser The user's properties.
* @param nNewStatusMode The new status mode requested by the user.
* @param szNewStatusMsg The new status message requested by the user. */
public delegate void UserChangeStatus(ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, ref int nNewStatusMode, string szNewStatusMsg);
/**
* @brief Register using #UserChangeStatus delegate.
*/
public event UserChangeStatus OnUserChangeStatus;
/**
* @brief Callback when a user is requesting to create a new user
* account.
*
* This callback occurs in the context of TeamTalkBase.DoNewUserAccount().
*
* @param lpClientErrorMsg Error message which should be sent back to
* user. Set @c nErrorNo to #BearWare.ClientError.CMDERR_SUCCESS if user is authorized.
* @param lpUser The user's properties.
* @param lpUserAccount The properties of the user account to be created. */
public delegate void UserCreateUserAccount(ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, ref UserAccount lpUserAccount);
/**
* @brief Register using #UserCreateUserAccount delegate.
*/
public event UserCreateUserAccount OnUserCreateUserAccount;
/**
* @brief Callback when a user is requesting to delete a user
* account.
*
* This callback occurs in the context of TeamTalkBase.DoDeleteUserAccount().
*
* @param lpClientErrorMsg Error message which should be sent back to
* user. Set @c nErrorNo to #BearWare.ClientError.CMDERR_SUCCESS if user is authorized.
* @param lpUser The properties of the user requesting.
* @param szUsername The username of the account to delete. */
public delegate void UserDeleteUserAccount(ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, string szUsername);
/**
* @brief Register using #UserCreateUserAccount delegate.
*/
public event UserDeleteUserAccount OnUserDeleteUserAccount;
/**
* @brief Callback when a user is requesting to ban a user.
*
* This callback occurs in the context of TeamTalkBase.DoBanUser().
*
* @param lpClientErrorMsg Error message which should be sent back to
* user. Set @c nErrorNo to #BearWare.ClientError.CMDERR_SUCCESS if user is authorized.
* @param lpBanner The properties of the user requesting the ban.
* @param lpBanee The properties of the user who should be banned. */
public delegate void UserAddServerBan(ref ClientErrorMsg lpClientErrorMsg, ref User lpBanner, ref User lpBanee);
/**
* @brief Register using #UserAddServerBan delegate.
*/
public event UserAddServerBan OnUserAddServerBan;
/**
* @brief Callback when a user is requesting to ban an IP-address.
*
* This callback occurs in the context of TeamTalkBase.DoBanIPAddress().
*
* @param lpClientErrorMsg Error message which should be sent back to
* user. Set @c nErrorNo to #BearWare.ClientError.CMDERR_SUCCESS if user is authorized.
* @param lpBanner The properties of the user requesting the ban. This value
* can be NULL if #BearWare.ServerProperties @c nMaxLoginAttempts is enabled.
* @param szIPAddress The IP-address to be banned. */
public delegate void UserAddServerBanIPAddress(ref ClientErrorMsg lpClientErrorMsg,ref User lpBanner, string szIPAddress);
/**
* @brief Register using #UserAddServerBan delegate.
*/
public event UserAddServerBanIPAddress OnUserAddServerBanIPAddress;
/**
* @brief Callback when a user is requesting to remove a ban.
*
* This callback occurs in the context of TeamTalkBase.DoUnBanUser().
*
* @param lpClientErrorMsg Error message which should be sent back to
* user. Set @c nErrorNo to #BearWare.ClientError.CMDERR_SUCCESS if user is authorized.
* @param lpUser The properties of the user doing the request.
* @param szIPAddress The IP-address to be unbanned. */
public delegate void UserDeleteServerBan(ref ClientErrorMsg lpClientErrorMsg,ref User lpUser, string szIPAddress);
/**
* @brief Register using #UserAddServerBanIPAddress delegate.
*/
public event UserDeleteServerBan OnUserDeleteServerBan;
/** @} */
/** @addtogroup serverlogevents
* @{ */
/**
* @brief Callback when a new user is connecting to the server.
*
* @param lpUser The user properties gathered so far. */
public delegate void UserConnected(ref User lpUser);
/**
* @brief Register using #UserConnected delegate.
*/
public event UserConnected OnUserConnected;
/**
* @brief Callback when a user has logged in.
*
* This callback occurs in the context of TeamTalkBase.DoLogin() and if
* #UserLogin returned #BearWare.ClientError.CMDERR_SUCCESS.
*
* @param lpUser The user properties of the user who logged in. */
public delegate void UserLoggedIn(ref User lpUser);
/**
* @brief Register using #UserLoggedIn delegate.
*/
public event UserLoggedIn OnUserLoggedIn;
/**
* @brief Callback when a user has logged out.
*
* @param lpUser The properties of the user. */
public delegate void UserLoggedOut(ref User lpUser);
/**
* @brief Register using #UserLoggedOut delegate.
*/
public event UserLoggedOut OnUserLoggedOut;
/**
* @brief Callback when user has disconnected.
*
* @param lpUser The properties of the user. */
public delegate void UserDisconnected(ref User lpUser);
/**
* @brief Register using #UserDisconnected delegate.
*/
public event UserDisconnected OnUserDisconnected;
/**
* @brief Callback when a user's connection has timed out.
*
* @param lpUser The properties of the user. */
public delegate void UserTimedout(ref User lpUser);
/**
* @brief Register using #UserTimedout delegate.
*/
public event UserTimedout OnUserTimedout;
/**
* @brief Callback when a user has been kicked.
*
* @param lpKicker The user who had initiated the kick. This can be 0.
* @param lpKickee The user who has been kicked.
* @param lpChannel The channel where the user is kicked from. The can be 0. */
public delegate void UserKicked(ref User lpKicker, ref User lpKickee, ref Channel lpChannel);
/**
* @brief Register using #UserKicked delegate.
*/
public event UserKicked OnUserKicked;
/**
* @brief Callback when a user has been banned.
*
* @param lpBanner The user who had initiated the ban. This can be 0.
* @param lpBanee The user who has been banned. This may only
* contain an IP-address.
* @param lpChannel The channel where the user is banned from. The can be 0. */
public delegate void UserBanned(ref User lpBanner, ref User lpBanee, IntPtr lpChannel);
/**
* @brief Register using #UserBanned delegate.
*/
public event UserBanned OnUserBanned;
/**
* @brief Callback when a ban is removed.
*
* This callback occurs in the contect of TeamTalkBase.DoUnBanUser().
*
* @param lpUnbanner The user removing the ban.
* @param szIPAddress The IP-address which is unbanned. */
public delegate void UserUnbanned(ref User lpUnbanner, string szIPAddress);
/**
* @brief Register using #UserUnbanned delegate.
*/
public event UserUnbanned OnUserUnbanned;
/**
* @brief Callback when a user's properties are being updated.
*
* @param lpUser The properties of the user. */
public delegate void UserUpdated(ref User lpUser);
/**
* @brief Register using #UserUpdated delegate.
*/
public event UserUpdated OnUserUpdated;
/**
* @brief Callback when a user has joined a channel.
*
* @param lpUser The properties of the user.
* @param lpChannel The properties of the channel being joined. */
public delegate void UserJoinedChannel(ref User lpUser, ref Channel lpChannel);
/**
* @brief Register using #UserJoinedChannel delegate.
*/
public event UserJoinedChannel OnUserJoinedChannel;
/**
* @brief Callback when a user has left a channel.
*
* @param lpUser The properties of the user.
* @param lpChannel The properties of the channel being left. */
public delegate void UserLeftChannel(ref User lpUser, ref Channel lpChannel);
/**
* @brief Register using #UserLeftChannel delegate.
*/
public event UserLeftChannel OnUserLeftChannel;
/**
* @brief Callback when a user has been moved.
*
* This callback occurs in the context of TeamTalkBase.DoMoveUser().
*
* @param lpMover The user who initiated the move.
* @param lpMovee The user who has been moved. */
public delegate void UserMoved(ref User lpMover, ref User lpMovee);
/**
* @brief Register using #UserMoved delegate.
*/
public event UserMoved OnUserMoved;
/**
* @brief Callback when a user is sending a text message.
*
* This callback occurs in the context of TeamTalkBase.DoTextMessage().
*
* @param lpUser The properties of the user.
* @param lpTextMessage The text message being sent. */
public delegate void UserTextMessage(ref User lpUser,ref TextMessage lpTextMessage);
/**
* @brief Register using #UserTextMessage delegate.
*/
public event UserTextMessage OnUserTextMessage;
/**
* @brief Callback when a new channel has been created.
*
* This callback occurs in the context of TeamTalkBase.DoMakeChannel() or
* TeamTalkBase.DoJoinChannel().
*
* @param lpChannel The channel which has been created.
* @param lpUser The user who created the channel. This can be 0. */
public delegate void ChannelCreated(ref Channel lpChannel,ref User lpUser);
/**
* @brief Register using #ChannelCreated delegate.
*/
public event ChannelCreated OnChannelCreated;
/**
* @brief Callback when a channel has been updated.
*
* This callback occurs in the context of TeamTalkBase.DoUpdateChannel().
*
* @param lpChannel The new properties of the channel.
* @param lpUser The user who initiated the update. This can be 0. */
public delegate void ChannelUpdated(ref Channel lpChannel,ref User lpUser);
/**
* @brief Register using #ChannelUpdated delegate.
*/
public event ChannelUpdated OnChannelUpdated;
/**
* @brief Callback when channel has been removed.
*
* @param lpChannel The properties of the channel which has been removed.
* @param lpUser The properties of the who initiated the
* removal. This can be 0. */
public delegate void ChannelRemoved(ref Channel lpChannel,ref User lpUser);
/**
* @brief Register using #ChannelRemoved delegate.
*/
public event ChannelRemoved OnChannelRemoved;
/**
* @brief Callback when a new file has been uploaded to a channel.
*
* @param lpRemoteFile The properties of the file.
* @param lpUser The properties of the user who uploaded the file. */
public delegate void FileUploaded(ref RemoteFile lpRemoteFile,ref User lpUser);
/**
* @brief Register using #FileUploaded delegate.
*/
public event FileUploaded OnFileUploaded;
/**
* @brief Callback when a user has downloaded a file.
*
* @param lpRemoteFile The properties of the file.
* @param lpUser The properties of the user who downloaded the file. */
public delegate void FileDownloaded(ref RemoteFile lpRemoteFile,ref User lpUser);
/**
* @brief Register using #FileDownloaded delegate.
*/
public event FileDownloaded OnFileDownloaded;
/**
* @brief Callback when a user has deleted a file.
*
* @param lpRemoteFile The properties of the file.
* @param lpUser The properties of the user who deleted the file. */
public delegate void FileDeleted(ref RemoteFile lpRemoteFile,ref User lpUser);
/**
* @brief Register using #FileDeleted delegate.
*/
public event FileDeleted OnFileDeleted;
/**
* @brief Callback when a user has updated the server properties.
*
* This callback occurs in the context of TeamTalkBase.DoUpdateServer().
*
* @param lpServerProperties The properties of the server.
* @param lpUser The user who initiated the server update. */
public delegate void ServerUpdated(ref ServerProperties lpServerProperties,ref User lpUser);
/**
* @brief Register using #ServerUpdated delegate.
*/
public event ServerUpdated OnServerUpdated;
/**
* @brief Callback when a user has reguested to save the server
* configuration.
*
* @param lpUser The properties of the user who requested to save
* the server configuration. This can be 0. */
public delegate void SaveServerConfig(ref User lpUser);
/**
* @brief Register using #SaveServerConfig delegate.
*/
public event SaveServerConfig OnSaveServerConfig;
/** @} */
/** @addtogroup serverapi
* @{ */
/** @brief Instantiate TeamTalk server. Call UpdateServer()
* and MakeChannel() to setup server properties and root
* channel.
*
* Users cannot log in unless root channel and #BearWare.ServerProperties have been set.
* @see UpdateServer()
* @see MakeChannel()
* @see StartServer() */
public TeamTalk5Srv()
{
Init();
}
/** @brief Instantiate TeamTalk server with a root channel.
*
* Users cannot log in unless root channel and #BearWare.ServerProperties have been set.
* @see UpdateServer()
* @see MakeChannel()
* @see StartServer() */
public TeamTalk5Srv(Channel lpChannel)
: base(lpChannel)
{
Init();
}
/** @brief Instantiate TeamTalk server with root channel and server properties.
*
* @see UpdateServer()
* @see MakeChannel()
* @see StartServer() */
public TeamTalk5Srv(Channel lpChannel, ServerProperties lpServerProperties)
: base(lpChannel, lpServerProperties)
{
Init();
}
void Init()
{
base.OnChannelCreatedCallback += new ChannelCreatedCallback(TeamTalkSrv_OnChannelCreatedCallback);
base.OnChannelRemovedCallback += new ChannelRemovedCallback(TeamTalkSrv_OnChannelRemovedCallback);
base.OnChannelUpdatedCallback += new ChannelUpdatedCallback(TeamTalkSrv_OnChannelUpdatedCallback);
base.OnUserLoginCallback += new UserLoginCallback(TeamTalkSrv_OnUserLoginCallback);
base.OnUserLoggedOutCallback += new UserLoggedOutCallback(TeamTalkSrv_OnUserLoggedOutCallback);
base.OnUserLoggedInCallBack += new UserLoggedInCallback(TeamTalkSrv_OnUserLoggedInCallBack);
base.OnUserTextMessageCallback += new UserTextMessageCallback(TeamTalkSrv_OnUserTextMessageCallback);
base.OnUserAddServerBanCallback += new UserAddServerBanCallback(TeamTalkSrv_OnUserAddServerBanCallback);
base.OnUserAddServerBanIPAddressCallback += new UserAddServerBanIPAddressCallback(TeamTalkSrv_OnUserAddServerBanIPAddressCallback);
base.OnUserDeleteServerBanCallback += new UserDeleteServerBanCallback(TeamTalkSrv_OnUserDeleteServerBanCallback);
base.OnUserBannedCallback += new UserBannedCallback(TeamTalkSrv_OnUserBannedCallback);
base.OnUserConnectedCallback += new UserConnectedCallback(TeamTalkSrv_OnUserConnectedCallback);
base.OnUserDisconnectedCallback += new UserDisconnectedCallback(TeamTalkSrv_OnUserDisconnectedCallback);
base.OnUserTimedoutCallback += new UserTimedoutCallback(TeamTalkSrv_OnUserTimedoutCallback);
base.OnUserLeftChannelCallback += new UserLeftChannelCallback(TeamTalkSrv_OnUserLeftChannelCallback);
base.OnUserJoinedChannelCallback += new UserJoinedChannelCallback(TeamTalkSrv_OnUserJoinedChannelCallback);
base.OnUserKickedCallback += new UserKickedCallback(TeamTalkSrv_OnUserKickedCallback);
base.OnUserMovedCallback += new UserMovedCallback(TeamTalkSrv_OnUserMovedCallback);
base.OnUserUpdatedCallback += new UserUpdatedCallback(TeamTalkSrv_OnUserUpdatedCallback);
base.OnSaveServerConfigCallback += new SaveServerConfigCallback(TeamTalkSrv_OnSaveServerConfigCallback);
base.OnServerUpdatedCallback += new ServerUpdatedCallback(TeamTalkSrv_OnServerUpdatedCallback);
base.OnUserCreateUserAccountCallback += new UserCreateUserAccountCallback(TeamTalkSrv_OnUserCreateUserAccountCallback);
base.OnUserDeleteUserAccountCallback += new UserDeleteUserAccountCallback(TeamTalkSrv_OnUserDeleteUserAccountCallback);
base.OnFileDeletedCallback += new FileDeletedCallback(TeamTalkSrv_OnFileDeletedCallback);
base.OnFileDownloadedCallback += new FileDownloadedCallback(TeamTalkSrv_OnFileDownloadedCallback);
base.OnFileUploadedCallback += new FileUploadedCallback(TeamTalkSrv_OnFileUploadedCallback);
base.OnUserChangeNicknameCallback += new UserChangeNicknameCallback(TeamTalk5Srv_OnUserChangeNicknameCallback);
base.OnUserChangeStatusCallback += new UserChangeStatusCallback(TeamTalk5Srv_OnUserChangeStatusCallback);
}
void TeamTalk5Srv_OnUserChangeStatusCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, ref int nNewStatusMode, string szNewStatusMsg)
{
if(OnUserChangeStatus !=null)
{
OnUserChangeStatus(ref lpClientErrorMsg, ref lpUser, ref nNewStatusMode, szNewStatusMsg);
}
}
void TeamTalk5Srv_OnUserChangeNicknameCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, string szNewNickname)
{
if(OnUserChangeNickname != null)
{
OnUserChangeNickname(ref lpClientErrorMsg, ref lpUser, szNewNickname);
}
}
/** @} */
void TeamTalkSrv_OnFileUploadedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref RemoteFile lpRemoteFile, ref User lpUser)
{
if(OnFileUploaded != null)
{
OnFileUploaded(ref lpRemoteFile, ref lpUser);
}
}
void TeamTalkSrv_OnFileDownloadedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref RemoteFile lpRemoteFile, ref User lpUser)
{
if(OnFileDownloaded != null)
{
OnFileDownloaded(ref lpRemoteFile, ref lpUser);
}
}
void TeamTalkSrv_OnFileDeletedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref RemoteFile lpRemoteFile, ref User lpUser)
{
if(OnFileDeleted != null)
{
OnFileDeleted(ref lpRemoteFile, ref lpUser);
}
}
void TeamTalkSrv_OnUserDeleteUserAccountCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, string szUsername)
{
if(OnUserDeleteUserAccount != null)
{
OnUserDeleteUserAccount(ref lpClientErrorMsg, ref lpUser, szUsername);
}
}
void TeamTalkSrv_OnUserCreateUserAccountCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, ref UserAccount lpUserAccount)
{
if(OnUserCreateUserAccount != null)
{
OnUserCreateUserAccount(ref lpClientErrorMsg, ref lpUser, ref lpUserAccount);
}
}
void TeamTalkSrv_OnServerUpdatedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref ServerProperties lpServerProperties, ref User lpUser)
{
if(OnServerUpdated != null)
{
OnServerUpdated(ref lpServerProperties, ref lpUser);
}
}
void TeamTalkSrv_OnSaveServerConfigCallback(IntPtr lpTTSInstance, IntPtr lpUserData, IntPtr lpUser)
{
User user = new User();
if (lpUser != IntPtr.Zero)
{
user = (User)Marshal.PtrToStructure(lpUser, typeof(User));
}
if (OnSaveServerConfig != null)
{
OnSaveServerConfig(ref user);
}
}
void TeamTalkSrv_OnUserUpdatedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpUser)
{
if(OnUserUpdated != null)
{
OnUserUpdated(ref lpUser);
}
}
void TeamTalkSrv_OnUserMovedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpMover, ref User lpMovee)
{
if(OnUserMoved != null)
{
OnUserMoved(ref lpMover, ref lpMovee);
}
}
void TeamTalkSrv_OnUserKickedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, IntPtr lpKicker, ref User lpKickee, IntPtr lpChannel)
{
User user = new User();
if (lpKicker != IntPtr.Zero)
{
user = (User)Marshal.PtrToStructure(lpKicker, typeof(User));
}
Channel chan = new Channel();
if(lpChannel != IntPtr.Zero)
{
chan = (Channel)Marshal.PtrToStructure(lpChannel, typeof(Channel));
}
if(OnUserKicked != null)
{
OnUserKicked(ref user, ref lpKickee, ref chan);
}
}
void TeamTalkSrv_OnUserJoinedChannelCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpUser, ref Channel lpChannel)
{
if(OnUserJoinedChannel !=null)
{
OnUserJoinedChannel(ref lpUser, ref lpChannel);
}
}
void TeamTalkSrv_OnUserLeftChannelCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpUser, ref Channel lpChannel)
{
if(OnUserLeftChannel != null)
{
OnUserLeftChannel(ref lpUser, ref lpChannel);
}
}
void TeamTalkSrv_OnUserTimedoutCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpUser)
{
if(OnUserTimedout != null)
{
OnUserTimedout(ref lpUser);
}
}
void TeamTalkSrv_OnUserDisconnectedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpUser)
{
if(OnUserDisconnected != null)
{
OnUserDisconnected(ref lpUser);
}
}
void TeamTalkSrv_OnUserConnectedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpUser)
{
if(OnUserConnected != null)
{
OnUserConnected(ref lpUser);
}
}
void TeamTalkSrv_OnUserBannedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpBanner, ref User lpBanee, IntPtr lpChannel)
{
if(OnUserBanned != null)
{
OnUserBanned(ref lpBanner, ref lpBanee, lpChannel);
}
}
void TeamTalkSrv_OnUserDeleteServerBanCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, string szIPAddress)
{
if(OnUserDeleteServerBan != null)
{
OnUserDeleteServerBan(ref lpClientErrorMsg, ref lpUser, szIPAddress);
}
}
void TeamTalkSrv_OnUserAddServerBanIPAddressCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref ClientErrorMsg lpClientErrorMsg, ref User lpBanner, string szIPAddress)
{
if(OnUserAddServerBanIPAddress != null)
{
OnUserAddServerBanIPAddress(ref lpClientErrorMsg, ref lpBanner, szIPAddress);
}
}
void TeamTalkSrv_OnUserAddServerBanCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref ClientErrorMsg lpClientErrorMsg, ref User lpBanner, ref User lpBanee)
{
if(OnUserAddServerBan != null)
{
OnUserAddServerBan(ref lpClientErrorMsg, ref lpBanner, ref lpBanee);
}
}
void TeamTalkSrv_OnUserTextMessageCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpUser, ref TextMessage lpTextMessage)
{
if(OnUserTextMessage !=null)
{
OnUserTextMessage(ref lpUser, ref lpTextMessage);
}
}
void TeamTalkSrv_OnUserLoggedOutCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpUser)
{
if (OnUserLoggedOut != null)
{
OnUserLoggedOut(ref lpUser);
}
}
void TeamTalkSrv_OnUserLoggedInCallBack(IntPtr lpTTSInstance, IntPtr lpUserData, ref User lpUser)
{
if (OnUserLoggedIn != null)
{
OnUserLoggedIn(ref lpUser);
}
}
void TeamTalkSrv_OnUserLoginCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, ref UserAccount lpUserAccount)
{
if (OnUserLogin != null)
{
OnUserLogin(ref lpClientErrorMsg, ref lpUser, ref lpUserAccount);
}
}
void TeamTalkSrv_OnChannelUpdatedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref Channel lpChannel, IntPtr lpUser)
{
User user = new User();
if (lpUser != IntPtr.Zero)
{
user = (User)Marshal.PtrToStructure(lpUser, typeof(User));
}
if (OnChannelUpdated != null)
{
OnChannelUpdated(ref lpChannel, ref user);
}
}
void TeamTalkSrv_OnChannelRemovedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref Channel lpChannel, IntPtr lpUser)
{
User user = new User();
if (lpUser != IntPtr.Zero)
{
user = (User)Marshal.PtrToStructure(lpUser, typeof(User));
}
if (OnChannelRemoved != null)
{
OnChannelRemoved(ref lpChannel, ref user);
}
}
void TeamTalkSrv_OnChannelCreatedCallback(IntPtr lpTTSInstance, IntPtr lpUserData, ref Channel lpChannel, IntPtr lpUser)
{
User user = new User();
if (lpUser != IntPtr.Zero)
{
user = (User)Marshal.PtrToStructure(lpUser, typeof(User));
}
if (OnChannelCreated != null)
{
OnChannelCreated(ref lpChannel, ref user);
}
}
}
}