Скачиваний:
5
Добавлен:
01.05.2014
Размер:
1.94 Кб
Скачать
/*************************************************************************
 * OPUS MULTICLASTER EMULATOR v.1.0.                                     *
 * File: root.h                                                          *
 * Date: 15.05.04                                                        *
 * Author: Sergey Ivochkin (9351)                                        *
 * E-mail: sivsivsiv@mail.ru                                             *
 * Description: OPUS MULTICLASTER EMULATOR header file                   *
 *              include it to use OPUEM.lib                              *
 *************************************************************************/

#ifndef _OPUEM
#define _OPUEM

//RootProc_t type
typedef struct {
	int MyProcID;
	int MyX;
	int MyY;
	int MyZ;
	int nProcs;
	int DimX;
	int DimY;
	int DimZ;
} RootProc_t;

//ROOT type
typedef struct ROOT {
  RootProc_t* ProcRoot;
};

//LinkCB_t type
typedef struct {
	int nProcID;
} LinkCB_t;

//error message codes
#define EC_FATAL 1
#define EC_ERROR 2
#define EC_WARNING 3

//use defines below the namespace!
namespace OPUEM_CLIENT {
	ROOT* GetRoot();

	LinkCB_t* MakeLink(int Proc, int RequestID, int* error);
	LinkCB_t* GetLink(int Proc, int RequestID, int* error);

	int SendLink(LinkCB_t* link, void* buffer, int size);
	int RecvLink(LinkCB_t* link, void* buffer, int size);

	void LogError(int nCode, char* lpszFileName, char* message, int nError);
	void AbortServer(int nCode);
};

//Retrieving information about the processor
#define GET_ROOT() OPUEM_CLIENT::GetRoot()
//Setting up links
#define MakeLink OPUEM_CLIENT::MakeLink
#define GetLink OPUEM_CLIENT::GetLink
//Using links
#define SendLink OPUEM_CLIENT::SendLink
#define RecvLink OPUEM_CLIENT::RecvLink
//Aborting server
#define AbortServer OPUEM_CLIENT::AbortServer
//Logging errors
#define LogError OPUEM_CLIENT::LogError

#endif