Пример #1
0
char * IHMC_ACI::addOnDemandSuffixToId (const char *pszKey)
{
    if (pszKey == NULL) {
        return NULL;
    }

    DArray2<String> aTokenizedKey (6U);
    if (isAllChunksMessageID (pszKey)) {
        int rc = convertKeyToField (pszKey, aTokenizedKey, 3, MSG_ID_GROUP, MSG_ID_SENDER, MSG_ID_SEQ_NUM);
        if (rc != 0) {
            return NULL;
        }      
    }
    else if (convertKeyToField (pszKey, aTokenizedKey) != 0) {
        return NULL;
    }

    char *pszNewGroupName = getOnDemandDataGroupName (aTokenizedKey[MSG_ID_GROUP].c_str());
    String msgId (pszNewGroupName);
    for (unsigned int i = MSG_ID_SENDER; i < aTokenizedKey.size(); i++) {
        msgId += MessageHeader::MSG_ID_SEPARATOR;
        msgId += aTokenizedKey[i];
    }
    return msgId.r_str();

    free (pszNewGroupName);
    return msgId.r_str();
}
int DefaultDataCacheExpirationController::cacheCleanCycle()
{
    // It deletes expired entries from the Data Cache and from the Transmission History
    lockDataCache();
    DArray2<String> *pDArrayExpired = getExpiredMessageIDs();
    if (pDArrayExpired != NULL) {
        if (pDArrayExpired->size() != 0) {
            int iTH = 0;
            for (uint32 i = 0; i < pDArrayExpired->size(); i++) {
                deleteMessage ((*pDArrayExpired)[i]);
                if (_pTransmissionHistory->hasMessage ((*pDArrayExpired)[i].c_str())) {
                    _pTransmissionHistory->deleteMessage ((*pDArrayExpired)[i].c_str());
                    iTH++;
                }
            }
            int iRet = pDArrayExpired->size();
            checkAndLogMsg ("DefaultDataCacheExpirationController::cacheCleanCycle", Logger::L_Info,
                            "deleted <%d> messages from Data Cache and <%d> from Transmission History\n", iRet, iTH);
            delete pDArrayExpired;
            releaseDataCache();
            return iRet;
        }
        delete pDArrayExpired;
    }
    releaseDataCache();
    return 0;
}
void DefaultDataCacheExpirationController::thresholdCapacityReached (uint32 ui32Length)
{
    // For now it just delete expired entries
    lockDataCache();
    DArray2<String> *pDArrayExpired = getExpiredMessageIDs();
    if(pDArrayExpired != NULL) {
        if(pDArrayExpired->size() != 0) {
            for (uint32 i = 0; i < pDArrayExpired->size(); i++) {
                deleteMessage ((*pDArrayExpired)[i]);
            }
            delete pDArrayExpired;
            releaseDataCache();
            return;
        }
        delete pDArrayExpired;
    }
    releaseDataCache();
}
void DefaultDataCacheExpirationController::spaceNeeded (uint32 ui32bytesNeeded, MessageHeader *pIncomingMgsInfo,
	                                                void *pIncomingData)
{
    // For now it just delete expired entries
    lockDataCache();
    DArray2<String> *pDArrayExpired = getExpiredMessageIDs();
    if(pDArrayExpired != NULL) {
        if(pDArrayExpired->size() != 0) {
            for(uint32 i = 0; i < pDArrayExpired->size(); i++) {
                deleteMessage ((*pDArrayExpired)[i]);
            }
            delete pDArrayExpired;
            releaseDataCache();
            return;
        }
        delete pDArrayExpired;
    }
    releaseDataCache();
}
Пример #5
0
int RemoteNodeInfo::getAndRemoveLinksToDrop (uint32 ui32DeadPeerIntervalTime, DArray2<String> &linksToDrop)
{
    InetAddrWrapper *pIfaceWr, *pIfaceNext;
    pIfaceNext = _ipAddresses.getFirst();
    while ((pIfaceWr = pIfaceNext) != NULL) {
        pIfaceNext = _ipAddresses.getNext();
        if ((getTimeInMilliseconds() - pIfaceWr->i64MostRecentMessageRcvdTime) > ui32DeadPeerIntervalTime) {
            linksToDrop[linksToDrop.firstFree()] = pIfaceWr->ifaceAddr;
            pIfaceWr = _ipAddresses.remove (pIfaceWr);
        }
    }
    return 0;
}