39 static IntPtr m_ttsInst;
45 private void deleteMe()
47 if (m_ttsInst != IntPtr.Zero)
49 TTProDLL.TTS_CloseTeamTalk(m_ttsInst);
50 m_ttsInst = IntPtr.Zero;
80 return TTProDLL.TTS_SetEncryptionContext(m_ttsInst, ref szCertificateFile, ref szPrivateKeyFile);
102 return TTProDLL.TTS_SetEncryptionContextEx(m_ttsInst, ref lpEncryptionContext);
122 m_ttsInst = TTProDLL.TTS_InitTeamTalk();
150 return TTProDLL.TTS_RunEventLoop(m_ttsInst, pnWaitMs);
171 return TTProDLL.TTS_SetChannelFilesRoot(m_ttsInst, szFilesRoot, nMaxDiskUsage, nDefaultChannelQuota);
188 return TTProDLL.TTS_UpdateServer(m_ttsInst, ref lpServerProperties);
204 return TTProDLL.TTS_MakeChannel(m_ttsInst, ref lpChannel);
217 return TTProDLL.TTS_UpdateChannel(m_ttsInst, ref lpChannel);
229 return TTProDLL.TTS_RemoveChannel(m_ttsInst, nChannelID);
245 return TTProDLL.TTS_AddFileToChannel(m_ttsInst, ref szLocalFilePath, ref lpRemoteFile);
261 return TTProDLL.TTS_RemoveFileFromChannel(m_ttsInst, ref lpRemoteFile);
273 return TTProDLL.TTS_MoveUser(m_ttsInst, nUserID, ref lpChannel);
285 return TTProDLL.TTS_SendTextMessage(m_ttsInst, ref lpTextMessage);
301 public bool StartServer(
string szBindIPAddr,
int nTcpPort,
int nUdpPort,
bool bEncrypted)
303 return TTProDLL.TTS_StartServer(m_ttsInst, szBindIPAddr, nTcpPort, nUdpPort, bEncrypted);
318 public bool StartServerSysID(
string szBindIPAddr,
int nTcpPort,
int nUdpPort,
bool bEncrypted,
321 return TTProDLL.TTS_StartServerSysID(m_ttsInst, szBindIPAddr, nTcpPort, nUdpPort, bEncrypted, szSystemID);
329 return TTProDLL.TTS_StopServer(m_ttsInst);
332 public static string GetVersion() {
return Marshal.PtrToStringAuto(TTProDLL.TT_GetVersion()); }
333 class CallBack : IDisposable
335 private GCHandle hCallBack;
336 private IntPtr pCallFuncPointer;
340 this.lpCallback = lpCallback;
341 hCallBack = GCHandle.Alloc(lpCallback);
342 pCallFuncPointer = Marshal.GetFunctionPointerForDelegate(lpCallback);
343 GC.KeepAlive(lpCallback);
353 return pCallFuncPointer;
357 GC.SuppressFinalize(
this);
367 if (hCallBack.IsAllocated)
369 pCallFuncPointer = IntPtr.Zero;
374 return Object.Equals(lpCallback, x);
377 private delegate
bool DLL(IntPtr lpTTSInstance, IntPtr lpCallback,
int lpUserData,
bool bEnable);
378 private Dictionary<CallBack, DLL> Delegate2DLL =
new Dictionary<CallBack, DLL>();
379 private bool RegisterServerCallback(Delegate lpCallback,
int lpUserData,
bool bEnable)
381 CallBack callBack =
null;
383 string TTProDLL_Method =
"TTS_Register" + lpCallback.GetType().ToString().Split(
'+')[1];
384 MethodInfo method = typeof(TTProDLL).GetMethod(TTProDLL_Method);
385 DLL dg = (DLL)Delegate.CreateDelegate(typeof(DLL), method);
387 foreach (KeyValuePair<CallBack, DLL> cb
in Delegate2DLL)
389 if (cb.Key.Compare(lpCallback))
391 if (bEnable ==
true)
return true;
393 b = Delegate2DLL[callBack](m_ttsInst, callBack.GetFuncPointer(), 0, bEnable);
395 Delegate2DLL.Remove(callBack);
400 if (callBack ==
null && bEnable)
402 callBack =
new CallBack(lpCallback);
403 Delegate2DLL.Add(callBack, dg);
404 b = Delegate2DLL[callBack](m_ttsInst, callBack.GetFuncPointer(), 0, bEnable);
408 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
409 internal delegate
void UserLoggedInCallback(IntPtr lpTTSInstance, [In] IntPtr lpUserData, [In] ref User lpUser);
410 private event UserLoggedInCallback onUserLoggedInCallback;
411 internal event UserLoggedInCallback OnUserLoggedInCallBack
417 onUserLoggedInCallback += value;
418 RegisterServerCallback(value, 0,
true);
425 onUserLoggedInCallback -= value;
426 RegisterServerCallback(value, 0,
false);
432 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
433 internal delegate
void UserChangeNicknameCallback(IntPtr lpTTSInstance, IntPtr lpUserData, [In, Out] ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, [In] [MarshalAs(UnmanagedType.LPWStr)]
string szNewNickname);
434 private event UserChangeNicknameCallback onUserChangeNicknameCallback;
435 internal event UserChangeNicknameCallback OnUserChangeNicknameCallback
441 onUserChangeNicknameCallback += value;
442 RegisterServerCallback(value, 0,
true);
449 onUserChangeNicknameCallback -= value;
450 RegisterServerCallback(value, 0,
false);
454 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
455 internal delegate
void UserChangeStatusCallback(IntPtr lpTTSInstance, IntPtr lpUserData, [In,Out] ref ClientErrorMsg lpClientErrorMsg, [In] ref User lpUser, [In] ref
int nNewStatusMode, [In] [MarshalAs(UnmanagedType.LPWStr)]
string szNewStatusMsg);
456 private event UserChangeStatusCallback onUserChangeStatusCallback;
457 internal event UserChangeStatusCallback OnUserChangeStatusCallback
463 onUserChangeStatusCallback += value;
464 RegisterServerCallback(value, 0,
true);
471 onUserChangeStatusCallback -= value;
472 RegisterServerCallback(value, 0,
false);
477 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
478 internal delegate
void UserLoginCallback(IntPtr lpTTSInstance, IntPtr lpUserData, [In, Out] ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, [In, Out]ref UserAccount lpUserAccount);
479 object objectLock =
new Object();
480 private event UserLoginCallback onUserLoginCallback;
481 internal event UserLoginCallback OnUserLoginCallback
487 onUserLoginCallback += value;
488 RegisterServerCallback(value, 0,
true);
495 onUserLoginCallback -= value;
496 RegisterServerCallback(value, 0,
false);
500 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
501 internal delegate
void UserCreateUserAccountCallback(IntPtr lpTTSInstance, IntPtr lpUserData, [In, Out] ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, [In, Out]ref UserAccount lpUserAccount);
502 private event UserCreateUserAccountCallback onUserCreateUserAccountCallback;
503 internal event UserCreateUserAccountCallback OnUserCreateUserAccountCallback
507 onUserCreateUserAccountCallback += value;
508 RegisterServerCallback(value, 0,
true);
512 onUserCreateUserAccountCallback -= value;
513 RegisterServerCallback(value, 0,
false);
516 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
517 internal delegate
void UserDeleteUserAccountCallback(IntPtr lpTTSInstance, IntPtr lpUserData, [In, Out] ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, [In] [MarshalAs(UnmanagedType.LPWStr)]
string szUsername);
518 private event UserDeleteUserAccountCallback onUserDeleteUserAccountCallback;
519 internal event UserDeleteUserAccountCallback OnUserDeleteUserAccountCallback
523 onUserDeleteUserAccountCallback += value;
524 RegisterServerCallback(value, 0,
true);
528 onUserDeleteUserAccountCallback -= value;
529 RegisterServerCallback(value, 0,
false);
532 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
533 internal delegate
void UserAddServerBanCallback(IntPtr lpTTSInstance, IntPtr lpUserData, [In, Out] ref ClientErrorMsg lpClientErrorMsg, [In,Out] ref User lpBanner, [In,Out] ref User lpBanee);
534 private event UserAddServerBanCallback onUserAddServerBanCallback;
535 internal event UserAddServerBanCallback OnUserAddServerBanCallback
539 onUserAddServerBanCallback += value;
540 RegisterServerCallback(value, 0,
true);
544 onUserAddServerBanCallback -= value;
545 RegisterServerCallback(value, 0,
false);
548 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
549 internal delegate
void UserAddServerBanIPAddressCallback(IntPtr lpTTSInstance,
551 [In, Out] ref ClientErrorMsg lpClientErrorMsg,
552 [In] ref User lpBanner,
553 [In,Out] [MarshalAs(UnmanagedType.LPWStr)]
string szIPAddress);
554 private event UserAddServerBanIPAddressCallback onUserAddServerBanIPAddressCallback;
555 internal event UserAddServerBanIPAddressCallback OnUserAddServerBanIPAddressCallback
559 onUserAddServerBanIPAddressCallback += value;
560 RegisterServerCallback(value, 0,
true);
564 onUserAddServerBanIPAddressCallback -= value;
565 RegisterServerCallback(value, 0,
false);
568 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
569 internal delegate
void UserDeleteServerBanCallback(IntPtr lpTTSInstance,
571 [In, Out] ref ClientErrorMsg lpClientErrorMsg,
572 [In] ref User lpUser,
573 [In] [MarshalAs(UnmanagedType.LPWStr)]
string szIPAddress);
574 private event UserDeleteServerBanCallback onUserDeleteServerBanCallback;
575 internal event UserDeleteServerBanCallback OnUserDeleteServerBanCallback
579 onUserDeleteServerBanCallback += value;
580 RegisterServerCallback(value, 0,
true);
584 onUserDeleteServerBanCallback -= value;
585 RegisterServerCallback(value, 0,
false);
588 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
589 internal delegate
void UserConnectedCallback(IntPtr lpTTSInstance,
590 IntPtr lpUserData, [In] ref User lpUser);
591 private event UserConnectedCallback onUserConnectedCallback;
592 internal event UserConnectedCallback OnUserConnectedCallback
596 onUserConnectedCallback += value;
597 RegisterServerCallback(value, 0,
true);
601 onUserConnectedCallback -= value;
602 RegisterServerCallback(value, 0,
false);
605 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
606 internal delegate
void UserLoggedOutCallback(IntPtr lpTTSInstance,
607 IntPtr lpUserData, [In] ref User lpUser);
608 private event UserLoggedOutCallback onUserLoggedOutCallback;
609 internal event UserLoggedOutCallback OnUserLoggedOutCallback
613 onUserLoggedOutCallback += value;
614 RegisterServerCallback(value, 0,
true);
618 onUserLoggedOutCallback -= value;
619 RegisterServerCallback(value, 0,
false);
622 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
623 internal delegate
void UserDisconnectedCallback(IntPtr lpTTSInstance,
624 IntPtr lpUserData, [In] ref User lpUser);
625 private event UserDisconnectedCallback onUserDisconnectedCallback;
626 internal event UserDisconnectedCallback OnUserDisconnectedCallback
630 onUserDisconnectedCallback += value;
631 RegisterServerCallback(value, 0,
true);
635 onUserDisconnectedCallback -= value;
636 RegisterServerCallback(value, 0,
false);
639 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
640 internal delegate
void UserTimedoutCallback(IntPtr lpTTSInstance,
641 IntPtr lpUserData, [In] ref User lpUser);
642 private event UserTimedoutCallback onUserTimedoutCallback;
643 internal event UserTimedoutCallback OnUserTimedoutCallback
647 onUserTimedoutCallback += value;
648 RegisterServerCallback(value, 0,
true);
652 onUserTimedoutCallback -= value;
653 RegisterServerCallback(value, 0,
false);
656 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
657 internal delegate
void UserKickedCallback(IntPtr lpTTSInstance,
658 IntPtr lpUserData, IntPtr lpKicker,
659 [In] ref User lpKickee, [In] IntPtr lpChannel);
660 private event UserKickedCallback onUserKickedCallback;
661 internal event UserKickedCallback OnUserKickedCallback
665 onUserKickedCallback += value;
666 RegisterServerCallback(value, 0,
true);
670 onUserKickedCallback -= value;
671 RegisterServerCallback(value, 0,
false);
674 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
675 internal delegate
void UserBannedCallback(IntPtr lpTTSInstance,IntPtr lpUserData, [In,Out] ref User lpBanner,[In,Out] ref User lpBanee, IntPtr lpChannel);
676 private event UserBannedCallback onUserBannedCallback;
677 internal event UserBannedCallback OnUserBannedCallback
681 onUserBannedCallback += value;
682 RegisterServerCallback(value, 0,
true);
686 onUserBannedCallback -= value;
687 RegisterServerCallback(value, 0,
false);
690 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
691 internal delegate
void UserUnbannedCallback(IntPtr lpTTSInstance,
692 IntPtr lpUserData, [In] ref User lpUnbanner,
693 [In] [MarshalAs(UnmanagedType.LPWStr)]
string szIPAddress);
694 private event UserUnbannedCallback onUserUnbannedCallback;
695 internal event UserUnbannedCallback OnUserUnbannedCallback
699 onUserUnbannedCallback += value;
700 RegisterServerCallback(value, 0,
true);
704 onUserUnbannedCallback -= value;
705 RegisterServerCallback(value, 0,
false);
708 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
709 internal delegate
void UserUpdatedCallback(IntPtr lpTTSInstance,
710 IntPtr lpUserData, [In] ref User lpUser);
711 private event UserUpdatedCallback onUserUpdatedCallback;
712 internal event UserUpdatedCallback OnUserUpdatedCallback
716 onUserUpdatedCallback += value;
717 RegisterServerCallback(value, 0,
true);
721 onUserUpdatedCallback -= value;
722 RegisterServerCallback(value, 0,
false);
725 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
726 internal delegate
void UserJoinedChannelCallback(IntPtr lpTTSInstance,
727 IntPtr lpUserData, [In, Out] ref User lpUser,
728 [In,Out] ref Channel lpChannel);
729 private event UserJoinedChannelCallback onUserJoinedChannelCallback;
730 internal event UserJoinedChannelCallback OnUserJoinedChannelCallback
734 onUserJoinedChannelCallback += value;
735 RegisterServerCallback(value, 0,
true);
739 onUserJoinedChannelCallback -= value;
740 RegisterServerCallback(value, 0,
false);
743 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
744 internal delegate
void UserLeftChannelCallback(IntPtr lpTTSInstance,
745 IntPtr lpUserData, [In,Out] ref User lpUser,
746 [In,Out] ref Channel lpChannel);
747 private event UserLeftChannelCallback onUserLeftChannelCallback;
748 internal event UserLeftChannelCallback OnUserLeftChannelCallback
752 onUserLeftChannelCallback += value;
753 RegisterServerCallback(value, 0,
true);
757 onUserLeftChannelCallback -= value;
758 RegisterServerCallback(value, 0,
false);
761 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
762 internal delegate
void UserMovedCallback(IntPtr lpTTSInstance,
763 IntPtr lpUserData, [In,Out] ref User lpMover,
764 [In,Out] ref User lpMovee);
765 private event UserMovedCallback onUserMovedCallback;
766 internal event UserMovedCallback OnUserMovedCallback
770 onUserMovedCallback += value;
771 RegisterServerCallback(value, 0,
true);
775 onUserMovedCallback -= value;
776 RegisterServerCallback(value, 0,
false);
779 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
780 internal delegate
void UserTextMessageCallback(IntPtr lpTTSInstance,
781 IntPtr lpUserData, [In] ref User lpUser,
782 [In] ref TextMessage lpTextMessage);
783 private event UserTextMessageCallback onUserTextMessageCallback;
784 internal event UserTextMessageCallback OnUserTextMessageCallback
788 onUserTextMessageCallback += value;
789 RegisterServerCallback(value, 0,
true);
793 onUserTextMessageCallback -= value;
794 RegisterServerCallback(value, 0,
false);
797 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
798 internal delegate
void ChannelCreatedCallback(IntPtr lpTTSInstance,
799 IntPtr lpUserData,[In] ref Channel lpChannel,
801 private event ChannelCreatedCallback onChannelCreatedCallback;
802 internal event ChannelCreatedCallback OnChannelCreatedCallback
806 onChannelCreatedCallback += value;
807 RegisterServerCallback(value, 0,
true);
811 onChannelCreatedCallback -= value;
812 RegisterServerCallback(value, 0,
false);
815 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
816 internal delegate
void ChannelUpdatedCallback(IntPtr lpTTSInstance,
817 IntPtr lpUserData, [In] ref Channel lpChannel,
819 private event ChannelUpdatedCallback onChannelUpdatedCallback;
820 internal event ChannelUpdatedCallback OnChannelUpdatedCallback
824 onChannelUpdatedCallback += value;
825 RegisterServerCallback(value, 0,
true);
829 onChannelUpdatedCallback -= value;
830 RegisterServerCallback(value, 0,
false);
833 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
834 internal delegate
void ChannelRemovedCallback(IntPtr lpTTSInstance,
835 IntPtr lpUserData, [In] ref Channel lpChannel,
837 private event ChannelRemovedCallback onChannelRemovedCallback;
838 internal event ChannelRemovedCallback OnChannelRemovedCallback
842 onChannelRemovedCallback += value;
843 RegisterServerCallback(value, 0,
true);
847 onChannelRemovedCallback -= value;
848 RegisterServerCallback(value, 0,
false);
851 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
852 internal delegate
void FileUploadedCallback(IntPtr lpTTSInstance,
854 [In] ref RemoteFile lpRemoteFile,
855 [In] ref User lpUser);
856 private event FileUploadedCallback onFileUploadedCallback;
857 internal event FileUploadedCallback OnFileUploadedCallback
861 onFileUploadedCallback += value;
862 RegisterServerCallback(value, 0,
true);
866 onFileUploadedCallback -= value;
867 RegisterServerCallback(value, 0,
false);
870 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
871 internal delegate
void FileDownloadedCallback(IntPtr lpTTSInstance,
873 [In] ref RemoteFile lpRemoteFile,
874 [In] ref User lpUser);
875 private event FileDownloadedCallback onFileDownloadedCallback;
876 internal event FileDownloadedCallback OnFileDownloadedCallback
880 onFileDownloadedCallback += value;
881 RegisterServerCallback(value, 0,
true);
885 onFileDownloadedCallback -= value;
886 RegisterServerCallback(value, 0,
false);
889 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
890 internal delegate
void FileDeletedCallback(IntPtr lpTTSInstance,
892 [In] ref RemoteFile lpRemoteFile,
893 [In] ref User lpUser);
894 private event FileDeletedCallback onFileDeletedCallback;
895 internal event FileDeletedCallback OnFileDeletedCallback
899 onFileDeletedCallback += value;
900 RegisterServerCallback(value, 0,
true);
904 onFileDeletedCallback -= value;
905 RegisterServerCallback(value, 0,
false);
908 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
909 internal delegate
void ServerUpdatedCallback(IntPtr lpTTSInstance,
911 [In] ref ServerProperties lpServerProperties,
912 [In] ref User lpUser);
913 private event ServerUpdatedCallback onServerUpdatedCallback;
914 internal event ServerUpdatedCallback OnServerUpdatedCallback
918 onServerUpdatedCallback += value;
919 RegisterServerCallback(value, 0,
true);
923 onServerUpdatedCallback -= value;
924 RegisterServerCallback(value, 0,
false);
927 [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
928 internal delegate
void SaveServerConfigCallback(IntPtr lpTTSInstance,
931 private event SaveServerConfigCallback onSaveServerConfigCallback;
932 internal event SaveServerConfigCallback OnSaveServerConfigCallback
936 onSaveServerConfigCallback += value;
937 RegisterServerCallback(value, 0,
true);
941 onSaveServerConfigCallback -= value;
942 RegisterServerCallback(value, 0,
false);