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

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

?? cmpp.c

?? cmpp 發送接收短信息程序!是在linux下c 實現的。
?? C
?? 第 1 頁 / 共 3 頁
字號:
    SetEvent(cent->hDeliverEvent, -10);

    sleep(2);

    DestroyEvent(cent->hAvailEvent);
    DestroyEvent(cent->hRespEvent);
    DestroyEvent(cent->hDeliverEvent);

    return;
}


void cmpp_type_init (VTASK * type)
{
    CmppEntity * cent = NULL;

    cent = (CmppEntity *)type->var;

    setSize           (type, sizeof(CmppCon));
    setEntitySize     (type, sizeof(CmppEntity));

    setConnCount      (type, MAX_PCON);
    setConnInit       (type, cmppcon_init);
    setConnDestruct   (type, cmppcon_destruct);
    setEntityInit     (type, cmppent_init);
    setEntityDestruct (type, cmppent_destruct);
    setBody           (type, cmpp_schedule);

    setIdleState      (type, cmpp_null);
    setServiceState   (type, cmpp_ready);

    return;
}




void cmpp_schedule (MESSAGE * msg)
{
    char         selector = 0;
    ITEM_TYPE    item     = 0;
    VTASK      * vtask    = NULL;
    VTASK      * entity   = NULL;
    CmppEntity * cmcent   = NULL;
    CmppCon    * cmcon    = NULL;
    CmppBlock  * block    = NULL;
    int          num      = 0;
    SubmitPending * subitem = NULL;

    if (!msg || !msg->dest)
        return;

    selector = msg->primitive.selector;
    item     = msg->primitive.item;
    entity   = msg->dest;
    cmcent   = (CmppEntity *)entity->var;

    if (selector == UP) {
        block  = (CmppBlock *)msg->parameters;
    } else if (selector == TIMEOUT) {
        vtask = entity;
        cmcon = (CmppCon *) vtask->var;

        entity = (VTASK *)getEntity(vtask);
        cmcent = (CmppEntity *)entity->var;
    } else {
        warning("cmpp_schedule: unknown interface %d.\n", selector);
        return;
    }

    switch (selector) {
    case UP:
        if (item == cmpp_terminate_req) {
            num = sk_num(cmcent->init_list) + sk_num(cmcent->mo_list);
            if (block->conid >= num) {
                error("cmpp_terminate_req follows incorrect "
                       "connection index %d.\n", block->conid);
                deleteFrame(&block->data);
                break;
            }
            if (block->conid < sk_num(cmcent->init_list))
                vtask = sk_value(cmcent->init_list, block->conid);
            else
                vtask = sk_value(cmcent->mo_list, 
                              block->conid - sk_num(cmcent->init_list));
            if (!vtask) {
                warning("cmpp_shedule: cmpp_terminate_req invalid, no vtask found.\n");
                return;
            }
            cmcon = (CmppCon *)vtask->var;

        } else if (item == cmpp_submit_req) {
            startHook(cmcent->hDistribute);

            /**distribute_submit(entity);*/     

            deleteFrame(&block->data);
            return;

        } else {
            error("**unsupported primitive %d from upper layer.\n", item);
            deleteFrame(&block->data);
            return;
        }
        break;

    case TIMEOUT:

        /* Connect message sent, but not got ConnectResponse.
         * while waiting for ConnectResponse, timeout event occurs */

        if (item == t_retry) 
            msg->primitive.item = TimerTO_Retry;


        /* after TACTTEST, timeout event occurs. this will invoke
         * system send ActiveTest message to verify ISMG state. */

        else if (item == t_acttest) {
            msg->primitive.item = TimerTO_ActTest;
            issue_active_test (vtask);
            startTimer(vtask, t_acttest, TACTTEST);
            return;
        }

        /* ActiveTest message sent, but not got ActiveTestResp.
         * while waiting for ActiveTestResp, timeout event occurs */

        else if (item == t_reactive) {
            if (cmcon->actretry <= MAXRETRY) {
                if (sendTcpCon (cmcon->fd, cmcon->actpdu) < 0) {
                    error("ActiveTest retransmit timeout: CMPP connection %s"
                          " to ISMG %s:%d crashed while reading length.\n",
                          vtask->name, cmcent->remote_host,
                          cmcent->remote_port);
                    vtask->state = cmpp_null;
                    checkIdleConnection(vtask);

                    startTimer(entity, t_build, TBUILD);
                    return;
                }
                cmcon->actretry++;
                startTimer(vtask, t_reactive, TREACTIVE);
                startTimer(vtask, t_acttest, TACTTEST);
                return;
            } else {
                error("ActiveTest retransmit %d times via CMPP connection %s"
                      " to, ISMG %s:%d, now give up re-submit.\n",
                       cmcon->actretry, vtask->name,
                       cmcent->remote_host, cmcent->remote_port);
                cmcon->actretry = 0;
                vtask->state = cmpp_null;
                checkIdleConnection(vtask);
                
                startTimer(entity, t_build, TBUILD);
                
                return;
            }
        }

  
        /* automatically restart CMPP connection through t_build TIMER and
         * ConnectionBuild hook. when t_build timeout, conection_build hook
         * will be started. the hook is responsible for creating TCP con. */

        else if (item == t_build) {
            if (sk_num(cmcent->init_list) < cmcent->mt_num ||
                sk_num(cmcent->mo_list) < cmcent->mo_num)  
            {
                startHook(cmcent->hBuildConn);
            }


        /* Submit message has been sent, no SubmitResponse message got so far.
         * Each Submit message has its dynamic Timer to prepare for 
         * retransmitting the Submit message. */

        } else if (item == t_resubmit) {
            subitem = (SubmitPending *) getTimeoutUserInfo(msg);
            if (!subitem)
                break;
            if (subitem->submtimer != getTimeoutInst(msg))
                break;
            
            if (subitem->retrynum <= MAXRETRY) {
                if (sendTcpCon (cmcon->fd, subitem->submitframe) < 0) {
                    error("Submit retransmit timeout: CMPP connection %s to "
                          "ISMG %s:%d crashed while reading length.\n",
                          vtask->name, cmcent->remote_host, 
                          cmcent->remote_port);
                    vtask->state = cmpp_null;
                    checkIdleConnection(vtask);

                    startTimer(entity, t_build, TBUILD);
                    return;
                }
                subitem->status = SUBMIT_REWAITRESP;
                subitem->retrynum++;
                subitem->submtimer = startDynTimer (vtask, t_resubmit, 
                                             TRESUBMIT, subitem);
                return;
            } else {
                error("Submit retransmit %d times via CMPP connection %s to "
                      "ISMG %s:%d, now give up re-submit.\n",
                       subitem->retrynum - 1, vtask->name,
                       cmcent->remote_host, cmcent->remote_port);
                subitem->status = SUBMIT_AVAIL;
                subitem->retrynum = 0;
                store_unsucc_submit(vtask, subitem->submit);
                emptyFrame(subitem->submitframe);
                subitem->submtimer = NULL;

                startHook(cmcent->hDistribute);

                return;
            }
        }
        break;
    }

    if (!vtask) {
        error("**no virtual task for the primitive %d.\n", item);
        return;
    }

    cmcon = (CmppCon *)vtask->var;

    switch (vtask->state) {
    case cmpp_null:
        break;

    case cmpp_handshaking:
        switch (item) {
        case TimerTO_Retry:
            if (cmcon->retrynum < MAXRETRY && send_cmpp_connect(vtask) >= 0) {
                    vtask->state = cmpp_handshaking;
            } else {            
                if (cmcon->retrynum > MAXRETRY)
                    error("Connect Response waiting timeout: after %d times "
                          "retrying to sending CONNECT, "
                          "system decides to terminate this CMPP "
                          "connection.\n", MAXRETRY);
                else
                    error("Connect Response waiting timeout: TCP connection"
                          " crashed while sending CMPP Connect.\n");

                vtask->state = cmpp_null;
                checkIdleConnection(vtask);

                startTimer(entity, t_build, TBUILD);
            }            
            break;
        }
        break;

    case cmpp_ready:
        break;
    }

    checkIdleConnection(vtask);

    if (selector == UP) {
        deleteFrame(&block->data);
    }
}


/*
struct tm
{
   int     tm_sec;    // seconds
   int     tm_min;    // minutes
   int     tm_hour;   // hours 
   int     tm_mday;   // day of the month 
   int     tm_mon;    // month 
   int     tm_year;   // year 
   int     tm_wday;   // day of the week
   int     tm_yday;   // day in the year
   int     tm_isdst;  // daylight saving time
};
*/

int create_cmpp_connect (VTASK * vtask)
{
    CmppCon   * cmcon = NULL;
    FRAME_PTR   frame = NULL;
    uint8       strtime [11];
    struct tm * curtime;
    time_t      calendt;
    uint32      netord = 0;

    if (!vtask) return -1;

    cmcon = (CmppCon *)vtask->var;
    if (cmcon->concreated) return 0;

    time(&calendt);
    curtime = localtime(&calendt);

    cmcon->timestamp = (curtime->tm_mon+1)  * 100000000 +
                       curtime->tm_mday     * 1000000   +
                       curtime->tm_hour     * 10000     +
                       curtime->tm_min      * 100       +
                       curtime->tm_sec      * 1         ;
    sprintf(strtime, "%010ld", cmcon->timestamp);

    //putnLastBytes (&frame, cmcon->sp_id, sizeof(cmcon->sp_id));
    putnLastBytes (&frame, cmcon->sp_id, strlen(cmcon->sp_id));
    appendnBytes  (&frame, '\0', 9);
    putnLastBytes (&frame, cmcon->sharedsecret, strlen(cmcon->sharedsecret));
    putnLastBytes (&frame, strtime, 10);

    Md5Val (bytePointer(frame), frameLength(frame), cmcon->authsrc);

    emptyFrame (frame);

    /* filling the header of connect */
    putnLastBytes (&frame, (uint8 *)&netord, 4);
    netord = CMPP_CONNECT;
    netord = htonl(netord);
    putnLastBytes (&frame, (uint8 *)&netord, 4);
    netord = CMPPGetSeqID();
    netord = htonl(netord);
    putnLastBytes (&frame, (uint8 *)&netord, 4);
    
    /* filling the content of connect */
    putnLastBytes (&frame, cmcon->sp_id, sizeof(cmcon->sp_id));
    putnLastBytes (&frame, cmcon->authsrc, 16);
    putLastByte   (&frame, cmcon->version);
    netord = htonl(cmcon->timestamp);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产精品不卡| 99在线视频精品| 欧美久久免费观看| 亚洲一二三四在线观看| 欧美年轻男男videosbes| 青青草一区二区三区| 欧美变态口味重另类| 国产成人免费视| **欧美大码日韩| 欧美无砖砖区免费| 免费视频一区二区| 久久久亚洲综合| 91女厕偷拍女厕偷拍高清| 亚洲午夜视频在线| 精品国内二区三区| 26uuu另类欧美| 日韩欧美美女一区二区三区| 亚洲国产日韩综合久久精品| 在线电影院国产精品| 狠狠色狠狠色综合系列| 欧美高清一级片在线观看| 在线观看av一区二区| 久久机这里只有精品| 国产午夜亚洲精品羞羞网站| 成人av片在线观看| 日日夜夜免费精品视频| 久久九九影视网| 欧美日韩一区二区在线观看视频 | 日产国产欧美视频一区精品| 久久亚洲二区三区| 99综合电影在线视频| 日韩av一级电影| 日韩欧美一级在线播放| 国产美女娇喘av呻吟久久| 亚洲男同1069视频| 欧美xingq一区二区| 99视频在线精品| 青青草国产精品亚洲专区无| 最新国产成人在线观看| 日韩一级大片在线| 一本久道中文字幕精品亚洲嫩| 蓝色福利精品导航| 一区二区日韩av| 欧美激情综合五月色丁香| 欧美高清精品3d| 91在线播放网址| 国产一区二区女| 人禽交欧美网站| 亚洲综合视频在线观看| 国产精品女上位| 精品人在线二区三区| 欧美日韩国产综合一区二区三区| 成人av资源站| 国产精品一区二区在线播放 | 国产日韩精品一区二区三区| 欧美精品久久久久久久多人混战 | aa级大片欧美| 国产精品系列在线播放| 日韩福利电影在线| 亚洲午夜久久久| 亚洲精品少妇30p| 99久久er热在这里只有精品15| 日本午夜精品视频在线观看 | 色综合久久天天| 国产高清不卡二三区| 精品一区二区三区免费视频| 天堂va蜜桃一区二区三区漫画版| 亚洲综合色婷婷| 亚洲在线视频网站| 一片黄亚洲嫩模| 亚洲黄色性网站| 一区二区三区在线视频播放| 亚洲视频在线一区二区| 亚洲欧美激情在线| 亚洲欧美日韩一区| 夜夜嗨av一区二区三区四季av| 中文字幕在线观看一区| 亚洲欧洲国产日本综合| 中文字幕一区二区三区av| 国产精品久久三| 亚洲婷婷在线视频| 玉足女爽爽91| 亚洲午夜久久久久久久久久久 | 午夜影院在线观看欧美| 亚洲精品成人悠悠色影视| 亚洲婷婷在线视频| 亚洲主播在线播放| 亚洲123区在线观看| 天堂av在线一区| 蓝色福利精品导航| 国产成人av电影在线播放| 成人网男人的天堂| 91天堂素人约啪| 欧美视频三区在线播放| 91精品免费在线| 久久亚区不卡日本| 国产精品视频九色porn| 亚洲久本草在线中文字幕| 午夜精品一区二区三区电影天堂| 日韩精品亚洲专区| 国产精品综合一区二区三区| 成人av网址在线| 欧美猛男gaygay网站| 日韩欧美精品在线| 国产精品区一区二区三区| 一区二区三区在线观看欧美| 美女在线视频一区| 国产91精品入口| 一区二区三区**美女毛片| 欧美影院午夜播放| 欧美日韩高清在线| 欧美一级xxx| 日本一区二区免费在线观看视频| 亚洲欧美电影一区二区| 日欧美一区二区| 国产精品亚洲视频| 在线视频观看一区| 久久久噜噜噜久噜久久综合| 亚洲天堂av一区| 久久疯狂做爰流白浆xx| 成人h动漫精品| 日韩欧美黄色影院| 亚洲女爱视频在线| 久久91精品国产91久久小草| 在线视频国内一区二区| 国产无遮挡一区二区三区毛片日本 | 亚洲欧洲日韩综合一区二区| 午夜影院久久久| 久久99精品国产91久久来源| 91麻豆.com| 国产亚洲精品资源在线26u| 亚洲一区二区三区视频在线播放| 国精产品一区一区三区mba桃花| 欧美性受xxxx| 国产精品网友自拍| 裸体一区二区三区| 欧美三级电影在线观看| 亚洲欧洲日韩在线| 国产精品一区二区视频| 欧美视频一区二区三区| 中文字幕中文字幕一区二区| 激情五月婷婷综合网| 91麻豆精品国产91久久久久久久久 | 成人av网在线| 久久久久久久一区| 免费成人美女在线观看| 欧美日韩激情一区| 一区二区三区欧美在线观看| 国产成人高清视频| 久久一留热品黄| 蜜臀av一区二区在线免费观看| 欧美色中文字幕| 一区二区三区四区亚洲| 色综合中文字幕国产 | 久久综合久久99| 青青草国产成人99久久| 欧美乱妇20p| 午夜精品久久久久影视| 欧美撒尿777hd撒尿| 一级做a爱片久久| 欧美亚洲丝袜传媒另类| 亚洲一区国产视频| 欧美亚洲自拍偷拍| 亚洲精品国产精华液| 色乱码一区二区三区88| 亚洲黄色av一区| 色久综合一二码| 亚洲自拍另类综合| 色综合久久久久| 亚洲午夜影视影院在线观看| 欧美性色综合网| 天天做天天摸天天爽国产一区| 欧美猛男超大videosgay| 日日骚欧美日韩| 精品日韩欧美一区二区| 国产一区二区美女诱惑| 国产色综合一区| www.色综合.com| 亚洲影视在线播放| 欧美日韩成人综合天天影院| 日韩和欧美一区二区三区| 欧美一区二区三区思思人| 久久99久久精品| 国产精品毛片无遮挡高清| 99久久国产综合精品女不卡| 一区二区三区影院| 777xxx欧美| 国产一区二区在线视频| 亚洲欧洲日韩av| 欧美日韩免费观看一区三区| 蜜臀精品一区二区三区在线观看 | 美国十次了思思久久精品导航| 精品久久久久久亚洲综合网 | 亚洲免费观看在线观看| 欧美色手机在线观看| 国内成人自拍视频| 日韩一区欧美一区| 4438亚洲最大| 成人深夜视频在线观看| 亚洲国产日产av|