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

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

?? ctpmessage.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
字號:
/*
 * Copyright (C) 2003-2007 Funambol, Inc
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY, TITLE, NONINFRINGEMENT or FITNESS FOR A PARTICULAR
 * PURPOSE.  See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 * 02111-1307  USA
 */

#include "CTPMessage.h"
#include "base/util/utils.h"

CTPMessage::CTPMessage() {
    initialize();

}

CTPMessage::CTPMessage(const char* package, int maxPackageLen) {
   initialize();
   parse(package, maxPackageLen);
}

CTPMessage::~CTPMessage() {
    if (buffer) {
        delete [] buffer;
    }
    if (np) {
        delete np;
    }
    if (from) {
        delete  [] from;
    }
}

void CTPMessage::initialize() {
    buffer          = NULL;
    from            = NULL;
    bufferLength    = 0;
    np              = NULL;
    packageLength   = 0;
    protocolVersion = 0;
    fromLength      = 0;
}


int CTPMessage::parse(const char* package, int maxPackageLen) {
    
// This macro increments local pointer p or return error if out of bounds.
#define IncP(Num) p+(Num)<end ? p+=(Num) : p = NULL
    
    LOG.debug("Parsing msg...");
    int ret = 0;
    setBufferLength(0);
    if (buffer) { delete [] buffer; buffer = NULL; }
    if (from) { delete [] from; from = NULL; } 

    //get the length of the message (first 2 bytes)    
    int messageLen  = (int)((unsigned char)package[0]);
    int messageLen1 = (int)((unsigned char)package[1]);
    
    messageLen <<= 8;
    messageLen = messageLen | messageLen1;
    //LOG.debug("messageLen = %d", messageLen);

    if (maxPackageLen) {
        // Safe check on message length
        if (messageLen+2 > maxPackageLen) {
            messageLen = maxPackageLen - 2;
            LOG.info("Warning: recv received only %d bytes: set messageLength to %d", maxPackageLen, messageLen);
        }
        else if (messageLen+2 < maxPackageLen) {
            LOG.info("Warning: recv received more bytes: %d", maxPackageLen);
        }
    }
    setPackageLength(messageLen + 2);
    
    // variables at the beginning and the end of the message
    const char *p = &package[2], *end = p + messageLen;

    ////////// Save the msg received to file
    //char name[32];
    //sprintf(name, "/dump/%d.dmp", time((void*)NULL));
    //saveFile(name, package, messageLen+2, true);
    //const char* start = p;
    //////////
    
    // Protocol version
    if (p == NULL) {
        LOG.debug("Error in parsing ctp message: protocol version not found");
        ret = -1;
        goto finally;
    }
    setProtocolVersion(*p);

    // command or status
    IncP(1);
    if (p == NULL) {
        LOG.debug("Error in parsing ctp message: command or status not found");
        ret = -1;
        goto finally;
    }
    setGenericCommand(*p);

    // now could be or not params
    while (IncP(1)) {                       // param-code
        CTPParam param;
        param.setParamCode(*p);
        
        IncP(1); //value-length
        if (p == NULL) {
            LOG.debug("Error in parsing ctp message: Param-value-length not found");
            ret = -1;
            goto finally;   
        }
        int valLen = (int)((unsigned char)(*p));

        // Safe check on value-length:
        if (p+valLen-1 >= end) {
            LOG.debug("Warning! value length too big (%d), using: %d", valLen, end-p);
            valLen = end-p;
        }
        
        IncP(1);
        param.setValue((const void*)p, valLen);

        IncP(valLen - 1);
        params.push_back(param);
                
        // The max params for the status sent by the server are only 2.        
        if (params.size() == 1) {
            if (ST_SYNC == getGenericCommand()) { // the server is sending the <san>
                LOG.debug("SAN param found");
                np = new SyncNotification();
                np->parse((const char*)param.getValue(), valLen);
            } else if (ST_JUMP == getGenericCommand()) {
                LOG.debug("FROM param found");
                from = new char[valLen];
                memcpy(from, param.getValue(), valLen);
                setFromLength(valLen);
            }            
            else {
                LOG.debug("param found");
                buffer = new char[valLen];
                memcpy(buffer, param.getValue(), valLen);
                setBufferLength(valLen);
            }

        } else if (params.size() == 2) {  
            if (ST_JUMP == getGenericCommand()) {
                LOG.debug("TO param found");
                buffer = new char[valLen];
                memcpy(buffer, param.getValue(), valLen);
                setBufferLength(valLen);
            }
        }
        if (!p) goto finally;
    }
    
finally:
    return ret;
}

char* CTPMessage::toByte() {
    
    int totalMessageSize = 2; // version and genericCommand
    int totalPackageSize = 0, i = 0;
    int numParam = params.size();
    
    list<CTPParam>::iterator paramIt;
    for (paramIt = params.begin(); paramIt != params.end(); paramIt++) {
        totalMessageSize += 2;
        totalMessageSize += (*paramIt).getValueLength();
    }
    totalPackageSize = totalMessageSize +2;
    
    setPackageLength(totalPackageSize); // the whole package
    setBufferLength(totalPackageSize);  // the same package that is in the buffer

    buffer = new char[totalPackageSize];

    if (totalMessageSize < 255) {
        buffer[0] = 0x00;
        buffer[1] = (unsigned char)totalMessageSize;        
    } else {
        int upper = 0, down = 0; 
        upper = totalMessageSize >> 8 ;
        buffer[0] = (unsigned char)(upper);
        down = totalMessageSize;
        upper <<= 8; 
        down = down ^ upper;
        buffer[1] = (unsigned char)down;    

    }
    
    buffer[2] = getProtocolVersion();
    buffer[3] = getGenericCommand();
    
    if (totalPackageSize == 4) {
        goto finally;
    }
    char* p = &buffer[4];
    
    for (paramIt = params.begin(); paramIt != params.end(); paramIt++) {
        p[i] = (*paramIt).getParamCode();
        i++;
        p[i] = (*paramIt).getValueLength();
        i++;
        memcpy(&p[i], (*paramIt).getValue(), (*paramIt).getValueLength());
        i += (*paramIt).getValueLength();
    }

finally:
    return buffer;
}

void CTPMessage::addParam(CTPParam* p) {
    params.push_back(*p);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级高清片| 午夜精品久久久久久久久| 亚洲欧洲美洲综合色网| 婷婷开心久久网| 色哟哟精品一区| 国产欧美日韩另类一区| 免费成人性网站| 在线观看日韩高清av| 中文字幕欧美区| 国产中文一区二区三区| 4438x亚洲最大成人网| 亚洲免费视频成人| va亚洲va日韩不卡在线观看| 日韩美女一区二区三区| 日韩高清在线观看| 精品视频色一区| 亚洲一区自拍偷拍| 91免费在线看| 亚洲人一二三区| 不卡影院免费观看| 国产免费成人在线视频| 国产麻豆视频精品| 精品免费视频一区二区| 香蕉成人伊视频在线观看| 欧美性色黄大片| 亚洲国产综合91精品麻豆| 一本在线高清不卡dvd| 亚洲人成伊人成综合网小说| av激情综合网| 一区视频在线播放| 一本色道久久综合精品竹菊| 1024亚洲合集| 91浏览器在线视频| 亚洲制服丝袜av| 欧美人妖巨大在线| 日韩成人一区二区三区在线观看| 欧美精品777| 久久97超碰色| 日本一区二区三区免费乱视频| 国产成人免费av在线| 中文子幕无线码一区tr| 成人污视频在线观看| 国产精品人人做人人爽人人添| 成人app在线| 悠悠色在线精品| 欧美日韩成人激情| 经典三级在线一区| 中文字幕一区二区三区在线不卡| 99国产精品久| 日韩综合在线视频| 精品国产成人在线影院| 国产成人久久精品77777最新版本| 欧美激情一区二区三区四区| 91在线观看高清| 天堂一区二区在线| 久久九九影视网| 色婷婷国产精品| 奇米影视一区二区三区小说| 日本一区二区三级电影在线观看| 91麻豆免费视频| 美女脱光内衣内裤视频久久网站 | 亚洲二区在线观看| 欧美电影免费观看高清完整版| 国产麻豆精品95视频| 18成人在线观看| 精品成人免费观看| 99精品国产91久久久久久 | 这里是久久伊人| 国产成人三级在线观看| 亚洲成人黄色小说| 亚洲国产高清在线| 欧美成人高清电影在线| 91丨porny丨中文| 激情文学综合网| 亚洲动漫第一页| 中文天堂在线一区| 精品久久久久久最新网址| 99国产一区二区三精品乱码| 免费成人结看片| 亚洲午夜激情av| 国产精品麻豆欧美日韩ww| 日韩欧美国产小视频| 色成年激情久久综合| 国产成人免费视频网站高清观看视频| 亚洲自拍偷拍网站| 亚洲女爱视频在线| 中文字幕av一区二区三区免费看| 欧美久久久久久蜜桃| 一本久久精品一区二区| 国产成人aaa| 久久精品二区亚洲w码| 亚洲一区免费观看| 国产精品国产三级国产| 久久精品视频在线免费观看| 欧美一级黄色片| 欧美精品一二三| 欧美色窝79yyyycom| 色94色欧美sute亚洲线路一ni | 国产精品久久久久久久午夜片| 欧美一区三区二区| 欧美日韩日日骚| 欧美在线看片a免费观看| 99精品一区二区三区| 国产成人综合视频| 国产夫妻精品视频| 国模大尺度一区二区三区| 久久99精品久久久久久国产越南| 性欧美疯狂xxxxbbbb| 亚洲chinese男男1069| 亚洲最新在线观看| 亚洲午夜久久久久| 亚洲亚洲人成综合网络| 夜夜揉揉日日人人青青一国产精品| 亚洲婷婷国产精品电影人久久| 欧美激情艳妇裸体舞| 国产精品久久久久久久久搜平片 | 精品国产乱码久久| 欧美v日韩v国产v| 欧美成人精品二区三区99精品| 日韩午夜电影av| 久久影院视频免费| 国产蜜臀97一区二区三区| 国产精品久久久久久久久晋中| 国产精品国产精品国产专区不片| 中文字幕在线不卡国产视频| 综合婷婷亚洲小说| 亚洲午夜久久久久中文字幕久| 日韩影院免费视频| 国产麻豆午夜三级精品| gogo大胆日本视频一区| 在线视频综合导航| 欧美一区二区久久| 国产视频视频一区| 亚洲乱码国产乱码精品精小说| 亚洲午夜日本在线观看| 久久成人精品无人区| 国产成人综合视频| 欧美少妇一区二区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 玉足女爽爽91| 日本成人在线网站| 波多野结衣在线一区| 欧美亚洲图片小说| 精品成人在线观看| 亚洲色图都市小说| 日本欧美一区二区在线观看| 国产精品原创巨作av| 色哦色哦哦色天天综合| 欧美一区二区福利视频| 欧美激情在线观看视频免费| 亚洲资源在线观看| 国产精品888| 欧美精品少妇一区二区三区| 久久久久久免费网| 亚洲h精品动漫在线观看| 大胆亚洲人体视频| 欧美一区二区三级| 一区二区不卡在线播放 | 日韩av一二三| 白白色 亚洲乱淫| 日韩区在线观看| 亚洲精选一二三| 国产精品白丝av| 欧美一二三四在线| 亚洲综合区在线| www.亚洲色图.com| 精品久久99ma| 视频一区二区国产| 色菇凉天天综合网| 国产精品视频一区二区三区不卡| 视频一区视频二区中文| 色婷婷久久综合| 国产亚洲欧美色| 国内外精品视频| 日韩一区二区三区视频在线| 亚洲综合在线视频| eeuss影院一区二区三区| 精品1区2区在线观看| 日本不卡123| 欧美男女性生活在线直播观看| 日韩码欧中文字| 岛国av在线一区| 欧美激情中文不卡| 国产馆精品极品| 久久久精品免费网站| 经典三级一区二区| xnxx国产精品| 精品在线亚洲视频| 精品美女一区二区| 久久精品噜噜噜成人88aⅴ| 欧美日本一区二区| 午夜精品久久久久久久久久久 | 91免费视频网址| 中文字幕综合网| 日本福利一区二区| 亚洲日本韩国一区| 欧美亚洲动漫另类| 视频精品一区二区| 欧美成人video| 国模一区二区三区白浆|