Example #1
0
StringBuffer CacheSyncSource::getItemSignature(StringBuffer& key) {

    void* content       = NULL;
    size_t size         = 0;
    
    if (key.length() <= 0) {
        return NULL;
    }
    
    LOG.debug("[%s] Getting signature for item with key %s", getName(), key.c_str());
    
    content = getItemContent(key, &size);                      
    StringBuffer s;
    s.sprintf("%ld", calculateCRC(content, size));
    if (content) { delete [] (char*)content; content = NULL; }    
    return s;
}
Example #2
0
SyncItem* CacheSyncSource::fillSyncItem(StringBuffer* key) {
    
    SyncItem* syncItem  = NULL;    
    size_t size         = 0;
    void* content       = NULL;
    
    if (!key) {
        return NULL;
    }
    
    LOG.debug("[%s] Filling item with key %s", getName(), key->c_str());
    
    content = getItemContent((*key), &size);
    
    WCHAR* wkey = toWideChar(key->c_str());
    syncItem = new SyncItem(wkey);
    syncItem->setData(content, size);
    
    if (wkey) { delete [] wkey; wkey = NULL; }
    if (content) { delete [] (char*)content; content = NULL; }

    return syncItem;

}
Example #3
0
int generateXmlItem( struct itemnode_t * itemList, int * itemListTotal, struct xmlDesc_t * xmlDesc , struct xmlItem_t * xmlItemList, int * xmlItemListTotal, int * xmlItemListAlarmTotal ){
    char longStr[100000];
    char md5BaseStr[100000];
    char guid[50];
    int flagRegion[MAX_ITEMLIST_LENGTH];
    int flagTitle[MAX_ITEMLIST_LENGTH];
    int flagTime[MAX_ITEMLIST_LENGTH];
    int flagContent[MAX_ITEMLIST_LENGTH];

    int flagXmlItem[MAX_ITEMLIST_LENGTH][7];
    int xmlItemTotal = 0;

    int subscript;
    int targetSubscript;
    int xmlItemListFreshPoint = 0;
    int offset;

    fetchRule( itemList, itemListTotal, xmlDesc[XML_ITEM_REGION], flagRegion );
    fetchRule( itemList, itemListTotal, xmlDesc[XML_ITEM_TITLE], flagTitle );
    fetchRule( itemList, itemListTotal, xmlDesc[XML_ITEM_TIME], flagTime );
    fetchRule( itemList, itemListTotal, xmlDesc[XML_ITEM_CONTENT], flagContent );

    memset(flagXmlItem, 0, sizeof(flagXmlItem));

    for ( subscript = 1; subscript<=*itemListTotal; subscript++ ){
        if ( flagRegion[subscript] == XML_FETCH_ITEM_NOG ) continue;
        if ( flagTitle[subscript] == XML_FETCH_ITEM_START ){
            if ( flagXmlItem[xmlItemTotal][XML_ITEM_TITLE] != 0 || xmlItemTotal ==0 ) xmlItemTotal++;
            flagXmlItem[xmlItemTotal][XML_ITEM_TITLE] = subscript;
        }
        if ( flagTime[subscript] == XML_FETCH_ITEM_START ){
            if ( flagXmlItem[xmlItemTotal][XML_ITEM_TIME] != 0 || xmlItemTotal ==0 ) xmlItemTotal++;
            flagXmlItem[xmlItemTotal][XML_ITEM_TIME] = subscript;
        }
        if ( flagContent[subscript] == XML_FETCH_ITEM_START ){
            if ( flagXmlItem[xmlItemTotal][XML_ITEM_CONTENT] != 0 || xmlItemTotal ==0 ) xmlItemTotal++;
            flagXmlItem[xmlItemTotal][XML_ITEM_CONTENT] = subscript;
        }
    }

    // *xmlItemListTotal = 0;  // warning !!!  this line just for debuging

    // printf("{================\n");
    // for ( subscript=1; subscript<=*xmlItemListTotal; subscript++)
    //     printXmlItemListNode( xmlItemList, xmlItemListTotal, subscript );
    // printf("}================\n");

    for (subscript=1; subscript<=xmlItemTotal; subscript++){
        printf("fetch\n\ttitle: %d\n\ttime: %d\n\tcontent: %d\n", flagXmlItem[subscript][XML_ITEM_TITLE],flagXmlItem[subscript][XML_ITEM_TIME],flagXmlItem[subscript][XML_ITEM_CONTENT]);
        // getItemContent( itemList, itemListTotal, flagTitle, flagXmlItem[subscript][XML_ITEM_TITLE], longStr );
        // printf("%s\n", longStr);
        // Rmd5(longStr,longStr);
        // printf("%s\n",longStr);
        // getItemRichContent( itemList, itemListTotal, flagTitle, flagXmlItem[subscript][XML_ITEM_TITLE], longStr );
        // // printf("%s\n", longStr);
        // getItemContent( itemList, itemListTotal, flagContent, flagXmlItem[subscript][XML_ITEM_CONTENT], longStr );
        // printf("%s\n", longStr);
        // Rmd5(longStr,longStr);
        // printf("%s\n",longStr);
        // getItemRichContent( itemList, itemListTotal, flagContent, flagXmlItem[subscript][XML_ITEM_CONTENT], longStr );
        // // printf("%s\n", longStr);

        strcpy( md5BaseStr, "" );
        getItemContent( itemList, itemListTotal, flagTitle, flagXmlItem[subscript][XML_ITEM_TITLE], longStr );
        strcat( md5BaseStr, longStr );
        getItemContent( itemList, itemListTotal, flagContent, flagXmlItem[subscript][XML_ITEM_CONTENT], longStr );
        strcat( md5BaseStr, longStr );
        Rmd5( md5BaseStr, guid );
        // printf("md5 guid: %s\n", guid);
        
        targetSubscript = xmlItemListSearch( xmlItemList, xmlItemListTotal, guid );
        // printf("%d\n",targetSubscript);
        if ( targetSubscript == 0 ){
            printf("not found, to create it. %d\n", targetSubscript);
            (*xmlItemListTotal)++;
            targetSubscript = *xmlItemListTotal;
            // printf("%d\n",targetSubscript);

            xmlItemList[targetSubscript].text[FRSS_ITEM_TITLE] = NULL;
            // xmlItemList[targetSubscript].richText[FRSS_ITEM_TITLE] = NULL;
            xmlItemList[targetSubscript].text[FRSS_ITEM_TIME] = NULL;
            // xmlItemList[targetSubscript].richText[FRSS_ITEM_TIME] = NULL;
            xmlItemList[targetSubscript].text[FRSS_ITEM_CONTENT] = NULL;
            xmlItemList[targetSubscript].richText[FRSS_ITEM_CONTENT] = NULL;
            xmlItemList[targetSubscript].text[FRSS_ITEM_GUID] = NULL;
            // xmlItemList[targetSubscript].richText[FRSS_ITEM_GUID] = NULL;
            if ( xmlItemListFreshPoint == 0 ) xmlItemListFreshPoint = targetSubscript;

            if ( getItemContent( itemList, itemListTotal, flagTitle, flagXmlItem[subscript][XML_ITEM_TITLE], longStr ) ){
                xmlItemList[targetSubscript].text[FRSS_ITEM_TITLE] = malloc( strlen(longStr)+1 );
                strcpy( xmlItemList[targetSubscript].text[FRSS_ITEM_TITLE], longStr );
            }
            if ( getItemContent( itemList, itemListTotal, flagTime, flagXmlItem[subscript][XML_ITEM_TIME], longStr ) ){
                xmlItemList[targetSubscript].text[FRSS_ITEM_TIME] = malloc( strlen(longStr)+1 );
                strcpy( xmlItemList[targetSubscript].text[FRSS_ITEM_TIME], longStr );
            }
            if ( getItemContent( itemList, itemListTotal, flagContent, flagXmlItem[subscript][XML_ITEM_CONTENT], longStr ) ){
                xmlItemList[targetSubscript].text[FRSS_ITEM_CONTENT] = malloc( strlen(longStr)+1 );
                strcpy( xmlItemList[targetSubscript].text[FRSS_ITEM_CONTENT], longStr );
            }

            xmlItemList[targetSubscript].text[FRSS_ITEM_GUID] = malloc( strlen(guid)+1 );
            strcpy( xmlItemList[targetSubscript].text[FRSS_ITEM_GUID], guid );
        }
    }
    // for ( subscript=1; subscript<=*xmlItemListTotal; subscript++)
    //     printXmlItemListNode( xmlItemList, xmlItemListTotal, subscript );

    if ( xmlItemListFreshPoint != 0 ){
        offset = *xmlItemListTotal - (xmlItemListFreshPoint-1);
        *xmlItemListAlarmTotal = offset;
        for ( subscript=1; subscript<=offset; subscript++ )
            swapXmlItemListNode( xmlItemList, xmlItemListTotal, *xmlItemListTotal+subscript, xmlItemListFreshPoint-1+subscript );
        for ( subscript=xmlItemListFreshPoint-1; subscript>=1; subscript--)
            swapXmlItemListNode( xmlItemList, xmlItemListTotal, subscript, subscript+offset );
        for ( subscript=1; subscript<=offset; subscript++ )
            swapXmlItemListNode( xmlItemList, xmlItemListTotal, *xmlItemListTotal+subscript, subscript );
    }

    // for ( subscript=1; subscript<=*xmlItemListTotal; subscript++)
    //     printXmlItemListNode( xmlItemList, xmlItemListTotal, subscript );

    // int a[10]={0,4,5,6,7,1,2,3};
    // int i;
    // for (i=1;i<=7;i++) printf(" %d",a[i]);
    // printf("\n");
    // xmlItemListFreshPoint = 5;
    // *xmlItemListTotal=7;
    // if ( xmlItemListFreshPoint != 0 ){
    //     offset = 7- (xmlItemListFreshPoint-1);
    //     for ( subscript=1; subscript<=offset; subscript++ )
    //         swap(  &(a[*xmlItemListTotal+subscript]), &(a[xmlItemListFreshPoint-1+subscript]) );
    //     for ( subscript=xmlItemListFreshPoint-1; subscript>=1; subscript--)
    //         swap( &(a[subscript]), &(a[subscript+offset]) );
    //     for ( subscript=1; subscript<=offset; subscript++ )
    //         swap( &(a[*xmlItemListTotal+subscript]), &(a[subscript]) );
    // }
    // for (i=1;i<=7;i++) printf(" %d",a[i]);
    // printf("\n");

    return 1;
}