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; }
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; }
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; }