コード例 #1
0
ファイル: Cluster.c プロジェクト: CodeAndLoathing/bbwin
//
// Check cluster state status
//
int					checkClusterState()
{
	HCLUSTER 		hClust;
	DWORD			pdwClusterState;
	
	if (GetNodeClusterState(NULL, &pdwClusterState) != ERROR_SUCCESS)
	{
		warnError(L"Error 0x%x executing GetClusterInformation entry point.", GetLastError());
        return I_FALSE;
	}
	switch (pdwClusterState)
	{
		case ClusterStateNotInstalled :
			warnError(L"Windows Clustering is not installed.");
			return I_FALSE;
		case ClusterStateNotConfigured :
			warnError(L"Windows Clustering is not configured.");
			return I_FALSE;
		case ClusterStateNotRunning :
		case ClusterStateRunning :
			break ;
	}	
	hClust = OpenCluster(NULL);
	if (hClust == NULL)
	{
		warnError(L"Error 0x%x executing OpenCluster entry point.", GetLastError());
        return I_FALSE;
	}
	CloseCluster(hClust);
	return I_TRUE;
}
コード例 #2
0
ファイル: Cluster.c プロジェクト: CodeAndLoathing/bbwin
int					getClusterGroups(cluster_t *pcluster)
{
	HCLUSTER 		hClust;
	HCLUSENUM 		hClusEnum;
	DWORD			dwIndex;
	DWORD			dwType;
	LPWSTR 			lpszName;			
	DWORD			cchName;
	
	hClust = OpenCluster(NULL);
	if (hClust == NULL)
	{
		warnError(L"Error 0x%x executing OpenCluster entry point.", GetLastError());
        return I_FALSE;
	}
	if ((hClusEnum = ClusterOpenEnum(hClust, CLUSTER_ENUM_GROUP)) == NULL)
	{
		warnError(L"Error 0x%x executing OpenCluster entry point.", GetLastError());
		CloseCluster(hClust);
        return I_FALSE;
	}
	if ((lpszName = LocalAlloc(LPTR, BUFFER_SIZE * sizeof(TCHAR))) == NULL)
		fatalError(L"Fatal Error 0x%x executing LocalAlloc entry point.", GetLastError());
	cchName = BUFFER_SIZE;
	for (dwIndex = 0; ClusterEnum(hClusEnum, dwIndex, &dwType, lpszName, &cchName) == ERROR_SUCCESS; dwIndex++)
	{
		getGroupState(pcluster, hClust, lpszName);
		cchName = BUFFER_SIZE;
	}
	LocalFree(lpszName);
	ClusterCloseEnum(hClusEnum);
	CloseCluster(hClust);
	return I_TRUE;
}
コード例 #3
0
ファイル: sequence.cpp プロジェクト: stevenweaver/hyphy
//_________________________________________________________
_CString::_CString (unsigned long sL, bool flag)
{
    if (flag) {
        sLength = 0;
        if (sL<storageIncrement) {
            sL = storageIncrement;
        }
        sData = (char*)MemAllocate (sL*sizeof (char));
        allocatedSpace = sL;
        if (!sData) {
            warnError( -108);
        }
    } else {
        allocatedSpace = 0;
        sLength = sL;
        sData = (char*)MemAllocate (sL+1);
        if (sData) {
            memset (sData,0,sL+1);
        } else {
            sLength = 0;
            isError(0);
        }
    }
    compressionType = NOCOMPRESSION;
}
コード例 #4
0
ファイル: error.cpp プロジェクト: mdsmith/OCLHYPHY
void	warnError (long errCode)
{
	if (errCode == -108)
		warnError (DecodeError (errCode)&_String(" Exiting..."));
	else
		WarnError (DecodeError (errCode)&_String(" Exiting..."));
}
コード例 #5
0
ファイル: Cluster.c プロジェクト: CodeAndLoathing/bbwin
int						getGroupState(cluster_t *pcluster, HCLUSTER hClust, LPWSTR groupName)
{
	HGROUP 				hGroup;
	CLUSTER_GROUP_STATE	groupState;
	TCHAR				lpszNodeName[BUFFER_SIZE];
	DWORD				cchNodeName;
	cluster_group_t		*group;
	
	if ((hGroup = OpenClusterGroup(hClust, groupName)) == NULL)
	{
		warnError(L"Error 0x%x executing OpenCluster entry point.", GetLastError());
		return I_FALSE;
	}
	cchNodeName = BUFFER_SIZE;
	if ((groupState = GetClusterGroupState(hGroup, lpszNodeName, &cchNodeName)) == ClusterGroupStateUnknown)
	{
		warnError(L"Error 0x%x executing OpenCluster entry point.", GetLastError());
		LocalFree(lpszNodeName);
		CloseClusterGroup(hGroup);
		return I_FALSE;
	}
	PDEBUG(L"Getting Group \"%s\"", groupName);
	group = initClusterGroup(groupName, groupState);
	wcsncpy(group->nodeName, lpszNodeName, BUFFER_SIZE - 1);
	if (loadNodeName(group->savedNodeName, groupName))
		group->hasSavedNode = I_TRUE;
	if (group->hasSavedNode == I_TRUE && wcscmp(group->nodeName, group->savedNodeName) != 0)
	{
		group->bbState = USE_YELLOW;
		createNodeChangedFile(group);
		group->nodeHasChanged = I_TRUE;
	}
	if (isNodeChangedFileExists(group))
	{
		group->nodeHasChanged = I_TRUE;
		group->bbState = USE_YELLOW;
	}
	if (group->bbState == USE_YELLOW)
		pcluster->finalState = USE_YELLOW;
	saveNodeName(lpszNodeName, groupName);
	CloseClusterGroup(hGroup);
	pcluster->groups[pcluster->countGroup] = group;
	pcluster->countGroup++;
	return I_TRUE;
}
コード例 #6
0
ファイル: simplelist.cpp プロジェクト: Dietermielke/hyphy
//Element location functions (0,llength - 1)
long _SimpleList::operator () (const unsigned long i)
{
    //if (lLength == 0) return 0;
    //Is there a reason why this is commented out?
    //if (i>=lLength) i = lLength-1;
    if(i < lLength) {
        return lData[i];
    }
    warnError("List index out of range");
    return -1;
}
コード例 #7
0
ファイル: sequence.cpp プロジェクト: Nicholas-NVS/hyphy
//_______________________________________________________________________
// append operator
void _CString::Finalize (void)
{
    sData = MemReallocate (sData,sLength+1);

    if (!sData) {
        warnError(-108);
    }

    sData[sLength]=0;
    allocatedSpace = 0;
}
コード例 #8
0
ファイル: Cluster.c プロジェクト: CodeAndLoathing/bbwin
int								createNodeChangedFile(cluster_group_t *pGroupClust)
{
	FILE						*fp;
	
	if ((fp = _wfopen(pGroupClust->nodeChangedFilePath, L"w")) == NULL)
	{
		warnError(L"Warning : can't open %s.", pGroupClust->nodeChangedFilePath);
		return 1;
	}
	fwprintf(fp, L"%s", pGroupClust->savedNodeName);
	fclose(fp);
	return 0;
}
コード例 #9
0
ファイル: Cluster.c プロジェクト: CodeAndLoathing/bbwin
int								saveNodeName(LPWSTR lpszNodeName, LPWSTR groupName)
{
	FILE						*fp;
	static TCHAR				lpPath[BUFFER_SIZE];
	
	if (getTempPath((LPWSTR)lpPath) == 0)
		fatalError(ERROR_GETTING_TEMP_PATH);		
	wcscat((LPWSTR)lpPath, SAVE_NODE_FILENAME);
	wcscat((LPWSTR)lpPath, groupName);
	wcscat((LPWSTR)lpPath, SAVE_NODE_FILENAME_EXTENSION);
	if ((fp = _wfopen(lpPath, L"w")) == NULL)
	{
		warnError(L"Warning : can't open %s.", lpPath);
		return 1;
	}
	fwprintf(fp, L"%s", lpszNodeName);
	fclose(fp);
	return 0;
}
コード例 #10
0
ファイル: sequence.cpp プロジェクト: stevenweaver/hyphy
_String*    _CString::DecompressFrequency(void)
{

    _String* theAlphabet = SelectAlpha (compressionType);

    if (!IsFlag(FREQCOMPRESSION)) {
        return nil;    // wrong compression type nothing to do
    }
    unsigned char *codeMaps = new unsigned char [(*theAlphabet).sLength];

    if (!codeMaps) {
        warnError( -108);    // no memory
    }

    unsigned int i,j,k,l,t; // temporary vars


    // read in the alphabet encoding
    i=0;
    t=0;

    for (j=0; j<(*theAlphabet).sLength; j++, i+=5, t = i/8) {
        long leftover = 8-i%8;
        unsigned char value = sData[t];
        if (leftover>=5) {
            switch (leftover) {
            case 5:
                value%=32;
                break;
            case 6:
                value=(value%64)/2;
                break;
            case 7:
                value=(value%128)/4;
                break;
            default:
                value=value/8;
            }

        } else {
            value=((unsigned char) sData[t])%realPowersOf2[leftover]*realPowersOf2[5-leftover];
            value+=((unsigned char) sData[t+1])/realPowersOf2[3+leftover];
        }
        codeMaps[value-1]=j;
    }

    if(i%8) {
        t++;    //possible rounding error
    }

    // now read in the data
    // first we must guess the correct size of the string, but to be safe we'll just set it to
    // the maximum possible value (i.e. if all the bytes compressed to 1 bit)

    _String     result (10,true);

    // k will count the actual length
    // j,l will be used for relative positions of 0's

    for (k=0,j=t*8;; ) { // go by bits
        l=j; // look for the next zero bit in the stream
        while (1) {
            for (i=8-l%8; i>0; i--) {
                if (!(sData[t]&realPowersOf2[i-1])) {
                    break;
                }
            }
            if (i) {
                l+=(8-i)-l%8;
                break;
            }
            if (t<sLength-1)    {
                t++;
            } else {
                l=0;
                break;
            }
            l=t*8;
        }
        if (!l) {
            break;
        }
        l++;
        _String addOn (theAlphabet->getChar(codeMaps[l-j-1]));
        result<<&addOn;
        if ((t=l/8)>=sLength) {
            break;
        }
        j=l;
        k++;
    }
    result.Finalize();
    delete [] codeMaps;
    return (_String*)(_String (result.getStr())).makeDynamic();

}
コード例 #11
0
ファイル: error.cpp プロジェクト: mdsmith/OCLHYPHY
void	checkPointer (void* p)
{
	if (!p)
		warnError(-108);
}