summaryrefslogtreecommitdiff
path: root/Protocols/IAX/iax.cpp
diff options
context:
space:
mode:
authorpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2009-12-15 03:24:11 +0000
committerpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2009-12-15 03:24:11 +0000
commit2886b3c6f7d50f479f74796ce9f8c6ba0356070c (patch)
treeb634717ab61b117a867d8971cdae95addd62fa00 /Protocols/IAX/iax.cpp
parente2e650d26dad9ff91860aeb0b3b999c5e78e98fe (diff)
iax: start of processing code
git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@180 c086bb3d-8645-0410-b8da-73a8550f86e7
Diffstat (limited to 'Protocols/IAX/iax.cpp')
-rw-r--r--Protocols/IAX/iax.cpp187
1 files changed, 1 insertions, 186 deletions
diff --git a/Protocols/IAX/iax.cpp b/Protocols/IAX/iax.cpp
index 4b99e0a..9376ac3 100644
--- a/Protocols/IAX/iax.cpp
+++ b/Protocols/IAX/iax.cpp
@@ -54,195 +54,11 @@ LIST_INTERFACE li;
std::vector<HANDLE> hHooks;
std::vector<HANDLE> hServices;
+OBJLIST<IAXProto> instances(1);
int ModulesLoaded(WPARAM wParam, LPARAM lParam);
int PreShutdown(WPARAM wParam, LPARAM lParam);
-// IAXProto /////////////////////////////////////////////////////////////////////////////
-
-class IAXProto;
-typedef INT_PTR (IAXProto::*IAXServiceFunc)(WPARAM, LPARAM);
-typedef INT_PTR (IAXProto::*IAXServiceFuncParam)(WPARAM, LPARAM, LPARAM);
-
-class IAXProto : public PROTO_INTERFACE
-{
-private:
- HANDLE hNetlibUser;
-
-public:
- IAXProto(const char *aProtoName, const TCHAR *aUserName)
- {
- m_iDesiredStatus = m_iStatus = ID_STATUS_OFFLINE;
-
- m_tszUserName = mir_tstrdup(aUserName);
- m_szProtoName = mir_strdup(aProtoName);
- m_szModuleName = mir_strdup(aProtoName);
-
- TCHAR buffer[MAX_PATH];
- mir_sntprintf(buffer, MAX_REGS(buffer), TranslateT("%s plugin connections"), m_tszUserName);
-
- NETLIBUSER nl_user = {0};
- nl_user.cbSize = sizeof(nl_user);
- nl_user.flags = NUF_OUTGOING | NUF_TCHAR;
- nl_user.szSettingsModule = m_szModuleName;
- nl_user.ptszDescriptiveName = buffer;
- hNetlibUser = (HANDLE) CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nl_user);
- }
-
- ~IAXProto()
- {
- Netlib_CloseHandle(hNetlibUser);
-
- mir_free(m_tszUserName);
- mir_free(m_szProtoName);
- mir_free(m_szModuleName);
- }
-
- virtual HANDLE __cdecl AddToList( int flags, PROTOSEARCHRESULT* psr ) { return 0; }
- virtual HANDLE __cdecl AddToListByEvent( int flags, int iContact, HANDLE hDbEvent ) { return 0; }
-
- virtual int __cdecl Authorize( HANDLE hDbEvent ) { return 1; }
- virtual int __cdecl AuthDeny( HANDLE hDbEvent, const char* szReason ) { return 1; }
- virtual int __cdecl AuthRecv( HANDLE hContact, PROTORECVEVENT* ) { return 1; }
- virtual int __cdecl AuthRequest( HANDLE hContact, const char* szMessage ) { return 1; }
-
- virtual HANDLE __cdecl ChangeInfo( int iInfoType, void* pInfoData ) { return 0; }
-
- virtual HANDLE __cdecl FileAllow( HANDLE hContact, HANDLE hTransfer, const PROTOCHAR* szPath ) { return 0; }
- virtual int __cdecl FileCancel( HANDLE hContact, HANDLE hTransfer ) { return 1; }
- virtual int __cdecl FileDeny( HANDLE hContact, HANDLE hTransfer, const PROTOCHAR* szReason ) { return 1; }
- virtual int __cdecl FileResume( HANDLE hTransfer, int* action, const PROTOCHAR** szFilename ) { return 1; }
-
- virtual DWORD_PTR __cdecl GetCaps( int type, HANDLE hContact = NULL )
- {
- switch(type)
- {
- case PFLAGNUM_1:
- return 0;
-
- case PFLAGNUM_2:
- return PF2_ONLINE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND
- | PF2_FREECHAT | PF2_OUTTOLUNCH | PF2_ONTHEPHONE | PF2_INVISIBLE | PF2_IDLE;
-
- case PFLAGNUM_3:
- return 0;
-
- case PFLAGNUM_4:
- return PF4_NOCUSTOMAUTH;
-
- case PFLAG_UNIQUEIDTEXT:
- return NULL;
-
- case PFLAG_UNIQUEIDSETTING:
- return NULL;
-
- case PFLAG_MAXLENOFMESSAGE:
- return 100;
- }
-
- return 0;
- }
-
- virtual HICON __cdecl GetIcon( int iconIndex ) { return 0; }
- virtual int __cdecl GetInfo( HANDLE hContact, int infoType ) { return 1; }
-
- virtual HANDLE __cdecl SearchBasic( const char* id ) { return 0; }
- virtual HANDLE __cdecl SearchByEmail( const char* email ) { return 0; }
- virtual HANDLE __cdecl SearchByName( const char* nick, const char* firstName, const char* lastName ) { return 0; }
- virtual HWND __cdecl SearchAdvanced( HWND owner ) { return 0; }
- virtual HWND __cdecl CreateExtendedSearchUI( HWND owner ) { return 0; }
-
- virtual int __cdecl RecvContacts( HANDLE hContact, PROTORECVEVENT* ) { return 1; }
- virtual int __cdecl RecvFile( HANDLE hContact, PROTOFILEEVENT* ) { return 1; }
- virtual int __cdecl RecvMsg( HANDLE hContact, PROTORECVEVENT* ) { return 1; }
- virtual int __cdecl RecvUrl( HANDLE hContact, PROTORECVEVENT* ) { return 1; }
-
- virtual int __cdecl SendContacts( HANDLE hContact, int flags, int nContacts, HANDLE* hContactsList ) { return 1; }
- virtual HANDLE __cdecl SendFile( HANDLE hContact, const PROTOCHAR* szDescription, PROTOCHAR** ppszFiles ) { return 0; }
- virtual int __cdecl SendMsg( HANDLE hContact, int flags, const char* msg ) { return 1; }
- virtual int __cdecl SendUrl( HANDLE hContact, int flags, const char* url ) { return 1; }
-
- virtual int __cdecl SetApparentMode( HANDLE hContact, int mode ) { return 1; }
- virtual int __cdecl SetStatus( int iNewStatus )
- {
- if (m_iDesiredStatus == iNewStatus)
- return 0;
- m_iDesiredStatus = iNewStatus;
-
- if (m_iDesiredStatus == ID_STATUS_OFFLINE)
- {
- BroadcastStatus(ID_STATUS_OFFLINE);
- }
- else if (m_iStatus == ID_STATUS_OFFLINE)
- {
- BroadcastStatus(ID_STATUS_CONNECTING);
- }
- else if (m_iStatus > ID_STATUS_OFFLINE)
- {
- BroadcastStatus(m_iDesiredStatus);
- }
-
- return 0;
- }
-
- virtual HANDLE __cdecl GetAwayMsg( HANDLE hContact ) { return 0; }
- virtual int __cdecl RecvAwayMsg( HANDLE hContact, int mode, PROTORECVEVENT* evt ) { return 1; }
- virtual int __cdecl SendAwayMsg( HANDLE hContact, HANDLE hProcess, const char* msg ) { return 1; }
- virtual int __cdecl SetAwayMsg( int iStatus, const char* msg ) { return 1; }
-
- virtual int __cdecl UserIsTyping( HANDLE hContact, int type ) { return 0; }
-
- virtual int __cdecl OnEvent( PROTOEVENTTYPE iEventType, WPARAM wParam, LPARAM lParam ) { return 1; }
-
-
-
-private:
- void BroadcastStatus(int newStatus)
- {
- int oldStatus = m_iStatus;
- m_iStatus = newStatus;
- SendBroadcast(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)oldStatus, m_iStatus);
- }
-
- void CreateProtoService(const char* szService, IAXServiceFunc serviceProc)
- {
- char str[MAXMODULELABELLENGTH];
-
- mir_snprintf(str, sizeof(str), "%s%s", m_szModuleName, szService);
- ::CreateServiceFunctionObj(str, (MIRANDASERVICEOBJ)*(void**)&serviceProc, this);
- }
-
- void CreateProtoService(const char* szService, IAXServiceFuncParam serviceProc, LPARAM lParam)
- {
- char str[MAXMODULELABELLENGTH];
- mir_snprintf(str, sizeof(str), "%s%s", m_szModuleName, szService);
- ::CreateServiceFunctionObjParam(str, (MIRANDASERVICEOBJPARAM)*(void**)&serviceProc, this, lParam);
- }
-
- HANDLE CreateProtoEvent(const char* szService)
- {
- char str[MAXMODULELABELLENGTH];
- mir_snprintf(str, sizeof(str), "%s%s", m_szModuleName, szService);
- return ::CreateHookableEvent(str);
- }
-
- int SendBroadcast(HANDLE hContact, int type, int result, HANDLE hProcess, LPARAM lParam)
- {
- ACKDATA ack = {0};
- ack.cbSize = sizeof(ACKDATA);
- ack.szModule = m_szModuleName;
- ack.hContact = hContact;
- ack.type = type;
- ack.result = result;
- ack.hProcess = hProcess;
- ack.lParam = lParam;
- return CallService(MS_PROTO_BROADCASTACK, 0, (LPARAM)&ack);
- }
-
-
-};
-
-OBJLIST<IAXProto> instances(1);
// Functions ////////////////////////////////////////////////////////////////////////////
@@ -367,4 +183,3 @@ int PreShutdown(WPARAM wParam, LPARAM lParam)
return 0;
}
-