From d79b254cc7961696ac92ab470dbc37ef147838f3 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 26 Nov 2011 17:09:41 +0000 Subject: api files moved to EXternalAPI folder git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@218 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- YAMN/m_synchro.h | 160 ------------------------------------------------------- 1 file changed, 160 deletions(-) delete mode 100644 YAMN/m_synchro.h (limited to 'YAMN/m_synchro.h') diff --git a/YAMN/m_synchro.h b/YAMN/m_synchro.h deleted file mode 100644 index ff3e601..0000000 --- a/YAMN/m_synchro.h +++ /dev/null @@ -1,160 +0,0 @@ -#ifndef __SYNCHRO_H -#define __SYNCHRO_H - -#include - -// -//================================== OTHER DEFINITIONS ======================================== -// - -#define WAIT_FINISH WAIT_OBJECT_0+1 - -// This structure is used to get semaphore-like synchronization: -// Includes incrementing, decrementing DWORD value and if DWORD is zero, sets event -typedef struct SynchronisedCounter -{ -// Stores number value - HANDLE Event; - DWORD Number; - -// These methods are deleted due to external plugins. Use SCGetNumber,SCInc and SCDec instead -// DWORD GetNumber(); -// DWORD Inc(); -// DWORD Dec(); - -// Yes, some code is defined here. But it is not so problematic, because it uses only Win32 API calls and Win32 structures, - SynchronisedCounter(): Number(0) - { - InitializeCriticalSection(&CounterCS); - Event=CreateEvent(NULL,FALSE,TRUE,NULL); - SetEvent(Event); - } - - SynchronisedCounter(HANDLE InitializedEvent): Number(0) - { - InitializeCriticalSection(&CounterCS); - Event=InitializedEvent; - SetEvent(Event); - } - - ~SynchronisedCounter() - { - DeleteCriticalSection(&CounterCS); - CloseHandle(Event); - } - -//private: //it is not private as other functions (not methods) use these members - CRITICAL_SECTION CounterCS; -} SCOUNTER, *PSCOUNTER; - -// The single-writer/multiple-reader guard -// compound synchronization object (SO) -// Notices: Copyright (c) 1995-1997 Jeffrey Richter -// Changes: majvan, only one process implementation, -// hFinishEV event added- signals when we do not want to use this SO anymore -typedef struct SingleWriterMultiReaderGuard -{ -// This event guards access to the other objects -// managed by this data structure and also indicates -// whether any writer threads are writing. - HANDLE hEventNoWriter; - -// This manual-reset event is signaled when -// no reader threads are reading. - HANDLE hEventNoReaders; - -// This value is used simply as a counter. -// (the count is the number of reader threads) - HANDLE hSemNumReaders; - -// The request is for not to enter critical section -// for writing or reading due to going to delete guard - HANDLE hFinishEV; -} SWMRG, *PSWMRG; - -// -//================================== FUNCTIONS DEFINITIONS ======================================== -// - -typedef DWORD (WINAPI *YAMN_WAITTOWRITEFCN)(PSWMRG,PSCOUNTER); -typedef void (WINAPI *YAMN_WRITEDONEFCN)(PSWMRG,PSCOUNTER); -typedef DWORD (WINAPI *YAMN_WAITTOREADFCN)(PSWMRG); -typedef void (WINAPI *YAMN_READDONEFCN)(PSWMRG); -typedef DWORD (WINAPI *YAMN_SCMANAGEFCN)(PSCOUNTER); - -// -//================================== QUICK FUNCTION CALL DEFINITIONS ======================================== -// - -//These are defininitions for YAMN exported functions. Your plugin can use them. -//pYAMNFcn is global variable, it is pointer to your structure containing YAMN functions. -//It is something similar like pluginLink variable in Miranda plugin. If you use -//this name of variable, you have already defined these functions and you can use them. -//It's similar to Miranda's CreateService function. -//These functions are used to synchronize accounts. YAMN could create service for these -//functions and you could call them then e.g. CallService(MS_YAMNWAITTOWRITE,WPARAM,LPARAM), -//but I think this solution is better, because these functions are much used. It is more -//"normal" if you call function for example like: -//WaitToWrite(ActualAccount) than CallService(MS_YAMNWAITTOWRITE,ActualAccount,NULL)) - -//How to use YAMN functions: -//Create a structure containing pointer to functions you want to use in your plugin -//This structure can look something like this: -// -// struct -// { -// YAMN_WAITTOWRITEFCN WaitToWriteFcn; -// YAMN_WRITEDONEFCN WriteDoneFcn; -// } *pYAMNFcn; -// -//then you have to fill this structure with pointers... -//you have to use YAMN service to get pointer, like this (I wrote here all functions you may need, -//you can copy to your sources only those you need): -// -// pYAMNFcn->WaitToWriteFcn=(YAMN_WAITTOWRITEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_WAITTOWRITEID,(LPARAM)0); -// pYAMNFcn->WriteDoneFcn=(YAMN_WRITEDONEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_WRITEDONEID,(LPARAM)0); -// pYAMNFcn->WaitToReadFcn=(YAMN_WAITTOREADFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_WAITTOREADID,(LPARAM)0); -// pYAMNFcn->ReadDoneFcn=(YAMN_READDONEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_READDONEID,(LPARAM)0); -// pYAMNFcn->SCGetNumberFcn=(YAMN_SCMANAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SCGETNUMBERID,(LPARAM)0); -// pYAMNFcn->SCIncFcn=(YAMN_SCMANAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SCINCID,(LPARAM)0); -// pYAMNFcn->SCDecFcn=(YAMN_SCMANAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SCDECID,(LPARAM)0); -// -//and in your plugin just simply use e.g.: -// -// MsgsWriteDone(ActualAccount); //this command leaves write access to account mails -// - -#define YAMN_WAITTOWRITEID "YAMN/WaitToWrite" -#define YAMN_WRITEDONEID "YAMN/WriteDone" -#define YAMN_WAITTOREADID "YAMN/WaitToRead" -#define YAMN_READDONEID "YAMN/ReadDone" -#define YAMN_SCGETNUMBERID "YAMN/SCGetNumber" -#define YAMN_SCINCID "YAMN/SCInc" -#define YAMN_SCDECID "YAMN/SCDec" - -#define WaitToWrite(x) pYAMNFcn->WaitToWriteFcn(x->AccountAccessSO,0) -#define WaitToWriteEx(x,y) pYAMNFcn->WaitToWriteFcn(x->AccountAccessSO,y) -#define WriteDone(x) pYAMNFcn->WriteDoneFcn(x->AccountAccessSO,0) -#define WaitToRead(x) pYAMNFcn->WaitToReadFcn(x->AccountAccessSO) -#define WaitToReadEx(x,y) pYAMNFcn->WaitToReadFcn(x->AccountAccessSO,y) -#define ReadDone(x) pYAMNFcn->ReadDoneFcn(x->AccountAccessSO) - -#define MsgsWaitToWrite(x) pYAMNFcn->WaitToWriteFcn(x->MessagesAccessSO,0) -#define MsgsWaitToWriteEx(x,y) pYAMNFcn->WaitToWriteFcn(x->MessagesAccessSO,y) -#define MsgsWriteDone(x) pYAMNFcn->WriteDoneFcn(x->MessagesAccessSO,0) -#define MsgsWaitToRead(x) pYAMNFcn->WaitToReadFcn(x->MessagesAccessSO) -#define MsgsWaitToReadEx(x) pYAMNFcn->WaitToReadFcn(x->MessagesAccessSO,y) -#define MsgsReadDone(x) pYAMNFcn->ReadDoneFcn(x->MessagesAccessSO) - -#define WaitToWriteSO(x) pYAMNFcn->WaitToWriteFcn(x,0) -#define WaitToWriteSOEx(x,y) pYAMNFcn->WaitToWriteFcn(x,y) -#define WriteDoneSO(x) pYAMNFcn->WriteDoneFcn(x,0) -#define WaitToReadSO(x) pYAMNFcn->WaitToReadFcn(x) -#define WaitToReadSOEx(x,y) pYAMNFcn->WaitToReadFcn(x,y) -#define ReadDoneSO(x) pYAMNFcn->ReadDoneFcn(x) - -#define SCGetNumber(x) pYAMNFcn->SCGetNumberFcn(x) -#define SCInc(x) pYAMNFcn->SCIncFcn(x) -#define SCDec(x) pYAMNFcn->SCDecFcn(x) - -#endif -- cgit v1.2.3