From 95f46008d2884934fb3186291fceb34f11bf5f0e Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Wed, 18 Nov 2009 03:09:47 +0200 Subject: modified: commonheaders.h modified: constants.h new file: globals.h modified: init.c modified: main.c modified: main.h modified: utilities.c new file: utilities.h modified: watrack_mpd.vcproj --- watrack_mpd/commonheaders.h | 8 ++++-- watrack_mpd/constants.h | 3 +++ watrack_mpd/globals.h | 6 +++++ watrack_mpd/init.c | 14 +++++++++-- watrack_mpd/main.c | 22 ++++++++++++++++ watrack_mpd/main.h | 10 +++++--- watrack_mpd/utilities.c | 57 +++++++++++++++++++++++++++++++++++++++--- watrack_mpd/utilities.h | 10 ++++++++ watrack_mpd/watrack_mpd.vcproj | 8 ++++++ 9 files changed, 127 insertions(+), 11 deletions(-) create mode 100755 watrack_mpd/globals.h create mode 100755 watrack_mpd/utilities.h diff --git a/watrack_mpd/commonheaders.h b/watrack_mpd/commonheaders.h index 81ccc20..e2e578c 100755 --- a/watrack_mpd/commonheaders.h +++ b/watrack_mpd/commonheaders.h @@ -13,7 +13,8 @@ // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - +#ifndef COMMONHEADERS_H +#define COMMONHEADERS_H #include #include #include @@ -25,7 +26,7 @@ #include //#include //#include -//#include +#include //#include //#include #include @@ -34,6 +35,9 @@ #include "resource.h" +#include "globals.h" #include "main.h" #include "constants.h" #include "m_music.h" +#include "utilities.h" +#endif diff --git a/watrack_mpd/constants.h b/watrack_mpd/constants.h index e46841b..dfa9a3c 100755 --- a/watrack_mpd/constants.h +++ b/watrack_mpd/constants.h @@ -1 +1,4 @@ +#ifndef CONSTANTS_H +#define CONSTANTS_H #define szModuleName "Watrack_MPD" +#endif diff --git a/watrack_mpd/globals.h b/watrack_mpd/globals.h new file mode 100755 index 0000000..4744088 --- /dev/null +++ b/watrack_mpd/globals.h @@ -0,0 +1,6 @@ +#ifndef GLOBALS_H +#define GLOBALS_H +HANDLE ghNetlibUser; +HANDLE ghPacketReciever; +HANDLE ghRecieverThread; +#endif diff --git a/watrack_mpd/init.c b/watrack_mpd/init.c index f244efd..d61c5bd 100755 --- a/watrack_mpd/init.c +++ b/watrack_mpd/init.c @@ -71,14 +71,22 @@ int __declspec(dllexport) Load(PLUGINLINK *link) { pluginLink=link; HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); -// mir_getMMI(&mmi); -// mir_getUTFI(&utfi); + mir_getMMI(&mmi); + mir_getUTFI(&utfi); return 0; } static int OnModulesLoaded(WPARAM wParam,LPARAM lParam) { + NETLIBUSER nlu = {0}; + nlu.cbSize = sizeof(nlu); + nlu.flags = NUF_OUTGOING | NUF_HTTPGATEWAY; + nlu.szDescriptiveName = "Watrack MPD connection"; + nlu.szSettingsModule = PLUGIN_NAME; + ghNetlibUser = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu); + + if (ServiceExists("WATrack/Player")) bWatrackService = TRUE; return 0; @@ -87,5 +95,7 @@ static int OnModulesLoaded(WPARAM wParam,LPARAM lParam) int __declspec(dllexport) Unload(void) { + if(ghNetlibUser && (ghNetlibUser != INVALID_HANDLE_VALUE)) + CallService(MS_NETLIB_SHUTDOWN,(WPARAM)ghNetlibUser,0); return 0; } \ No newline at end of file diff --git a/watrack_mpd/main.c b/watrack_mpd/main.c index 2040ca3..108db8b 100755 --- a/watrack_mpd/main.c +++ b/watrack_mpd/main.c @@ -41,6 +41,7 @@ LPCOMMANDPROC SendCommand(HWND wnd, int command, int value) { } + void RegisterPlayer() { struct tPlayerCell player; @@ -58,3 +59,24 @@ void RegisterPlayer() player.URL = "http:// ?"; CallService(MS_WAT_PLAYER, (WPARAM)0, (LPARAM)&player); } + +DWORD __stdcall Reciever(LPVOID lp) +{ + NETLIBOPENCONNECTION nloc; + nloc.cbSize = sizeof(NETLIBOPENCONNECTION); + nloc.flags = 0; + nloc.szHost = (char*)mir_u2a(UniGetContactSettingUtf(NULL, szModuleName, "Host", _T("127.0.0.1"))); + nloc.wPort = DBGetContactSettingWord(NULL, szModuleName, "Port", 6600); + NetLib_CreateConnection(ghNetlibUser, &nloc); + ghPacketReciever = CreatePacketReciever(); + + return 0; +} +int Start(WPARAM wParam,LPARAM lParam) +{ + DWORD pid; + ghRecieverThread = CreateThreadEx((pThreadFuncEx)Reciever, (HANDLE)wParam, &pid); +} +int Stop(WPARAM wParam,LPARAM lParam) +{ +} diff --git a/watrack_mpd/main.h b/watrack_mpd/main.h index 00fe5e9..25fc0fd 100755 --- a/watrack_mpd/main.h +++ b/watrack_mpd/main.h @@ -13,10 +13,14 @@ // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - +#ifndef MAIN_H +#define MAIN_H //TCHAR* __stdcall UniGetContactSettingUtf(HANDLE hContact, const char *szModule,const char* szSetting, TCHAR* szDef); -//struct MM_INTERFACE mmi; -//struct UTF8_INTERFACE utfi; +struct MM_INTERFACE mmi; +struct UTF8_INTERFACE utfi; //const TCHAR *stristr( const TCHAR *str, const TCHAR *substr); +#endif + + diff --git a/watrack_mpd/utilities.c b/watrack_mpd/utilities.c index 0d5327a..a01450c 100755 --- a/watrack_mpd/utilities.c +++ b/watrack_mpd/utilities.c @@ -17,7 +17,7 @@ #include "commonheaders.h" -/*HANDLE CreateThreadEx(pThreadFuncEx AFunc, void* arg, DWORD* pThreadID) +HANDLE CreateThreadEx(pThreadFuncEx AFunc, void* arg, DWORD* pThreadID) { FORK_THREADEX_PARAMS params; DWORD dwThreadId; @@ -32,9 +32,9 @@ *pThreadID = dwThreadId; return hThread; -}*/ +} -/*TCHAR* __stdcall UniGetContactSettingUtf(HANDLE hContact, const char *szModule,const char* szSetting, TCHAR* szDef) +TCHAR* __stdcall UniGetContactSettingUtf(HANDLE hContact, const char *szModule,const char* szSetting, TCHAR* szDef) { DBVARIANT dbv = {DBVT_DELETED}; TCHAR* szRes; @@ -44,7 +44,7 @@ szRes = _tcsdup(dbv.ptszVal); DBFreeVariant(&dbv); return szRes; -}*/ +} // case-insensitive _tcsstr /*#define NEWTSTR_ALLOCA(A) (A==NULL)?NULL:_tcscpy((TCHAR*)alloca(sizeof(TCHAR)*(_tcslen(A)+1)),A) @@ -107,3 +107,52 @@ char *date() d[9]=tmp[5]; return d; } + +int Send(char* data) +{ + NETLIBBUFFER nlb; + nlb.buf = data; + nlb.flags = MSG_DUMPASTEXT; + nlb.len = strlen(data)+1; + return CallService(MS_NETLIB_SEND,(WPARAM)ghNetlibUser,(LPARAM)&nlb); +} + +int Recv(char *buf) +{ + NETLIBBUFFER nlb; + nlb.buf = buf; + nlb.flags = MSG_DUMPASTEXT; + nlb.len = strlen(buf)+1; + return CallService(MS_NETLIB_RECV,(WPARAM)ghNetlibUser,(LPARAM)&nlb); +} +HANDLE CreatePacketReciever() +{ + return (HANDLE)CallService(MS_NETLIB_RECV,(WPARAM)ghNetlibUser,(LPARAM)4096); +} + +NETLIBPACKETRECVER *RecivePackets(int bytesUsed) +{ + static NETLIBPACKETRECVER nlpr; + nlpr.bytesUsed = bytesUsed; + nlpr.dwTimeout = INFINITE; + nlpr.cbSize = sizeof(NETLIBPACKETRECVER); + CallService(MS_NETLIB_RECV,(WPARAM)ghPacketReciever,(LPARAM)&nlpr); + return &nlpr; +} +HANDLE NetLib_CreateConnection(HANDLE hUser, NETLIBOPENCONNECTION* nloc) //from icq ) +{ + HANDLE hConnection; + + nloc->cbSize = sizeof(NETLIBOPENCONNECTION); + nloc->flags |= NLOCF_V2; + + hConnection = (HANDLE)CallService(MS_NETLIB_OPENCONNECTION, (WPARAM)hUser, (LPARAM)nloc); + if (!hConnection && (GetLastError() == 87)) + { // this ensures, an old Miranda will be able to connect also + nloc->cbSize = NETLIBOPENCONNECTION_V1_SIZE; + hConnection = (HANDLE)CallService(MS_NETLIB_OPENCONNECTION, (WPARAM)hUser, (LPARAM)nloc); + } + return hConnection; +} + + diff --git a/watrack_mpd/utilities.h b/watrack_mpd/utilities.h new file mode 100755 index 0000000..1da86c0 --- /dev/null +++ b/watrack_mpd/utilities.h @@ -0,0 +1,10 @@ +#ifndef UTILITIES_H +#define UTILITIES_H +int Send(char* data); +int Recv(char *buf); +HANDLE CreatePacketReciever(); +NETLIBPACKETRECVER *RecivePackets(int bytesUsed); +HANDLE NetLib_CreateConnection(HANDLE hUser, NETLIBOPENCONNECTION* nloc); +HANDLE CreateThreadEx(pThreadFuncEx AFunc, void* arg, DWORD* pThreadID); +TCHAR* __stdcall UniGetContactSettingUtf(HANDLE hContact, const char *szModule,const char* szSetting, TCHAR* szDef); +#endif diff --git a/watrack_mpd/watrack_mpd.vcproj b/watrack_mpd/watrack_mpd.vcproj index 3972c1c..18e726e 100755 --- a/watrack_mpd/watrack_mpd.vcproj +++ b/watrack_mpd/watrack_mpd.vcproj @@ -636,6 +636,10 @@ RelativePath=".\constants.h" > + + @@ -648,6 +652,10 @@ RelativePath=".\resource.h" > + +