亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? syncmlbuilder.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
    } else {
        /*
          <Put>
            <CmdID>2</CmdID>
            <Meta><Type xmlns='syncml:metinf'>application/vnd.syncml-devinf+xml</Type></Meta>
            <Item>
              <Source><LocURI>./devinf11</LocURI></Source>
              <Data>
                <DevInf xmlns='syncml:devinf'>...</DevInf>
              </Data>
            </Item>
          </Put>
        */

        res = new Put(&commandID,
                      FALSE,
                      NULL,
                      NULL,
                      &meta,
                      &items);
    }
    safeDelete(&msgRefStr);
    return res;
}


Alert* SyncMLBuilder::prepareAlert(SyncSource& s, int code) {

    ++cmdID;

    char* cmdid = itow(cmdID);
    CmdID* commandID     = new CmdID(cmdid);
    delete [] cmdid; cmdid = NULL;
    Target* tar          = new Target(s.getConfig().getURI());
    Source* sou          = new Source(_wcc(s.getName()));
    Item* item           = new Item(tar, sou, NULL, NULL, FALSE);

    ArrayList* list      = new ArrayList();
    list->add(*item);
    Alert* alert         = new Alert(commandID, false, NULL, code, list);

    deleteTarget(&tar);
    deleteSource(&sou);
    deleteItem(&item);
    deleteCmdID(&commandID);
    deleteArrayList(&list);

    return alert;
}

Alert* SyncMLBuilder::prepareInitAlert(SyncSource& s, unsigned long maxObjSize) {

    ++cmdID;

    char* cmdid = itow(cmdID);
    CmdID* commandID     = new CmdID(cmdid);
    delete [] cmdid; cmdid = NULL;
    int data             = s.getPreferredSyncMode();
    Target* tar          = new Target(s.getConfig().getURI());
    Source* sou          = new Source(_wcc(s.getName()));

    //
    // Read the clause filter from the source and translate
    // it into a Filter. This must be assigned to the Target
    //
    SourceFilter* sourceFilter = s.getFilter();
    if (sourceFilter) {
        Filter* filter = ClauseUtil::toFilter(*sourceFilter);
        tar->setFilter(filter);
        delete filter; filter = NULL;
    }


    Anchor*    anchor    = new Anchor(s.getLastAnchor(), s.getNextAnchor());
    MetInf* metInf       = new MetInf(NULL, NULL, NULL, NULL,
                            anchor, NULL, NULL, NULL, maxObjSize > 0 ? maxObjSize : NULL,  NULL, NULL);
    Meta* meta           = new Meta();
    meta->setMetInf(metInf);
    Item* item           = new Item(tar, sou, meta, NULL, FALSE);

    ArrayList* list      = new ArrayList();
    list->add(*item);
    Alert* alert         = new Alert(commandID, false, NULL, data, list);

    deleteCmdID(&commandID);
    deleteTarget(&tar);
    if(sou)
        delete sou;
    deleteAnchor(&anchor);
    deleteMetInf(&metInf);
    deleteMeta(&meta);
    deleteItem(&item);
    deleteArrayList(&list);

    return alert;
}

Alert* SyncMLBuilder::prepareAddrChangeAlert(SyncSource& s) {

    SyncItem *syncItem;
    ArrayList list;
    for(syncItem = s.getFirstItem(); syncItem; syncItem = s.getNextItem()) {
        int size = syncItem->getDataSize();

        if( syncItem && size ) {  // only valid items

            char* syncData = new char[size + 1];
            memset(syncData, 0, size + 1);
            memcpy (syncData, (char*)syncItem->getData(), size);

            ComplexData addr( syncData );
            Target target( "" );
            Source source(_wcc(syncItem->getKey()));
            // Build Item
            Item item(&target, &source, NULL, &addr, FALSE);
            // Add it to the list
            list.add(item);

            delete [] syncData;
        }
    }
    /*
    for(syncItem = s.getFirstItem(); syncItem; syncItem = s.getNextItem()) {
        int size = syncItem->getDataSize()/sizeof(char);
        char *syncData = (char *)syncItem->getData();

        if( syncItem && size ) {  // only valid items

            // Add the syncItem data as zero terminated string
            StringBuffer itemData(syncData, size);
            ComplexData addr( itemData.c_str() );
            Target target( "" );
            Source source(syncItem->getKey());
            // Build Item
            Item item(&target, &source, NULL, &addr, FALSE);
            // Add it to the list
            list.add(item);
        }
    }
    */
    // If no valid items were provided by the syncsource
    // return null alert
    if(list.isEmpty())
        return NULL;

    // Ok, prepare the message
    cmdID++;

    char* cmdid = itow(cmdID);
    CmdID commandID(cmdid);
    delete [] cmdid; cmdid = NULL;
    int data = s.getPreferredSyncMode();

    Alert* alert = new Alert(&commandID, false, NULL, data, &list);

    return alert;
}

SyncHdr* SyncMLBuilder::prepareSyncHdr(Cred* cred, unsigned long maxMsgSize, unsigned long maxObjSize) {

    ++msgID;

    VerDTD*    verDTD    = new VerDTD("1.1");
    VerProto*  verProto  = new VerProto("SyncML/1.1");
    char* sid = ltow(sessionID);
    SessionID* sessID    = new SessionID(sid);
    delete [] sid;   sid = NULL;
    char*   messageID = itow(msgID);
    Target*    tar       = new Target(target);
    Source*    sou       = NULL;
    Meta* meta           = NULL;

    if (cred && strcmp(cred->getType(), AUTH_TYPE_MD5) == 0)
        sou = new Source(device, cred->getUsername());
    else
        sou = new Source(device);


    if (maxMsgSize > 0 || maxObjSize > 0) {
        MetInf* metInf = new MetInf(NULL, NULL, NULL, NULL,
                                    NULL, NULL, NULL, maxMsgSize,
                                    maxObjSize, NULL, NULL);
        meta = new Meta();
        meta->setMetInf(metInf);
        deleteMetInf(&metInf);
    }
    SyncHdr* syncHdr = new SyncHdr(verDTD, verProto, sessID, messageID,
                                   tar, sou, NULL, false, cred, meta); //respUri e Meta are null

    deleteVerDTD(&verDTD);
    deleteVerProto(&verProto);
    deleteSessionID(&sessID);
    deleteSource(&sou);
    deleteTarget(&tar);
    safeDel(&messageID);

    return syncHdr;
}

SyncML* SyncMLBuilder::prepareInitObject(Cred* cred, ArrayList* alerts, ArrayList* commands, unsigned long maxMsgSize, unsigned long maxObjSize) {

    SyncHdr* syncHdr     = prepareSyncHdr(cred, maxMsgSize, maxObjSize);
    SyncML*  syncml      = NULL;
    ArrayList* list      = NULL;
    SyncBody* syncBody   = NULL;

    // Clone commands, even if empty. The result is a list anyway.
    list = commands->clone();

    if (alerts && alerts->size() > 0) {
        for (int k = 0; k < alerts->size(); k++)
            list->add(*(Alert*)alerts->get(k));
    }

    syncBody   = new SyncBody(list, TRUE);
    deleteArrayList(&list);
    syncml       = new SyncML(syncHdr, syncBody);

    deleteSyncHdr(&syncHdr);
    deleteSyncBody(&syncBody);

    return syncml;
}

char* SyncMLBuilder::prepareMsg(SyncML* syncml) {
    StringBuffer *s = Formatter::getSyncML(syncml);
    char* str = stringdup(s->c_str());
    delete s;
    return str;
}


SyncML* SyncMLBuilder::prepareSyncML(ArrayList* commands, BOOL final) {

    SyncHdr* syncHdr = prepareSyncHdr(NULL);
    SyncBody* syncBody   = new SyncBody(commands, final);
    SyncML* syncml = new SyncML(syncHdr, syncBody);
    deleteSyncHdr(&syncHdr);
    deleteSyncBody(&syncBody);

    return syncml;
}

ComplexData* SyncMLBuilder::getComplexData(SyncItem* syncItem,
                                           long &syncItemOffset, long maxBytes, long &sentBytes) {

        char* t   = NULL;
        ComplexData* data = NULL;

        sentBytes = syncItem->getDataSize() - syncItemOffset;
        if (sentBytes && sentBytes > maxBytes) {
            sentBytes = maxBytes;
            if (sentBytes < 1) {
                // ensure that at least one byte is sent even if maxBytes is 0 or negative,
                // otherwise no progress is made
                sentBytes = 1;
            }
        }

        t = new char[sentBytes + 1];
        memset(t, 0, sentBytes + 1);
        memcpy(t, (char *)syncItem->getData() + syncItemOffset, sentBytes);
        syncItemOffset += sentBytes;

        data = new ComplexData(t);

        if (t)
            {delete [] t; t = NULL; }

        return data;
}


ArrayList* SyncMLBuilder::prepareItem(SyncItem* syncItem,
                                      long &syncItemOffset, long maxBytes, long &sentBytes,
                                      const char* type, char* COMMAND) {
    ArrayList* list = new ArrayList();

    Source* sou = new Source(_wcc(syncItem->getKey()));
    ComplexData* data = NULL;
    Meta m;
    BOOL hasMoreData = FALSE;
    BOOL isFirstChunk = !syncItemOffset;
    if (strcmp(DELETE_COMMAND_NAME, COMMAND) != 0) {
        if (syncItem->getDataEncoding()) {
            m.setFormat(syncItem->getDataEncoding());
        }
        data = getComplexData(syncItem, syncItemOffset, maxBytes, sentBytes);
        hasMoreData = syncItemOffset < syncItem->getDataSize();
        if (isFirstChunk && hasMoreData) {
            // must send size, but only in first chunk of this item
            m.setSize(syncItem->getDataSize());
        }
    } else {
        // skip all item data for deleted items
        syncItemOffset = syncItem->getDataSize();
        sentBytes = 0;
    }

    char *tparent = toMultibyte(syncItem->getTargetParent());
    char *sparent = toMultibyte(syncItem->getSourceParent());

    Item* item = new Item(NULL, sou, tparent, sparent, &m, data, hasMoreData);
    list->add(*item);

    delete [] tparent;
    delete [] sparent;

    deleteSource(&sou);
    deleteComplexData(&data);
    deleteItem(&item);

    return list;
}

long SyncMLBuilder::addItem(ModificationCommand* &modificationCommand,
                            long &syncItemOffset, long maxBytes,
                            char* COMMAND, SyncItem* syncItem, const char* defaultType) {
    if (syncItem == NULL) {
         return 0;
    }

    // The item should determine its type itself.
    // Only fallback to the default type configured for its
    // source if (broken?) SyncSources do not set a in their
    // items.
    const char *type = _wcc(syncItem->getDataType());
    if (!type || !type[0]) {
        type = defaultType;
    }

    if (!modificationCommand) {
        ++cmdID;
        char* cmdid = itow(cmdID);
        CmdID commandID(cmdid);
        delete [] cmdid; cmdid = NULL;
        ModificationCommand* ret = NULL;
        MetInf metInf(NULL, (char*)type, NULL, NULL,
                      NULL, NULL, NULL, NULL, NULL, NULL, NULL);
        Meta meta;

        meta.setMetInf(&metInf);

        if (strcmp(ADD_COMMAND_NAME, COMMAND) == 0)
            modificationCommand = new Add(&commandID, FALSE, NULL, &meta, NULL);
        else if (strcmp(REPLACE_COMMAND_NAME, COMMAND) == 0){
            modificationCommand = new Replace(&commandID, FALSE, NULL, &meta, NULL);
        } else if (strcmp(DELETE_COMMAND_NAME, COMMAND) == 0) {
            modificationCommand = new Delete(&commandID, FALSE, FALSE, FALSE, NULL, &meta, NULL);
        }
    }

    ArrayList* list = modificationCommand->getItems();
    /* size is effectively undefined for deleted items, don't check it */
    assert(!strcmp(DELETE_COMMAND_NAME, COMMAND) || syncItemOffset >= 0);
    assert(!strcmp(DELETE_COMMAND_NAME, COMMAND) || syncItemOffset <= syncItem->getDataSize());
    long sentBytes = 0;
    ArrayList* tmpList = prepareItem(syncItem, syncItemOffset, maxBytes, sentBytes, type, COMMAND);
    assert(!strcmp(DELETE_COMMAND_NAME, COMMAND) || syncItemOffset >= 0);
    assert(!strcmp(DELETE_COMMAND_NAME, COMMAND) || syncItemOffset <= syncItem->getDataSize());
    list->add(tmpList);
    deleteArrayList(&tmpList);

    return sentBytes;
}

Sync* SyncMLBuilder::prepareSyncCommand(SyncSource& source) {

    ++cmdID;

    char* cmdid = itow(cmdID);
    CmdID* commandID     = new CmdID(cmdid);
    delete [] cmdid; cmdid = NULL;
    Target* tar          = new Target(source.getConfig().getURI());
    Source* sou          = new Source(_wcc(source.getName()));
    ArrayList* list      = new ArrayList();
    Sync* sync           = NULL;

    sync = new Sync(commandID, FALSE, NULL, tar, sou, NULL, 0,  list);

    deleteCmdID(&commandID);
    deleteTarget(&tar);
    deleteSource(&sou);
    deleteArrayList(&list);

    return sync;

}


Map* SyncMLBuilder::prepareMapCommand(SyncSource& s) {
    /*
    CmdID* cmdID,
    Target* target,
    Source* source,
    Cred* cred,
    Meta* meta,
    ArrayList* mapItems);
    */
    ++cmdID;
    char* cmdid = itow(cmdID);
    CmdID* commandID     = new CmdID(cmdid);
    delete [] cmdid; cmdid = NULL;
    Target* tar          = new Target(s.getConfig().getURI());
    Source* sou          = new Source(_wcc(s.getName()));
    ArrayList* mapItems  = new ArrayList();
    Map* map = new Map(commandID, tar, sou, NULL, NULL, mapItems);

    deleteCmdID(&commandID);
    deleteTarget(&tar);
    deleteSource(&sou);
    deleteArrayList(&mapItems);

    return map;

}

MapItem* SyncMLBuilder::prepareMapItem(SyncMap* syncMap) {

    Target* tar          = new Target(syncMap->getGUID());
    Source* sou          = new Source(syncMap->getLUID());
    MapItem* m = new MapItem(tar, sou);
    deleteTarget(&tar);
    deleteSource(&sou);

    return m;
}

void SyncMLBuilder::addMapItem(Map* map, MapItem* mapItem){
    if (mapItem == NULL || map == NULL)
        return;
    ArrayList* list = map->getMapItems();
    list->add(*mapItem);

}

void SyncMLBuilder::resetMessageID() {
    msgID = 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合九色综合欧美98| 亚洲福利电影网| 亚洲六月丁香色婷婷综合久久| 亚洲一区二区三区三| 国产激情精品久久久第一区二区| 欧美午夜免费电影| 中文字幕一区二区三区四区不卡| 久久精品免费看| 欧美亚洲国产一区二区三区| 国产偷国产偷精品高清尤物| 日韩精品亚洲专区| 色婷婷av一区二区三区gif| 国产亚洲一二三区| 精品夜夜嗨av一区二区三区| 欧美色视频在线观看| 中文字幕视频一区| 国产乱码一区二区三区| 欧美一级黄色大片| 免费成人结看片| 欧美日本国产视频| 亚洲一卡二卡三卡四卡| 色综合网色综合| 亚洲日本丝袜连裤袜办公室| 丁香婷婷综合网| 久久九九久精品国产免费直播| 日本91福利区| 欧美一区二区视频在线观看2022| 亚洲成人激情自拍| 欧美一区二区视频网站| 美女国产一区二区三区| 欧美一二三四在线| 久久国产精品一区二区| 日韩视频在线永久播放| 麻豆国产精品一区二区三区| 欧美一级夜夜爽| 国产一区二区久久| 国产精品视频九色porn| 91无套直看片红桃| 亚洲一区二区三区中文字幕在线| 欧美性猛交xxxxxx富婆| 午夜精品国产更新| 精品理论电影在线| 成人小视频在线| 亚洲黄色在线视频| 51精品视频一区二区三区| 免费一级片91| 国产欧美视频一区二区| 99精品在线免费| 亚洲成人免费观看| 久久精品在线观看| 色哦色哦哦色天天综合| 男男成人高潮片免费网站| 久久综合国产精品| 91丝袜美女网| 男女男精品视频| 欧美高清在线精品一区| 色噜噜狠狠色综合欧洲selulu| 亚洲香肠在线观看| 国产亚洲精品久| 在线观看国产一区二区| 精品国产区一区| 亚洲日本免费电影| 精品亚洲成a人在线观看| 久久久精品黄色| 欧美午夜影院一区| 国产精品综合一区二区三区| 亚洲欧美色综合| 欧美一区二区三区思思人| 高清在线不卡av| 婷婷夜色潮精品综合在线| 久久夜色精品一区| 精品视频一区 二区 三区| 国产尤物一区二区在线| 亚洲一区自拍偷拍| 国产偷国产偷精品高清尤物 | 日本一区二区三区在线不卡| 在线观看一区二区视频| 国产福利一区二区三区| 五月天丁香久久| 亚洲欧洲精品天堂一级| 欧美mv日韩mv| 欧美日韩国产经典色站一区二区三区 | 国内精品视频666| 亚洲一区在线电影| 国产精品二区一区二区aⅴ污介绍| 9191国产精品| 欧美综合亚洲图片综合区| 国产成人福利片| 日本系列欧美系列| 亚洲免费观看高清完整版在线观看| 日韩欧美在线影院| 欧美精品欧美精品系列| 91丨porny丨中文| 成人网男人的天堂| 国产一本一道久久香蕉| 蜜臀av性久久久久蜜臀av麻豆| 亚洲乱码国产乱码精品精的特点| 国产欧美一区二区精品秋霞影院| 日韩一区二区三区电影| 欧美日韩在线观看一区二区| 成人永久aaa| 国产成人av电影在线播放| 韩国女主播一区| 国产一区欧美一区| 国产在线精品免费| 国产乱淫av一区二区三区| 免费高清在线视频一区·| 午夜天堂影视香蕉久久| 亚洲第一狼人社区| 亚洲高清免费观看高清完整版在线观看| 中文字幕一区免费在线观看| 国产精品久久精品日日| 中文字幕欧美日韩一区| 欧美高清在线一区| 亚洲欧洲无码一区二区三区| 国产精品灌醉下药二区| 亚洲欧美一区二区三区孕妇| 亚洲三级在线免费观看| 亚洲美女视频一区| 亚洲一区二区美女| 日本不卡在线视频| 久久精品国产亚洲a| 国产乱码一区二区三区| 成人黄色国产精品网站大全在线免费观看 | 成人精品免费视频| 99re热这里只有精品视频| 99亚偷拍自图区亚洲| 在线视频你懂得一区二区三区| 在线观看一区日韩| 精品美女在线观看| 国产精品丝袜一区| 亚洲欧美日韩一区二区三区在线观看 | 精品在线亚洲视频| 成人午夜私人影院| 91久久精品国产91性色tv| 欧美美女激情18p| 久久免费看少妇高潮| 亚洲欧洲日产国码二区| 日日摸夜夜添夜夜添亚洲女人| 美女在线观看视频一区二区| 国产另类ts人妖一区二区| 95精品视频在线| 欧美高清你懂得| 国产日韩欧美高清在线| 一区二区三区电影在线播| 日本成人在线网站| gogo大胆日本视频一区| 欧美日本在线一区| 亚洲国产精品国自产拍av| 亚洲成人激情综合网| 丁香激情综合五月| 欧美疯狂做受xxxx富婆| 国产精品久久久久永久免费观看| 亚洲综合精品久久| 国产99久久久国产精品免费看| 日本精品裸体写真集在线观看| 日韩三级av在线播放| 亚洲免费av高清| 国产不卡在线一区| 日韩一区二区三区电影在线观看| 亚洲少妇30p| 国产福利一区二区三区视频在线| 欧美日韩亚洲综合| 国产精品久久久久永久免费观看 | 亚洲精品在线网站| 亚洲欧美二区三区| 国产一区二区三区在线观看精品| 91麻豆国产福利精品| 久久中文字幕电影| 日韩专区欧美专区| 99久久国产免费看| 国产拍欧美日韩视频二区| 日韩制服丝袜av| 在线观看一区二区精品视频| 国产精品亲子伦对白| 激情国产一区二区| 欧美一级艳片视频免费观看| 亚洲激情自拍视频| 91丨九色丨黑人外教| 欧美国产欧美综合| 狠狠色丁香婷婷综合| 欧美精品第一页| 亚洲国产精品自拍| 色综合久久九月婷婷色综合| 国产视频视频一区| 国产毛片精品一区| 欧美videos大乳护士334| 天堂在线亚洲视频| 欧美日韩一区三区四区| 一区二区三区在线视频免费| 成人av在线看| 国产精品美女久久福利网站 | 久久视频一区二区| 麻豆freexxxx性91精品| 这里是久久伊人| 午夜精品久久久久久久久久 | 免费观看一级欧美片| 欧美卡1卡2卡| 日韩精品三区四区| 91精品国产综合久久精品麻豆|