
/*
history:
  28-11-2003
*/

#define LPCTSTR const char*
#define LPTSTR char*
#define BOOL int
#define DWORD unsigned long

#if defined IIDK_EXPORTS
	#define IIDK_API	__declspec( dllexport )
#else
	#define IIDK_API 	__declspec( dllimport )
#endif

typedef void (__stdcall iidk_callback_func)(const char* msg,const char* slave_id,unsigned long user_param);
typedef void (__stdcall iidk_old_func)(const char* msg) ;

extern "C" 
{
	IIDK_API	 BOOL __stdcall	Connect(LPCTSTR ip, LPCTSTR port, LPCTSTR id, iidk_old_func* func);
	IIDK_API	 BOOL __stdcall Connect2(LPCTSTR ip, LPCTSTR port, LPCTSTR id);

/*

Connect3

Синхронный / асинхронный коннект
в зависимости от значения async_connect
async_connect=0  - коннект синхронный   - возвращается TRUE в случае успешного коннекта
async_connect=-1 - коннект асинхронный  - всегда возвращается FALSE. количество попыток коннекта connect_attempts при  установлении соединения - событие CONNECTED
async_connect= любое_другое_значение    - коннект сначала синхронный затем, в случае неудачи, асинхронный (см. выше) - возвращается TRUE в случае успеха синхронного коннекта, иначе FALSE. 
*/

	IIDK_API	 BOOL __stdcall	Connect3(LPCTSTR ip, LPCTSTR port, LPCTSTR id, iidk_callback_func* lpfunc,DWORD user_param,int async_connect,DWORD connect_attempts);

	IIDK_API	 BOOL __stdcall SendMsg(LPCTSTR id, LPCTSTR msg);
	IIDK_API	 BOOL __stdcall GetMsg(LPTSTR msg, DWORD& cb);
	IIDK_API	 void __stdcall Disconnect(LPCTSTR id);
/*
IsConnected
Проверка связи для id
true = связь установлена
false = нет связи
*/
	IIDK_API BOOL __stdcall IsConnected(LPCTSTR id);

}
