Esempio n. 1
0
JNIEXPORT jstring JNICALL Java_us_ihmc_aci_dspro2_DSProLauncher_getNodeId (JNIEnv *pEnv, jobject joThis)
{
	ConfigManager *pCfgMgr = checkAndRetrieveCfgMgrPtr (pEnv, joThis);
	if (pCfgMgr == NULL) {
		return NULL;
	}

	String nodeId;
	if (pCfgMgr->hasValue ("aci.dspro.node.id")) {
		nodeId = pCfgMgr->getValue ("aci.dspro.node.id");
	}
	else if (pCfgMgr->hasValue ("aci.disService.nodeUUID")) {
		// for backward compatibility
		nodeId = pCfgMgr->getValue ("aci.disService.nodeUUID");
	}
	else if (pCfgMgr->hasValue ("aci.dspro.node.id.auto") &&
		(strcmp ("hostname", pCfgMgr->getValue ("aci.dspro.node.id.auto")) == 0)) {
		nodeId = NetUtils::getLocalHostName();
		pCfgMgr->setValue ("aci.dspro.node.id", nodeId);
	}
	else if (pCfgMgr->hasValue ("aci.disService.nodeUUID.auto.mode") &&
		(strcmp ("hostname", pCfgMgr->getValue ("aci.disService.nodeUUID.auto.mode")) == 0)) {
		// for backward compatibility
		nodeId = NetUtils::getLocalHostName();
		pCfgMgr->setValue ("aci.dspro.node.id", nodeId);
	}
	else {
		NOMADSUtil::UUID uuid;
		uuid.generate();
		const char *pszUUID = uuid.getAsString();
		if (pszUUID != NULL) {
			nodeId = pszUUID;
		}
	}

	if (nodeId == NULL) {
		return NULL;
	}

	return pEnv->NewStringUTF (nodeId.c_str());
}