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

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

?? maincpp.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
        if (ret == 0) {
            config.save();
        }
        else if (ret > 299 && ret < 599) {
            // try to discover if there are sources that are ok...
            SyncSource* s = NULL;
            for (int i = 0; (s = s_array[i]) != NULL; i++) {
                SyncSourceReport* sr = s->getReport();
                if (sr->checkState()) {
                    //SyncSourceConfig& sc = s->getConfig();
                    //ClientSettings cs(APPLICATION_URI);
                    //cs.saveSyncSourceConfig(sc);
                    config.saveSyncSourceConfig(s->getConfig().getName());
                }
                else{
                    //this is to check if there's a problem with the email account
                    //if the email account on the server is not set we find it and
                    //trasform the error code from 506 to 588 so we can catch this
                    //error in uidlg.cpp and popup the right allert message to the
                    //user
                    const char* errorToCheck = "Error Setting Preliminary Info: Error getting Account information " ;
                    if( sr->getLastErrorCode() == 506 &&\
                        strcmp(sr->getLastErrorMsg(),errorToCheck) == 0 &&\
                        strcmp(sr->getSourceName(), "mail") == 0){
                            ret = 588;
                    }
                }
            }
        }

        // check source states and signal them to UI
        SyncSource* s = NULL;
        int sourceID = -1;
        for (int i = 0; (s = s_array[i]) != NULL; i++) {
            SyncSourceReport* sr = s->getReport();
            if(strcmp(sr->getSourceName(),CONTACTS_NAME_A) ==0)
                sourceID = SOURCE_CONTACTS;
            if(strcmp(sr->getSourceName(),APPOINTMENTS_NAME_A) ==0)
                sourceID = SOURCE_CALENDAR;
            if(strcmp(sr->getSourceName(),TASKS_NAME_A) ==0)
                sourceID = SOURCE_TASKS;
            if(strcmp(sr->getSourceName(),FILES_NAME_A) ==0)
                sourceID = SOURCE_BRIEFCASE;
            if(strcmp(sr->getSourceName(),MAILS_NAME_A) ==0)
                sourceID = SOURCE_MAIL;
            if(strcmp(sr->getSourceName(),NOTES_NAME_A) ==0)
                sourceID = SOURCE_NOTES;

            if (sr->checkState())
                SendMessage(HwndFunctions::getWindowHandle(), ID_MYMSG_SOURCE_STATE, sourceID, SYNCSOURCE_STATE_OK);
            else
                SendMessage(HwndFunctions::getWindowHandle(), ID_MYMSG_SOURCE_STATE, sourceID, SYNCSOURCE_STATE_NOT_SYNCED);
        }


        if (mailSource.getIsMailInOutbox() && ret == 0) {
             LOG.debug("performSync: there are mails in outbox");
        }

        if (mailSource.getIsMailInInbox()) {
            LOG.info("performSync: new mail in inbox.");
            /*
            // temporary removed default funambol sound. Use the usual
            // set in the ppc
            LOG.info("performSync: new mail in inbox, playing sound.");
            wstring s(path);
            s += TEXT("\\newmessage.wav");

            if (!PlaySound(s.c_str(), NULL, SND_SYNC | SND_NOSTOP)) {
                LOG.info("Could not play sound: %s", s.c_str());
                MessageBeep(MB_ICONASTERISK);
            }
            */
        }

        if (mailSource.getFailedSendMailInOutbox()) {
            LOG.error("performSync: there was an error sending an email, alerting the user.");
            wstring message = getMailUnsent(mailSource);
            MessageBox(NULL, message.c_str(), TEXT("Alert"),
                    MB_OK | MB_ICONINFORMATION | MB_SETFOREGROUND);
        }

        LOG.debug("Sync ended multiple sources.");
    }
    return ret;
}

/*
 * Entry point to kickoff the synchronization process, both specifying the
 * sources or not. The default is to make all the configured sources.
 *
 * @param path    : the install path of the SyncClient PIM application on
 *                  the device
 * @param sources : NULL terminated array of strings containing the source
 *                  name of the sources to synchronize
 * @param ids :     NULL terminated array of strings containing the id of the mail
 *                  that must be synched with a INCLUSIVE filter. Note that this parameter
 *                  could be valorized only when there is only a source and this source is mail
 *
 * To avoid a server bug and send every time the capabilities to the server
 * in order to receive the NumberOfChanges tag
 * RESET the hashDevInfo flag in the registry
 */

DWORD WINAPI synchronize (
                const wchar_t* path,
                const wchar_t** sources,
                const wchar_t** ids,
                const char* mode)
{
    LOG.reset();
    int ret = 0;

    HwndFunctions::getWindowHandle();

    SyncItemListenerClient* itemListener = new SyncItemListenerClient();
    SyncListenerClient* syncListener = new SyncListenerClient();
    syncSourceListener  = new SyncSourceListenerClient();
    SyncStatusListenerClient* sstl = new SyncStatusListenerClient();
    TransportListenerClient* tl = new TransportListenerClient();

    setSyncItemListener(itemListener);
    setSyncListener(syncListener);
    setSyncSourceListener(syncSourceListener);
    setSyncStatusListener(sstl);
    setTransportListener(tl);
    
    //ClientSettings cs(APPLICATION_URI);
    ClientSettings::getInstance();

    string logTitle = ClientSettings::getInstance()->getAccessConfig().getUserAgent();
    logTitle += " Log";
    LOG.reset(logTitle.c_str());

    LOG.info("DeviceID: %s", ClientSettings::getInstance()->getDeviceConfig().getDevID());
    LOG.info("IP address: %s", ClientSettings::getInstance()->getIp().c_str());

    // Get the sources to sync
    const wchar_t** srcList = sources ? sources : defaultSources;
    vector<const wchar_t*> activeList = getActiveSources(*(ClientSettings::getInstance()), srcList);
    // Start the sync
    ret = performSync(*(ClientSettings::getInstance()), path, activeList, ids, mode);

    if (ret == -20) {
        LOG.debug("The user stops the sync to avoid slow sync of PIM");
        return ret;
    }

    if (ret == -10) {
        LOG.debug("Mail not set to be synched");
        LOG.debug("No source to sync");
        return -10;
    }

    // release listeners
    if(itemListener)
        { delete itemListener; itemListener=NULL; }
    if(syncListener)
        { delete syncListener; syncListener=NULL; }
    if(syncSourceListener)
        { delete syncSourceListener; syncSourceListener=NULL; }
    if(itemListener)
        { delete itemListener; itemListener=NULL; }
    if(itemListener)
        { delete itemListener; itemListener=NULL; }

    LOG.debug("Synchronize is returning: %d.", ret);
    return ret;
}


/*
 * NOTE: USED ONLY TEMPORANEALLY TO GET A MAIL PARAMETER THAT MUST
 * BE FIXED IN A PROPER WAY
 */
static TCHAR* getMailMaxMsgSize() {
    HKEY key = NULL;
    DWORD res;
    long err = 0;
    TCHAR *p = TEXT("mailMaxMsgSize");
    ULONG dim = 0;
    TCHAR *buf = NULL;

    RegCreateKeyEx(
            HKEY_LOCAL_MACHINE,
            TEXT("\\Software\\") ROOT_CONTEXT_W TEXT("\\spds\\sources\\mails"),
            0,
            NULL,
            REG_OPTION_NON_VOLATILE,
            KEY_ALL_ACCESS,
            NULL,
            &key,
            &res
            );

    if (key == 0) {
        lastErrorCode = ERR_INVALID_CONTEXT;
        sprintf(lastErrorMsg, "Invalid context path: %s", "Software/" ROOT_CONTEXT "/spds/sources/mails");
        goto finally;
    }

    // Get value length
    err = RegQueryValueEx(
            key,
            p,
            NULL,
            NULL,  // we currently support only strings
            NULL,
            &dim
            );

    if (err == ERROR_SUCCESS) {
        if (dim > 0) {
            buf = new TCHAR[dim + 1];

            err = RegQueryValueEx(
                    key,
                    p,
                    NULL,
                    NULL,  // we currently support only strings
                    (UCHAR*)buf,
                    &dim
                    );
        }
    }
    //else MessageBox(NULL,  T("Error"), T("getConfigParameter"), MB_OK);

    if (!buf)
        buf = wstrdup(TEXT(""));

finally:

    if (key != 0) {
        RegCloseKey(key);
    }

    return buf;
}


/*
* return code -10: no source to sync
*/

DWORD checkStartSync() {

    DWORD pid = 0;
    // Try to create the mutex
    HANDLE hMutex = CreateMutex(NULL, TRUE, TEXT("FunSyncInProgress") );
    if(hMutex){
        DWORD err = GetLastError();
        if(GetLastError() == ERROR_ALREADY_EXISTS){
            pid = getProcessPid( TEXT("startsync.exe") );
        }
        CloseHandle( hMutex );
    }
    return pid;

}

/*
* To get the complete mail id. The AdviseSink of the syncml transport returns an array of /id1, /id2
* But the complete id mapped with the server is I/id1, S/id2. So to ask the right mail is necessary to retrieve
* the complete id that is stored in the files containing the cached situation
*/
static wchar_t* findMailIdInFile(const wchar_t* fileName, const wchar_t* partialID) {

    wchar_t* idComplete = NULL;
    wchar_t line[512];
    FILE* f = _wfopen(fileName, TEXT("r"));

    if (f == NULL)
        return NULL;

    while(fgetws(line, 511, f) != NULL) {

        if (wcsstr(line, partialID ) != NULL) {
            if (idComplete = getElementContent(line, TEXT("id"), 0))
                break;

        }
    }
    fclose(f);
    return idComplete;
}

static wchar_t* completeMailId(const wchar_t* path, const wchar_t* partialID) {

    bool isLast = false;
    wchar_t fileName[255];
    wchar_t* idComplete = NULL;

    WIN32_FIND_DATA FileData;
    wchar_t filter[255];
    wsprintf(filter, TEXT("%s\\mails_*"), path);
    HANDLE hFind = FindFirstFile(filter, &FileData);

    if (hFind == INVALID_HANDLE_VALUE) {
        LOG.debug("No mails_ file found.");
        return NULL;
    }

    while (!isLast) {
        wsprintf(fileName, TEXT("%s\\%s"), path, FileData.cFileName);
        idComplete = findMailIdInFile(fileName, partialID);

        if (idComplete) { // id completed found
            break;
        } else {
            if (!FindNextFile(hFind, &FileData))
                isLast = TRUE;
        }
    }

    FindClose(hFind);
    return idComplete;

}

/*
* Return the number of email that are not sent in outbox folder
* When the connector will send the messate cause for every item
* we can get the message too
*/

static wstring getMailUnsent(MailSyncSource& mailSource) {

    wstring messageToRet;
    SyncSourceReport* rep = mailSource.getReport();
    int res = rep->getItemReportFailedCount(SERVER, COMMAND_ADD);
    int number = 0, i = 0;
    BOOL found = FALSE;
    for (i = 0; i < res; i++) {
        ItemReport* r = rep->getItemReport(SERVER, COMMAND_ADD, i);
        if (wcsstr(r->getId(), L"O/") != 0 && (r->getStatus() == 500 || r->getStatus() == 418 || r->getStatus() == 419)) {
            found = TRUE;
            if (r->getStatusMessage()) {
                LOG.debug("The outbox mail (id: %S) cannot be sent. Server says: %S", r->getId(), r->getStatusMessage());
                messageToRet = r->getStatusMessage();
                if (messageToRet.length() > 130) {
                    messageToRet = messageToRet.substr(0,130);
                    messageToRet.append(L"...");
                }

            }
            number++;
        }
    }

    if (!found) {
        res = rep->getItemReportFailedCount(SERVER, COMMAND_REPLACE);
        for (i = 0; i < res; i++) {
            ItemReport* r = rep->getItemReport(SERVER, COMMAND_REPLACE, i);
            if (wcscmp(r->getId(), L"O/") != 0 && (r->getStatus() == 500 || r->getStatus() == 418 || r->getStatus() == 419)) {
                if (r->getStatusMessage()) {
                    LOG.debug("The outbox mail (id: %S) cannot be sent. Server says: %S", r->getId(), r->getStatusMessage());
                    messageToRet = r->getStatusMessage();
                    if (messageToRet.length() > 130) {
                        messageToRet = messageToRet.substr(0,130);
                        messageToRet.append(L"...");
                    }
                }
                number++;
            }
        }

    }

    if (number == 1) {
        /*
        * Added extension to the name if there isn't one
        */
        wstring msg(messageToRet);
        std::transform(messageToRet.begin(), messageToRet.end(), msg.begin(), tolower);

        if (messageToRet == L"" || (msg.find(L"error sending") == wstring::npos &&
                                    msg.find(L"error adding") == wstring::npos)
                                ||  msg.find(L"com.funambol") != wstring::npos ) {
            messageToRet = ONE_OUT_MESSAGE_NOT_SENT;
        } else {
            messageToRet.insert(0, OUT_MESSAGE_NOT_SENT);
        }
    } else {
        messageToRet = MORE_OUT_MESSAGE_NOT_SENT;
    }

    return messageToRet;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区免费观在线| jvid福利写真一区二区三区| 一区二区三区免费在线观看| 久久久精品影视| 国产视频一区二区三区在线观看| 日韩精品一区二区三区老鸭窝| 欧美一级精品大片| 日韩美女在线视频| 久久精品人人做人人综合| 国产亚洲综合色| 国产精品免费视频一区| 国产精品美女久久久久久2018| 国产精品网站在线| 亚洲日本欧美天堂| 天天影视涩香欲综合网| 久久国产精品一区二区| 国产精品一二三区在线| 一本大道综合伊人精品热热| 欧美伊人久久大香线蕉综合69| 欧美精品久久天天躁| 欧美精品一区二区精品网| 国产偷国产偷精品高清尤物| 国产精品国产馆在线真实露脸 | 欧美tk—视频vk| 国产日韩欧美麻豆| 亚洲九九爱视频| 麻豆国产91在线播放| 国产凹凸在线观看一区二区| 91国产视频在线观看| 日韩精品一区二区三区四区 | 蜜臀av性久久久久av蜜臀妖精| 精品系列免费在线观看| 99国产一区二区三精品乱码| 欧美日韩激情一区| 久久久久久久综合日本| 一区二区三区鲁丝不卡| 久久国产精品第一页| 99久久精品99国产精品| 在线91免费看| 亚洲欧美日韩久久精品| 九色porny丨国产精品| 色婷婷久久久综合中文字幕| 久久亚洲欧美国产精品乐播| 亚洲国产人成综合网站| 国产成人精品一区二| 欧美一区二区三区影视| 综合激情成人伊人| 狠狠久久亚洲欧美| 欧美性videosxxxxx| 国产精品国产三级国产专播品爱网| 免费观看91视频大全| 欧美视频精品在线| 国产精品第13页| 粉嫩久久99精品久久久久久夜| 欧美日韩激情一区二区三区| 亚洲精品美腿丝袜| 成人精品视频网站| 国产亚洲一区二区三区| 久久国产三级精品| 91精品国产综合久久精品性色| 一区二区三区中文字幕| 99久久婷婷国产综合精品电影| 精品嫩草影院久久| 久久se精品一区二区| 7777精品久久久大香线蕉| 夜夜亚洲天天久久| 91视频免费看| 亚洲日本青草视频在线怡红院| 国产盗摄精品一区二区三区在线| 日韩欧美亚洲国产精品字幕久久久| 亚洲成人精品影院| 欧美日韩一区二区三区在线| 亚洲国产sm捆绑调教视频 | 乱一区二区av| 国产精品白丝在线| 国产精品一区二区三区99| 精品国产制服丝袜高跟| 国产一区二区三区日韩| 久久只精品国产| 国产馆精品极品| 国产精品免费视频网站| 一本久久a久久精品亚洲| 一区二区三区在线观看国产| 欧美在线观看视频在线| 亚洲国产成人tv| 欧美一级淫片007| 精品一区二区三区在线观看国产| 欧美成人一区二区三区片免费| 秋霞电影网一区二区| 精品盗摄一区二区三区| 国产69精品久久99不卡| 国产精品高潮呻吟| 在线一区二区三区做爰视频网站| 亚洲成年人网站在线观看| 91精品国产手机| 国产传媒一区在线| 亚洲人午夜精品天堂一二香蕉| 在线观看视频欧美| 美女视频免费一区| 色噜噜狠狠成人中文综合| 午夜欧美在线一二页| 精品国产百合女同互慰| 成人动漫在线一区| 亚洲18影院在线观看| 久久先锋影音av| 99精品视频在线观看免费| 亚洲成av人片在www色猫咪| 日韩一级欧美一级| 成人va在线观看| 手机精品视频在线观看| 久久中文娱乐网| 久久精品一级爱片| 欧美视频中文字幕| 国产精品羞羞答答xxdd| 午夜视频在线观看一区二区| 国产欧美精品一区二区色综合朱莉| 91成人免费电影| 国产一区二区三区黄视频| 夜夜操天天操亚洲| 国产偷v国产偷v亚洲高清| 56国语精品自产拍在线观看| 国产suv精品一区二区883| 亚洲18色成人| 亚洲精品菠萝久久久久久久| www国产精品av| 欧美精品一级二级三级| 波波电影院一区二区三区| 久久aⅴ国产欧美74aaa| 亚洲第一福利视频在线| 中文字幕在线观看一区| 日韩午夜在线观看| 欧美日韩国产综合草草| 97久久超碰精品国产| 国产乱人伦偷精品视频不卡| 天天综合网 天天综合色| 欧美日韩视频在线第一区| 成人丝袜高跟foot| 国产激情一区二区三区四区| 久久精品国产77777蜜臀| 成人免费高清在线| 精品无人码麻豆乱码1区2区 | 亚洲国产精品二十页| 欧美一区二区三区系列电影| 欧美三级蜜桃2在线观看| 91色porny在线视频| 成人激情图片网| 高清久久久久久| 成人听书哪个软件好| 国产99久久久国产精品潘金| 国产黑丝在线一区二区三区| 韩国女主播一区二区三区| 精品一区二区三区在线观看| 麻豆国产欧美日韩综合精品二区 | 精品国产精品一区二区夜夜嗨| 欧美日韩一本到| 欧美日韩三级一区| 69堂成人精品免费视频| 日韩一区二区影院| 26uuu亚洲综合色| 欧美激情自拍偷拍| 亚洲男人的天堂在线观看| 亚洲欧美日韩国产综合在线 | 欧美一区二区视频在线观看2022| 欧美日韩你懂的| 91精品久久久久久久91蜜桃| 欧美一区国产二区| 精品久久久久久久一区二区蜜臀| 日韩欧美www| 国产欧美日韩另类一区| 中文字幕一区二区三区不卡| 一区二区三区四区亚洲| 亚洲二区在线视频| 精品一区二区影视| 成人黄页在线观看| 欧美色爱综合网| 日韩精品一区二区在线| 国产亚洲短视频| 亚洲精品水蜜桃| 日韩电影在线观看网站| 国产精品1区二区.| 欧美一a一片一级一片| 日韩女优制服丝袜电影| 国产精品视频一区二区三区不卡| 亚洲色图19p| 久久精品国产免费| 成+人+亚洲+综合天堂| 欧美日韩国产美| 国产日韩精品视频一区| 一区二区三区欧美视频| 极品瑜伽女神91| 91久久精品午夜一区二区| 欧美zozozo| 亚洲成av人在线观看| 麻豆成人免费电影| 色哟哟一区二区三区| 欧美mv日韩mv国产网站app| 亚洲欧美日韩久久精品| 国模一区二区三区白浆| 欧美综合亚洲图片综合区| 久久先锋影音av鲁色资源|