⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpd.cpp

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 CPP
字号:
// Includes#include <stdio.h>#include <stdlib.h>#include <string.h>#include "mpdimpl.h"#include "service.h"#include "GetOpt.h"#include "GetStringOpt.h"#include "database.h"#include "Translate_Error.h"// Global variablesint g_nPort = 0;char g_pszHost[MAX_HOST_LENGTH] = "";char g_pszLeftHost[MAX_HOST_LENGTH] = "";char g_pszRightHost[MAX_HOST_LENGTH] = "";char g_pszInsertHost[MAX_HOST_LENGTH] = "";char g_pszInsertHost2[MAX_HOST_LENGTH] = "";char g_pszIP[25] = "";unsigned long g_nIP = 0;char g_pszTempDir[MAX_PATH] = "C:\\";MPD_Context *g_pList = NULL;MPD_Context *g_pRightContext = NULL;MPD_Context *g_pLeftContext = NULL;int g_nSignalCount = 2;bool g_bExitAllRoot = false;bool g_bSingleUser = false;bool g_bStartAlone = false;bool g_bUseMPDUser = false;bool g_bMPDUserCapable = false;char g_pszMPDUserAccount[100] = "";char g_pszMPDUserPassword[100] = "";extern "C" {__declspec(dllexport) int mpdVersionRelease = VERSION_RELEASE;__declspec(dllexport) int mpdVersionMajor = VERSION_MAJOR;__declspec(dllexport) int mpdVersionMinor = VERSION_MINOR;__declspec(dllexport) char mpdVersionDate[] = __DATE__;}void GetMPDVersion(char *str, int length){    _snprintf(str, length, "%d.%d.%d %s", VERSION_RELEASE, VERSION_MAJOR, VERSION_MINOR, __DATE__);}void GetMPICHVersion(char *str, int length){    void (*pGetMPICHVersion)(char *str, int length);    char *filename = NULL, *name_part;    DWORD len;    HMODULE hModule;    char err_msg[1024];    if (length < 1)	return;    len = SearchPath(NULL, "mpich.dll", NULL, 0, filename, &name_part);    if (len == 0)    {	err_printf("GetMPICHVersion::unable to find mpich.dll\n");	*str = '\0';	return;    }    filename = new char[len*2+2];    len = SearchPath(NULL, "mpich.dll", NULL, len*2, filename, &name_part);    if (len == 0)    {	err_printf("GetMPICHVersion::unable to find mpich.dll\n");	*str = '\0';	delete filename;	return;    }    hModule = LoadLibrary(filename);    delete filename;    if (hModule == NULL)    {	Translate_Error(GetLastError(), err_msg, NULL);	err_printf("GetMPICHVersion::LoadLibrary(mpich.dll) failed, ");	err_printf("%s\n", err_msg);	*str = '\0';	return;    }    pGetMPICHVersion = (void (*)(char *, int))GetProcAddress(hModule, "GetMPICHVersion");    if (pGetMPICHVersion == NULL)    {	Translate_Error(GetLastError(), err_msg, "GetProcAddress(\"GetMPICHVersion\") failed, ");	err_printf("GetMPICHVersion::%s\n", err_msg);	*str = '\0';	FreeLibrary(hModule);	return;    }    pGetMPICHVersion(str, length);    //dbg_printf("%s\n", version);    FreeLibrary(hModule);}void SignalExit(){    g_nSignalCount--;    if (g_nSignalCount == 0)	ServiceStop();}void PrintState(FILE *fout){    MPD_Context *p;    fprintf(fout, "STATE------------------------------------------------\n");    fprintf(fout, "g_pList of contexts:\n");    p = g_pList;    while (p)    {	p->Print(fout);	p = p->pNext;    }    fprintf(fout, "g_pRightContext:");    if (g_pRightContext == NULL)	fprintf(fout, " NULL\n");    else    {	fprintf(fout, "\n");	g_pRightContext->Print(fout);    }    fprintf(fout, "g_pLeftContext:");    if (g_pLeftContext == NULL)	fprintf(fout, " NULL\n");    else    {	fprintf(fout, "\n");	g_pLeftContext->Print(fout);    }    fprintf(fout, "g_nIP: %d, g_pszIP: %s\n", g_nIP, g_pszIP);    fprintf(fout, "g_nPort: %d\n", g_nPort);    fprintf(fout, "g_pszHost:        '%s'\n", g_pszHost);    fprintf(fout, "g_pszLeftHost:    '%s'\n", g_pszLeftHost);    fprintf(fout, "g_pszRightHost:   '%s'\n", g_pszRightHost);    fprintf(fout, "g_pszInsertHost:  '%s'\n", g_pszInsertHost);    fprintf(fout, "g_pszInsertHost2: '%s'\n", g_pszInsertHost2);    fprintf(fout, "STATE------------------------------------------------\n");}void HandleRightRead(MPD_Context *p){    dbg_printf("RightRead[%d]: '%s'\n", p->sock, p->pszIn);    if (stricmp(p->pszIn, "new right") == 0)    {	g_pRightContext = p;	strncpy(g_pszRightHost, p->pszHost, MAX_HOST_LENGTH);    }    else if (stricmp(p->pszIn, "done") == 0)    {	p->nState = MPD_INVALID;	p->bDeleteMe = true;    }    else if (stricmp(p->pszIn, "done bounce") == 0)    {	ContextWriteString(p, "done");	p->nState = MPD_INVALID;	p->bDeleteMe = true;    }    else    {	err_printf("right socket %d read unknown command '%s'\n", p->sock, p->pszIn);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -