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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? syncmanager.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 5 頁
字號(hào):
                                    maxMsgSize &&
                                    syncItem &&
                                    msgSize + changeOverhead + syncItem->getDataSize() - syncItemOffset > maxMsgSize) {
                                    // avoid adding another item that exceeds the message size
                                    break;
                                }

                                msgSize += changeOverhead;
                                msgSize +=
                                    syncMLBuilder.addItem(modificationCommand,
                                                          syncItemOffset,
                                                          (maxMsgSize && loSupport) ? (maxMsgSize - msgSize) : LONG_MAX,
                                                          DELETE_COMMAND_NAME,
                                                          syncItem, sources[count]->getConfig().getType());

                                if (syncItem) {
                                    if (syncItemOffset == syncItem->getDataSize()) {
                                        // Fire Sync Item Event - Item Deleted
                                        fireSyncItemEvent(sources[count]->getConfig().getURI(), sources[count]->getConfig().getName(), syncItem->getKey(), ITEM_DELETED_BY_CLIENT);
                                        delete syncItem; syncItem = NULL;
                                    } else {
                                        assert(msgSize >= maxMsgSize);
                                        break;
                                    }
                                }
                                else {
                                    step++;
                                    break;
                                }
                                tot++;
                            } while(msgSize < maxMsgSize);
                        }
                        if (step == 6 && syncItem == NULL)
                            last = TRUE;

                        break;
                    }
            }

            if (modificationCommand) {
                list->add(*modificationCommand);
                delete modificationCommand;
                modificationCommand = NULL;
            }
            sync->setCommands(list);
            delete list;
            commands->add(*sync);
            delete sync;

            //
            // Check if all the sources were synced.
            // If not the prepareSync doesn't use the <final/> tag
            //
            syncml = syncMLBuilder.prepareSyncML(commands, (iterator != toSync ? FALSE : last));
            msg    = syncMLBuilder.prepareMsg(syncml);

            deleteSyncML(&syncml);
            deleteArrayList(&commands);

            if (msg == NULL) {
                ret = lastErrorCode;
                goto finally;
            }

            // Synchronization message:
            long realMsgSize = strlen(msg);
            LOG.debug("%s estimated size %ld, allowed size %ld, real size %ld / estimated size %ld = %ld%%",
                      MSG_MODIFICATION_MESSAGE,
                      msgSize, maxMsgSize, realMsgSize, msgSize,
                      msgSize ? (100 * realMsgSize / msgSize) : 100);
            LOG.debug("%s", msg);

            //Fire Modifications Event
            fireSyncEvent(NULL, SEND_MODIFICATION);

            responseMsg = transportAgent->sendMessage(msg);
            if (responseMsg == NULL) {
                ret=lastErrorCode;
                goto finally;
            }
            // increment the msgRef after every send message
            syncMLBuilder.increaseMsgRef();
            syncMLBuilder.resetCommandID();

            syncml = syncMLProcessor.processMsg(responseMsg);
            safeDelete(&responseMsg);
            safeDelete(&msg);

            if (syncml == NULL) {
                ret = lastErrorCode;
                goto finally;
            }

            isFinalfromServer = syncml->isLastMessage();
            ret = syncMLProcessor.processSyncHdrStatus(syncml);
            if (isErrorStatus(ret)) {
                lastErrorCode = ret;
                sprintf(lastErrorMsg, "Server Failure: server returned error code %i", ret);
                LOG.error(lastErrorMsg);
                goto finally;

            }
            ret = 0;
            //
            // Process the status of the item sent by client. It invokes the
            // source method
            //
            int itemret = syncMLProcessor.processItemStatus(*sources[count], syncml->getSyncBody());
            if(itemret){
                char *name = toMultibyte(sources[count]->getName());
                LOG.error("Error #%d in source %s", itemret, name);
                delete [] name;
                // skip the source, and set an error
                setSourceStateAndError(count, SOURCE_ERROR, itemret, lastErrorMsg);
                lastErrorCode = itemret;
                break;
            }

            // Fire SyncSourceEvent: END sync of a syncsource (client modifications)
            if (last)
                fireSyncSourceEvent(sources[count]->getConfig().getURI(), sources[count]->getConfig().getName(), sources[count]->getSyncMode(), 0, SYNC_SOURCE_END);

            // The server might have included a <Sync> command without waiting
            // for a 222 alert. If it hasn't, then nothing is done here.
            ArrayList statusList;
            if (checkForServerChanges(syncml, statusList)) {
                goto finally;
            }
            if (statusList.size()) {
                Status* status = syncMLBuilder.prepareSyncHdrStatus(NULL, 200);
                commands->add(*status);
                deleteStatus(&status);
                commands->add(&statusList);
            }

            // deleteSyncML(&syncml);

        } while (last == FALSE);

        // Fire SyncSourceEvent: END sync of a syncsource (client modifications)
        // fireSyncSourceEvent(sources[count]->getConfig().getURI(), sources[count]->getConfig().getName(), sources[count]->getSyncMode(), 0, SYNC_SOURCE_END);

    } // end for (count = 0; count < sourcesNumber; count ++)

    if (isToExit()) {
        // error. no source to sync
        ret = lastErrorCode;
        goto finally;
    }

    deleteSyncML(&syncml);

    //
    // If this was the last chunk, we move the state to STATE_PKG3_SENT
    // At this time "last" is always true. The client is going to send
    // the 222 package for to get the server modification if at least a source is correct
    //
    last = TRUE;
    currentState = STATE_PKG3_SENT;

    //
    // send 222 alert code to retrieve the item from server
    //
    if ( !isFinalfromServer && isAtLeastOneSourceCorrect ) {
        status = syncMLBuilder.prepareSyncHdrStatus(NULL, 200);
	    commands->add(*status);
        deleteStatus(&status);
        for (count = 0; count < sourcesNumber; count ++) {
            if(!sources[count]->getReport()->checkState()) {
                continue;
            }
            if ((sources[count]->getSyncMode() != SYNC_ONE_WAY_FROM_CLIENT) &&
                (sources[count]->getSyncMode() != SYNC_REFRESH_FROM_CLIENT))
            {
                alert = syncMLBuilder.prepareAlert(*sources[count]);
                commands->add(*alert);
                deleteAlert(&alert);
            }
        }

        syncml = syncMLBuilder.prepareSyncML(commands, FALSE);
        msg    = syncMLBuilder.prepareMsg(syncml);

        LOG.debug("Alert to request server changes");
        LOG.debug("%s", msg);

        responseMsg = transportAgent->sendMessage(msg);
        if (responseMsg == NULL) {
            LOG.debug("SyncManager::sync(): null responseMsg");
            ret=lastErrorCode;
            goto finally;
        }

        // increment the msgRef after every send message
        syncMLBuilder.increaseMsgRef();
        syncMLBuilder.resetCommandID();

        deleteSyncML(&syncml);
        safeDelete(&msg);

        syncml = syncMLProcessor.processMsg(responseMsg);
        safeDelete(&responseMsg);
        deleteArrayList(&commands);

        if (syncml == NULL) {
            LOG.debug("SyncManager::sync(): null syncml");
            ret = lastErrorCode;
            goto finally;
        }
        ret = syncMLProcessor.processSyncHdrStatus(syncml);
        if (isErrorStatus(ret)) {
            lastErrorCode = ret;
            sprintf(lastErrorMsg, "Server Failure: server returned error code %i", ret);
            LOG.error(lastErrorMsg);
            goto finally;
        }
        ret = 0;

        //
        // Process the items returned from server
        //

        do {
            last = syncml->getSyncBody()->getFinalMsg();
            ArrayList statusList;

            status = syncMLBuilder.prepareSyncHdrStatus(NULL, 200);
            commands->add(*status);
            deleteStatus(&status);

            if (checkForServerChanges(syncml, statusList)) {
                goto finally;
            }

            commands->add(&statusList);

            if (!last) {
                deleteSyncML(&syncml);
                syncml = syncMLBuilder.prepareSyncML(commands, last);
                msg    = syncMLBuilder.prepareMsg(syncml);

                LOG.debug("Status to the server");
                LOG.debug("%s", msg);

                responseMsg = transportAgent->sendMessage(msg);
                if (responseMsg == NULL) {
                    ret=lastErrorCode;
                    goto finally;
                }
                // increment the msgRef after every send message
                syncMLBuilder.increaseMsgRef();
                syncMLBuilder.resetCommandID();

                deleteSyncML(&syncml);
                safeDelete(&msg);

                syncml = syncMLProcessor.processMsg(responseMsg);
                safeDelete(&responseMsg);
                deleteArrayList(&commands);
                if (syncml == NULL) {
                    ret = lastErrorCode;
                    goto finally;
                }
                ret = syncMLProcessor.processSyncHdrStatus(syncml);

                if (isErrorStatus(ret)) {
                    lastErrorCode = ret;
                    sprintf(lastErrorMsg, "Server Failure: server returned error code %i", ret);
                    LOG.error(lastErrorMsg);
                    goto finally;
                }
                ret = 0;
            }
        } while (last == FALSE);
    }


finally:

    if (isAtLeastOneSourceCorrect == TRUE)
    {
        fireSyncSourceEvent(prevSourceUri, prevSourceName, prevSyncMode, 0, SYNC_SOURCE_END);
        safeDelete(&responseMsg);
        safeDelete(&msg);
        deleteSyncML(&syncml);
    }
    else
    {
        ret = -1;
        LOG.debug("sources not available");
    }

    if (ret) {
        //Fire Sync Error Event
        fireSyncEvent(lastErrorMsg, SYNC_ERROR);
    }
    return ret;
}


int SyncManager::endSync() {

    char* mapMsg            = NULL;
    char* responseMsg       = NULL;
    SyncML*  syncml         = NULL;
    BOOL     last           = TRUE;
    int ret                 = 0;
    Map* map                = NULL;
    Status* status          = NULL;
    unsigned int iterator   = 0;
    unsigned int toSync     = 0;
    int i = 0, tot = -1;

    // rough (pessimistic) estimation of 400 bytes per map item
    int maxMapItems = maxMsgSize / 400;

    // The real number of source to sync
    for (count = 0; count < sourcesNumber; count ++) {
        if (!sources[count]->getReport()->checkState()) {
            continue;
        }
        toSync++;
    }

    for (count = 0; count < sourcesNumber; count ++) {
        if (!sources[count]->getReport()->checkState()) {
            continue;
        }

        iterator++;
        if (  (sources[count]->getS

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频一二三区| 午夜精品久久一牛影视| 日本aⅴ亚洲精品中文乱码| 日韩精品亚洲一区| 99精品国产视频| 精品国产一区二区三区av性色 | 久久嫩草精品久久久精品一| 中文字幕视频一区| 国产乱子轮精品视频| 欧美色综合网站| 国产精品动漫网站| 国产aⅴ综合色| 亚洲国产成人自拍| av在线免费不卡| 亚洲女人的天堂| 欧美在线视频全部完| 亚洲国产精品一区二区久久恐怖片 | 亚洲图片欧美视频| 欧美中文字幕一区二区三区| 亚洲精品你懂的| 欧美午夜不卡在线观看免费| 亚洲成人精品在线观看| 欧美日韩国产一区| 毛片av中文字幕一区二区| 精品少妇一区二区三区视频免付费 | 成人理论电影网| 日韩毛片高清在线播放| 色婷婷av一区二区三区软件 | 成人精品国产免费网站| 亚洲三级免费观看| 欧美一区二区私人影院日本| 国模套图日韩精品一区二区| 国产精品三级久久久久三级| av在线不卡观看免费观看| 亚洲自拍偷拍综合| 久久色.com| 欧美日韩你懂得| 国产美女在线观看一区| 久久蜜桃一区二区| 精品少妇一区二区三区免费观看| 亚洲一区二区精品视频| 成人黄动漫网站免费app| 亚洲精品菠萝久久久久久久| 欧美老人xxxx18| 男男视频亚洲欧美| 国产精品亚洲第一区在线暖暖韩国| 麻豆精品新av中文字幕| 国产不卡免费视频| 一本久道中文字幕精品亚洲嫩| 欧美性一级生活| 日韩欧美电影一区| 中文字幕中文乱码欧美一区二区 | 亚洲一区二区三区国产| 激情都市一区二区| 色哟哟一区二区在线观看| 欧美精品一卡二卡| 国产日韩在线不卡| 日韩av二区在线播放| 99久久er热在这里只有精品66| 欧美日韩高清一区二区| 国产女人18毛片水真多成人如厕 | 欧美日韩一区二区在线观看视频| 精品久久久久久久久久久久久久久 | 色综合久久中文综合久久97| 欧美一区二区三区思思人| 国产精品国产成人国产三级| 天堂成人国产精品一区| 91论坛在线播放| 国产精品三级久久久久三级| 久久99九九99精品| 欧美日韩国产123区| 亚洲欧美日韩久久| www.欧美.com| 国产精品久久久久久久久快鸭| 看国产成人h片视频| 日韩午夜激情电影| 日韩高清国产一区在线| 91超碰这里只有精品国产| 亚洲精品日韩一| 欧美日韩一区不卡| 久草中文综合在线| 国产日韩av一区| 在线观看www91| 免费在线观看成人| 久久久久国产一区二区三区四区 | 欧美一卡2卡三卡4卡5免费| 男人的天堂久久精品| 精品精品欲导航| 成人精品国产福利| 日韩电影一二三区| 欧美电影免费观看高清完整版在线 | 久久爱www久久做| 中文字幕在线视频一区| 欧美日韩国产另类不卡| 国产精品综合二区| 亚欧色一区w666天堂| 国产日韩欧美不卡在线| 欧美午夜免费电影| 成人污视频在线观看| 亚洲影视资源网| 中文字幕欧美日本乱码一线二线| 欧美图区在线视频| 成人app下载| 国产一区999| 久久国产精品区| 一区二区国产视频| 亚洲美女偷拍久久| 国产日韩成人精品| 国产亚洲婷婷免费| 精品欧美久久久| 日韩午夜电影在线观看| 欧美日韩在线三区| 在线观看日韩毛片| 成人三级在线视频| 国产精品香蕉一区二区三区| 三级欧美韩日大片在线看| 一区二区三区四区不卡在线| 欧美激情在线一区二区三区| 精品国产91久久久久久久妲己| 欧美日韩在线播放一区| 欧美影院一区二区三区| 一本大道久久a久久精品综合| eeuss鲁一区二区三区| 成人激情av网| av在线一区二区三区| 99精品视频在线观看免费| 成人午夜在线免费| 成人av在线一区二区三区| 国产成人精品免费在线| 成人免费看视频| 一本久道久久综合中文字幕| 91首页免费视频| 欧美日韩国产成人在线免费| 欧美剧情片在线观看| 日韩欧美国产不卡| 欧美国产乱子伦| 亚洲欧美色一区| 蜜芽一区二区三区| 国产精品99久久久久久久vr| 不卡电影免费在线播放一区| 91啪在线观看| 日韩精品一区二区三区视频播放 | 亚洲一区二区影院| 免费高清在线一区| 不卡视频在线看| 欧美一级二级在线观看| 国产精品九色蝌蚪自拍| 亚洲第一搞黄网站| 国产成a人无v码亚洲福利| 精品视频1区2区| |精品福利一区二区三区| 视频在线观看一区| 北条麻妃一区二区三区| 欧美一级二级三级乱码| 一级日本不卡的影视| 国产成人免费视频精品含羞草妖精| 色综合咪咪久久| 欧美激情在线免费观看| 麻豆精品国产91久久久久久| 91香蕉视频污| 欧美国产一区在线| 另类小说一区二区三区| 欧美日韩精品高清| 中文字幕一区二区三区精华液| 久久er精品视频| 91精品国产综合久久久久久 | 国产乱码一区二区三区| 欧美一区二区视频网站| 亚洲一二三级电影| 色综合久久中文字幕综合网| 亚洲国产成人午夜在线一区 | 国产精品456露脸| 精品福利av导航| 国产一区二区三区电影在线观看 | 国产精品蜜臀在线观看| 床上的激情91.| 国产精品护士白丝一区av| jlzzjlzz国产精品久久| 日韩一区欧美一区| 91美女精品福利| 亚洲动漫第一页| 欧美一级午夜免费电影| 激情综合色播激情啊| 久久精品视频在线看| 国产成人午夜精品影院观看视频 | 国产福利电影一区二区三区| 2020日本不卡一区二区视频| 国产成人在线视频免费播放| 欧美国产一区在线| 在线免费观看日韩欧美| 蜜桃久久久久久久| 国产精品美女www爽爽爽| 日本韩国欧美在线| 日本成人中文字幕| 国产三级一区二区三区| 91成人看片片| 国产成人欧美日韩在线电影| 国产精品理论片| 91精品国产色综合久久| 成人午夜激情片|