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

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

?? cmpp.c

?? cmpp 發(fā)送接收短信息程序!是在linux下c 實(shí)現(xiàn)的。
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):

/*******************************************************
    NAME:      cmpp.c
    PURPOSE:   China Mobile Peer to Peer Protocol 2.0
               Permanent connection implementation to 
               submit data to Internet Short Message Gateway
               or deliver data from ISMG to upper layer.
               routine implementation.
    VERSION:   0.0.1
    AUTHOR:    Ke Heng Zhong
    DATE:      2002/06/17 12:52
    MODIFIED:  2000/06/17 21:12
 ********************************************************/

#include "kevopsall.ext"
#include "cmpp.h"
#include "cmppif.h"

VTASK * gEntity = NULL;


CRITICAL_SECTION seqidCS = PTHREAD_MUTEX_INITIALIZER;

uint32 cmpp_alloc_sequence_id ()
{
    static uint32 gseqid = 0, tempid;

    EnterCriticalSection(&seqidCS);
    tempid = gseqid++;
    LeaveCriticalSection(&seqidCS);

    return tempid;
}



/* CMPP permanent TCP connection instance initialized */
void cmppcon_init (VTASK * vtask)
{
    CmppCon * ccon = NULL;
    SPCMPP  * spc = NULL;
    int i;

    spc = (SPCMPP *)vtask->cvopsState->ref;

    vtask->state = cmpp_null;

    ccon = (CmppCon *)vtask->var;
    ccon->local_ip.s_addr = 0;
    ccon->local_port      = 0;
    ccon->fd              = -1;
    ccon->devid           = -1;

    ccon->concreated      = 0;
    ccon->conpdu          = NULL;
    ccon->retrynum        = 0;

    ccon->rcvbuf          = NULL;

    ccon->is_mo           = 0;

    ccon->sliding_len = spc->slidingwin;

    /*ccon->sliding_len = getConfInt("Flow Control", "Sliding Window");*/
    if (ccon->sliding_len > MAX_SLIDING_WIN || ccon->sliding_len <= 0)
        ccon->sliding_len = MAX_SLIDING_WIN;

    for (i=0; i<ccon->sliding_len; i++) {
        ccon->subpdu[i].status      = SUBMIT_AVAIL;
        ccon->subpdu[i].retrynum    = 0;
        ccon->subpdu[i].submit      = NULL;
        emptyFrame(ccon->subpdu[i].submitframe);
    }
    ccon->availwin = ccon->sliding_len;

    /* deliver message handling */
    ccon->deliverresp = NULL;
    if (ccon->drespdu)
        emptyFrame(ccon->drespdu);

    /* active test message */
    if (ccon->actpdu)
        emptyFrame(ccon->actpdu);
    if (ccon->actrespdu)
        emptyFrame(ccon->actrespdu);
    ccon->acttest = NULL;
    ccon->actretry = 0;

    /*ccon->version = (((uint8)getConfInt ("General", "Major_Version")) << 4) & 0xF0;;
    ccon->version |= ((uint8)getConfInt("General","Minor_Version") & 0x0F);*/

    strncpy(ccon->sp_id, spc->spid, sizeof(ccon->sp_id));
    strncpy(ccon->sharedsecret, spc->secret, sizeof(ccon->sharedsecret));

    /*strncpy(ccon->sp_id, getConfString("General","SP_Id"), 
              sizeof(ccon->sp_id));
    strncpy(ccon->sharedsecret, getConfString("General", "SharedSecret"),
                sizeof(ccon->sharedsecret));*/
}



/* CMPP permanent TCP connection instance destructed */
void cmppcon_destruct (VTASK * vtask)
{
    CmppCon * ccon = NULL;
    SubmitPending  * item = NULL;
    CmppEntity * cent = NULL;
    int i, unsuccnum = 0;

    cent = (CmppEntity *)((VTASK *)getEntity(vtask))->var;

    ccon = (CmppCon *)vtask->var;
    if (ccon->devid != -1) {
        removeDevice(vtask->cvopsState, ccon->devid);
        ccon->devid = -1;
    }
    if (ccon->fd != -1) {
        close(ccon->fd);
        ccon->fd = -1;
    }

    ccon->concreated      = 0;
    deleteFrame(&ccon->conpdu);
    ccon->retrynum        = 0;

    /* used for data_recv buffer */
    deleteFrame(&ccon->rcvbuf);

    /* deliver message */
    cmpdu_free(ccon->deliverresp);
    deleteFrame(&ccon->drespdu);

    /* active test message */
    deleteFrame(&ccon->actpdu);
    deleteFrame(&ccon->actrespdu);
    cmpdu_free(ccon->acttest);
    ccon->actretry = 0;

    for (i=0, unsuccnum=0; i<ccon->sliding_len; i++) {
        item = &ccon->subpdu[i];

        if (item->status == SUBMIT_AVAIL)
            continue;

        item->status = SUBMIT_AVAIL;

        store_unsucc_submit (vtask, item->submit);
        item->submit = NULL;
        emptyFrame(item->submitframe);
        deleteFrame(&item->submitframe);
        stopDynTimer(item->submtimer);

        unsuccnum += 1;
    }

    cent->consumedwin -= unsuccnum;

    if (sk_delete_ptr (cent->init_list, vtask)) {
        cent->total_avail -= ccon->sliding_len;
    } else
        sk_delete_ptr (cent->mo_list, vtask);

    /* only when the CMPP connection exists, the distribute 
     * procedure hook is started. this will reduce the risk
     * of frequent calling hook and finite loop to calm down
     * system overhead. */
    if (unsuccnum > 0 && sk_num(cent->init_list) > 0)
        startHook(cent->hDistribute);

    stopTimer(vtask, t_acttest);
}


/* CMPP permanent TCP connection entity instance initialized */
void cmppent_init (VTASK * vtask)
{
    CmppEntity * cent = NULL;
    SPCMPP * spc = NULL;

    gEntity = vtask;

    cent = (CmppEntity *)vtask->var;
    spc = (SPCMPP *)vtask->cvopsState->ref;

    strncpy(cent->remote_host, spc->ismgaddr, sizeof(cent->remote_host));
    cent->remote_port = (uint16)spc->ismgport;

    /*strncpy(cent->remote_host, getConfString("ISMG", "host"), 
             sizeof(cent->remote_host));
    cent->remote_port = (uint16)getConfInt("ISMG", "port");*/

    cent->mt_num = spc->mtnum;
    cent->mo_num = spc->monum;

    cent->mo_num = getConfInt("CMPP Connection", "MOConnection Num");*/

    cent->cmpp_con_num = cent->mt_num + cent->mo_num;

    cent->init_list = sk_new (NULL);
    cent->mo_list = sk_new (NULL);

    cent->sliding_len = spc->slidingwin;

    /*cent->sliding_len = getConfInt("Flow Control", "Sliding Window");*/
    if (cent->sliding_len > MAX_SLIDING_WIN || cent->sliding_len <= 0)
        cent->sliding_len = MAX_SLIDING_WIN;

    /*cent->max_cmpp_con = getConfInt("Flow Control", "Max CMPP Connection");
    if (cent->max_cmpp_con > MAX_CMPP_CON || cent->max_cmpp_con <= 0)
        cent->max_cmpp_con = MAX_CMPP_CON;*//*commented on 2002-07-20*/

    /* used for data sharing with upper layer */
    /*sem_init (&cent->sem_submit, 0, 0);    */
    /*sem_init (&cent->sem_submitresp, 0, 0);*/
    /*sem_init (&cent->sem_deliver, 0, 0);   */


    cent->total_avail = 0;
    cent->consumedwin = 0;

    cent->hAvailEvent   = CreateEvent();
    cent->hRespEvent    = CreateEvent();
    cent->hDeliverEvent = CreateEvent();

    InitializeCriticalSection (&cent->submitCS);
    InitializeCriticalSection (&cent->respCS);
    InitializeCriticalSection (&cent->deliverCS);
    InitializeCriticalSection (&cent->recycleCS);
    InitializeCriticalSection (&cent->recyclerespCS);
    InitializeCriticalSection (&cent->recycledeliverCS);

    cent->submits = lt_new (NULL);
    cent->unsucc_submits = lt_new (NULL);
    cent->submitresps = lt_new (NULL);
    cent->recycle_submits = lt_new (NULL);
    cent->recycle_submitresps = lt_new (NULL);
    cent->recycle_delivers = lt_new (NULL);


    cent->delivers = lt_new (NULL);

    cent->hBuildConn = createHook (vtask, cmpp_build_conn);
    cent->hDistribute = createHook (vtask, distribute_submit);

    startTimer (vtask, t_build, TBUILD);

    return;
}

/* CMPP permanent TCP connection entity instance destructed */
void cmppent_destruct (VTASK * vtask)
{
    CmppEntity * cent = NULL;
    int i, num;
    CmppPdu * pdu = NULL;

    cent = (CmppEntity *)vtask->var;

    sk_free (cent->init_list);
    sk_free (cent->mo_list);

    cent->total_avail = 0;
    cent->consumedwin = 0;

    DeleteCriticalSection (&cent->submitCS);
    DeleteCriticalSection (&cent->respCS);
    DeleteCriticalSection (&cent->deliverCS);
    DeleteCriticalSection (&cent->recycleCS);
    DeleteCriticalSection (&cent->recyclerespCS);
    DeleteCriticalSection (&cent->recycledeliverCS);

    /*sem_destroy (&cent->sem_submit);*/
    /*sem_destroy (&cent->sem_submitresp);*/
    /*sem_destroy (&cent->sem_deliver);*/

    num = lt_num(cent->submits);
    for (i=0; i<num; i++) {
        pdu = lt_rm_head(cent->submits);
        cmpdu_free(pdu);
    }
    lt_free (cent->submits);

    num = lt_num(cent->unsucc_submits);
    for (i=0; i<num; i++) {
        pdu = lt_rm_head(cent->unsucc_submits);
        cmpdu_free(pdu);
    }
    lt_free (cent->unsucc_submits);

    num = lt_num(cent->recycle_submits);
    for (i=0; i<num; i++) {
        pdu = lt_rm_head(cent->recycle_submits);
        cmpdu_free(pdu);
    }
    lt_free (cent->recycle_submits);

    num = lt_num(cent->submitresps);
    for (i=0; i<num; i++) {
        pdu = lt_rm_head(cent->submitresps);
        cmpdu_free(pdu);
    }
    lt_free (cent->submitresps);


    num = lt_num(cent->delivers);
    for (i=0; i<num; i++) {
        pdu = lt_rm_head(cent->delivers);
        cmpdu_free(pdu);
    }
    lt_free (cent->delivers);

    num = lt_num(cent->recycle_submitresps);
    for (i=0; i<num; i++) {
        pdu = lt_rm_head(cent->recycle_submitresps);
        cmpdu_free(pdu);
    }
    lt_free (cent->recycle_submitresps);

    num = lt_num(cent->recycle_delivers);
    for (i=0; i<num; i++) {
        pdu = lt_rm_head(cent->recycle_delivers);
        cmpdu_free(pdu);
    }
    lt_free (cent->recycle_delivers);

    destroyHook (cent->hBuildConn);

    SetEvent(cent->hAvailEvent, -10);
    SetEvent(cent->hRespEvent, -10);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
老鸭窝一区二区久久精品| 青草av.久久免费一区| 免费在线观看成人| 中文字幕一区二区不卡 | 欧美大尺度电影在线| 国产**成人网毛片九色| 午夜影院久久久| 国产精品久久精品日日| 日韩视频一区在线观看| 欧洲人成人精品| 国v精品久久久网| 久久99久久久久久久久久久| 一区二区三区不卡在线观看 | voyeur盗摄精品| 强制捆绑调教一区二区| 亚洲一区二区五区| 国产精品无人区| 欧美精品一区二区三区很污很色的| 91一区二区在线观看| 国产大陆亚洲精品国产| 日本午夜精品一区二区三区电影 | 亚洲一区二区av在线| 六月婷婷色综合| 亚洲一区二区在线免费观看视频| 国产精品久久久久毛片软件| 久久久青草青青国产亚洲免观| 91精品国产综合久久福利| 色狠狠桃花综合| 91麻豆高清视频| av资源网一区| 不卡高清视频专区| 丁香婷婷深情五月亚洲| 国产精品一区二区免费不卡| 麻豆精品一区二区| 免费三级欧美电影| 欧美a一区二区| 三级在线观看一区二区| 日韩av一二三| 日韩成人免费电影| 日韩不卡在线观看日韩不卡视频| 亚洲成va人在线观看| 亚洲午夜久久久久| 亚洲成人综合网站| 五月天丁香久久| 日本亚洲天堂网| 久久精品国产精品亚洲红杏| 久久av中文字幕片| 国产在线精品免费| 成人小视频免费在线观看| 懂色av一区二区三区蜜臀| 成人在线综合网站| caoporn国产精品| 91黄视频在线| 欧美日韩精品久久久| 91精品国产免费| 久久综合狠狠综合久久激情| 国产三级欧美三级| 亚洲视频中文字幕| 亚洲精品免费在线| 三级精品在线观看| 韩国av一区二区三区四区| 国产一区二区三区免费观看| 国产成人在线观看免费网站| 99久久99久久免费精品蜜臀| 在线观看三级视频欧美| 日韩一区二区三区视频| 亚洲激情一二三区| 日韩欧美国产精品| 国产日本一区二区| 亚洲精品成人天堂一二三| 五月婷婷久久丁香| 亚洲欧洲美洲综合色网| 一卡二卡三卡日韩欧美| 欧美在线999| 91精品国产免费久久综合| 亚洲国产精华液网站w| 亚洲一区在线观看视频| 蜜臀99久久精品久久久久久软件| 国产精品18久久久久久久久 | 丝袜美腿亚洲色图| 国产精品一级片在线观看| 日本道在线观看一区二区| 欧美一区二区在线不卡| 国产精品视频一二三| 亚洲v日本v欧美v久久精品| 精品一区二区在线播放| 色哟哟精品一区| 精品人在线二区三区| 亚洲欧美激情视频在线观看一区二区三区| 日日夜夜精品视频免费| 成人亚洲一区二区一| 欧美精品 国产精品| 国产精品妹子av| 免费在线看成人av| 91色九色蝌蚪| 国产亚洲一区二区三区在线观看| 一区二区三区久久久| 国产一区二区三区免费| 欧美日本国产视频| 国产精品国产自产拍高清av | 91麻豆精品国产91久久久资源速度| 国产亚洲一区二区在线观看| 亚洲一区二区三区三| 国产精品一区二区你懂的| 欧美精品黑人性xxxx| 亚洲欧美日韩久久精品| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩在线三级| 亚洲人快播电影网| 国产成人小视频| 日韩视频一区二区在线观看| 樱花草国产18久久久久| 丰满白嫩尤物一区二区| xvideos.蜜桃一区二区| 日韩极品在线观看| 欧美视频在线一区二区三区 | 亚洲国产精品传媒在线观看| 秋霞影院一区二区| 欧美亚洲一区二区在线观看| 国产精品成人免费| 成人免费视频一区| 久久综合久久鬼色| 久久66热偷产精品| 日韩欧美国产一区二区在线播放| 亚洲图片欧美一区| 在线免费观看日本一区| 亚洲三级在线免费| 99久久er热在这里只有精品15 | 亚洲精品中文在线观看| 成人爱爱电影网址| 国产精品女主播av| 成人一区在线看| 国产精品网站导航| 国产激情偷乱视频一区二区三区| 久久中文字幕电影| 国产一区二区免费在线| 久久久久久久免费视频了| 国产伦精品一区二区三区免费迷| 精品国产乱码久久久久久图片| 伦理电影国产精品| 久久先锋影音av鲁色资源| 久久99精品久久久久久| 26uuu欧美| 成人黄色综合网站| 综合av第一页| 欧美综合亚洲图片综合区| 亚洲午夜电影网| 91精品国产麻豆| 韩日欧美一区二区三区| 久久伊99综合婷婷久久伊| 国产盗摄精品一区二区三区在线| 中文字幕成人网| 91理论电影在线观看| 亚洲国产综合视频在线观看| 91.xcao| 裸体歌舞表演一区二区| 久久久久国色av免费看影院| 高潮精品一区videoshd| 亚洲欧美另类图片小说| 欧美日韩国产首页| 久久se这里有精品| 蜜桃久久精品一区二区| 久久久久久电影| 色婷婷一区二区| 日本不卡免费在线视频| 国产亚洲欧美一级| 91麻豆.com| 久久国产精品第一页| 中文av一区特黄| 欧美久久一二区| 狠狠色丁香婷综合久久| 综合激情网...| 91精品国产一区二区三区香蕉| 国产成人综合亚洲网站| 一区二区成人在线视频 | 精品国产污网站| 99视频精品免费视频| 视频一区二区欧美| 国产日韩欧美精品综合| 欧日韩精品视频| 国产成人av一区二区| 亚洲成人动漫一区| 欧美国产一区二区| 欧美高清激情brazzers| 成人高清视频免费观看| 午夜精品视频一区| 中文字幕精品综合| 日韩一级黄色大片| 91亚洲精品久久久蜜桃| 美美哒免费高清在线观看视频一区二区 | 在线视频你懂得一区| 狠狠色伊人亚洲综合成人| 亚洲小说春色综合另类电影| 久久久久久免费网| 91精品中文字幕一区二区三区| 不卡的电影网站| 国产在线日韩欧美| 日韩影院免费视频| 亚洲麻豆国产自偷在线| 久久久不卡网国产精品二区|