• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 74, 文章 - 0, 評(píng)論 - 26, 引用 - 0
            數(shù)據(jù)加載中……

            system V消息機(jī)制

            #ifndef MSG_H
            #define MSG_H
            //msgid
            #define LISTEN_THREAD??7
            #define CENTER_THREAD??0
            #define SEND_THREAD???2
            #define REV_THREAD???3
            #define TIME_THREAD???4
            //lp
            #define EXIT????0
            #define SEND_SGIP_SUBMIT?1
            #define SEND_SGIP_BIND
            #define SEND_SGIP_R
            #define SEND_SGIP_UNBIND
            #define SEND_SGIP_UNBIND_R
            #define REV_SGIP_SOCKET
            //wp
            #define SEND_SUCCESS
            #define PACK_FAIL
            #define SEND_FAIL
            enum mgnt_cmd_type
            {
            ?event_login???????? = 0,
            ??event_logout,
            ??event_sip_init_para,
            ??event_log_init_para,
            ??event_sip_clean,
            ??event_set_dtmf_mode,
            ??event_set_dhcp,
            ??event_set_pppoe,
            ??
            ??event_pstn_call_out,
            ??event_sip_call_out,
            ??event_answer_sipcall,
            ??event_release_sipcall,
            ??event_loadBMP_init,
            ??
            ??
            ??event_pstn_call_in=20,
            ??event_sip_call_in,
            ??event_remote_release_call,
            ??event_remote_establish_call,
            ??event_remote_cancelcall,
            ??event_login_return,
            ??event_remote_ignore,

            ??event_set_pstn_ring,
            ??event_set_sip_ring,
            ??event_set_alarm_ring,
            ??event_set_ring_volume
            ??
            };

            typedef struct msgbuf
            {
            ?long???msgtype;
            ?unsigned long?msgid;
            ?unsigned long?lp;
            ?unsigned long?wp;
            }MSGBuf, *pMSGBuf;


            int vvMSGSend(long thread_id, unsigned long msgid, unsigned long lp, unsigned long wp);
            int vvMSGRecv(long thread_id, struct msgbuf *msg, int is_wait);


            #ifndef _WINDOWS

            #include <sys/types.h>
            #include <sys/ipc.h>
            #include <sys/msg.h>
            #include <unistd.h>

            #define?MSG_FILE_NAME??? "/rw/"????? //"/mnt/"
            #define MSG_FLAG???(IPC_CREAT? | 00666)
            //| IPC_EXCL
            ?


            typedef struct sendMsg
            {
            ?int sd;
            ?void *content;
            }SendMsg, *pSendMsg;


            #endif

            #endif //MSG_H





            #include "vvmsg.h"
            #include <ps_log.h>

            #ifndef _WINDOWS
            #include <phone_Interface.h>
            #include <pthread.h>
            #include <basegdi.h>
            #include <keyboard.h>
            //#include "hash.h"
            extern? pthread_t g_incomingthread;
            //extern? hash_table table;
            #endif

            ?

            int vvMSGSend(long thread_id, unsigned long msgid, unsigned long lp, unsigned long wp)
            {?
            ?struct msgbuf bmsg;
            #ifndef _WINDOWS
            ?key_t key;

            ?int msg_id;
            ?bmsg.msgtype = thread_id;
            ?bmsg.msgid = msgid;
            ?bmsg.lp = lp;
            ?bmsg.wp = wp;

            ?if((key = ftok(MSG_FILE_NAME,'a')) == -1)
            ?{
            ??return -1;
            ?}

            ?if((msg_id = msgget(key,MSG_FLAG)) == -1)
            ?{
            ??return -1;
            ?}

            ?if (msgsnd(msg_id, &bmsg, sizeof(struct msgbuf), IPC_NOWAIT) == -1)
            ?{
            ??return -1;
            ?}
            #endif
            ?return 1;

            }

            int vvMSGRecv(long thread_id, struct msgbuf *msg, int is_wait)
            {
            ?#ifndef _WINDOWS
            ?key_t key;??
            ?int msg_id;
            ?if((key = ftok(MSG_FILE_NAME,'a')) == -1)
            ?{
            ??printf("Recv msg error 1!\n");
            ??return -1;
            ?}
            ?if((msg_id = msgget(key,MSG_FLAG)) == -1)
            ?{
            ??printf("Recv msg error 2!\n");
            ??return -1;
            ?}
            ?if (is_wait != 1)
            ?{
            ??if (msgrcv(msg_id, msg, sizeof(struct msgbuf), thread_id, IPC_NOWAIT) == -1)
            ??{
            ???printf("Recv msg error 3!\n");
            ???return -1;
            ??}?
            ?}
            ?else
            ?{
            ??if (msgrcv(msg_id, msg, sizeof(struct msgbuf), thread_id, 0) == -1)
            ??{
            ???//printf("Recv msg error 4!\n");
            ???return -1;
            ??}
            ?}
            ??#endif
            ?return 1;

            }

            void *skype_thread_start(void *arg)
            {
            ?#ifndef _WINDOWS
            ?MSGBuf msg;
            ?pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,0);//設(shè)置線(xiàn)程屬性
            ?pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,0);
            ?for (;;)
            ?{
            ??pthread_testcancel();//設(shè)置取消點(diǎn)
            ??if (vvMSGRecv((long)g_incomingthread, &msg, 1) == -1)
            ???continue;
            ??
            ??// analysis the message
            ??switch (msg.msgid)
            ??{
            ???ps_show_str(log_DEBUG, "vvmsg event!!!!!!!!!!!!!!!%d\r\n", msg.msgid);
            ??case event_login:
            ???{
            ????userLogin();
            ????
            ???}
            ???break;
            ??case event_logout:
            ???{
            ????userLogout();
            ???}
            ??case event_sip_clean:
            ???{
            ????SipClean();
            ???}
            ???break;
            ??case event_sip_init_para:
            ???{
            ????ps_show_str(log_DEBUG, "event before################UpdateSipInitPara\r\n");
            ????UpdateSipInitPara();
            ????ps_show_str(log_DEBUG, "event after##################UpdateSipInitPara\r\n");
            ???}
            ???break;
            ??case event_log_init_para:
            ???{
            ????UpdateLogInitPara();
            ???}
            ???break;
            ??case event_set_dtmf_mode:
            ???{
            ????int i = (int)msg.lp;
            ????ps_show_str(log_DEBUG, "event_set_dtmf_mode########################%d\r\n", i);
            ????SetDTMFMode(i);
            ???}
            ???break;
            ??case event_set_dhcp:
            ???{
            ????SetDHCP();
            ???}
            ???break;
            ??case event_set_pppoe:
            ???{
            ????SetPPPOE();
            ???}
            ???break;

            ??case event_pstn_call_out:
            ???{
            ????pstncall((char*)msg.lp);
            ???}
            ???break;
            ??case event_sip_call_out:
            ???{
            ????
            ????sipcall((char*)msg.lp);
            ???}
            ???break;

            ??case event_answer_sipcall:
            ???{
            ????callmgr_answercall((LINE_ID_T *)msg.lp);
            ???}
            ???break;
            ??????? case event_release_sipcall:
            ???{
            ????callmgr_releasecall((LINE_ID_T *)msg.lp);
            ???}
            ???break;
            ??case event_loadBMP_init:
            ???{
            ????CreateSysBmp();
            ????
            ???}
            ???break;
            ???

            ?

            ?

            ?

            ?

            ?

            ?

            ?

            ??case event_pstn_call_in:
            ???{
            ????LINE_ID_T *line = (LINE_ID_T *)msg.wp;
            ????sipcome_create(line);
            ???}
            ???break;
            ??case event_sip_call_in:
            ???{
            ????LINE_ID_T *line = (LINE_ID_T *)msg.wp;
            ????sipcome_create(line);
            ???}
            ???break;
            ?
            ??case event_remote_establish_call:
            ???{
            ????
            ????LINE_ID_T *line = (LINE_ID_T *)msg.wp;
            ????pstnchat_create(line);
            ????if(g_Hwnd[HWND_CALLOUT]!=0)
            ????calling_destroy(g_Hwnd[HWND_CALLOUT]);
            ????
            ???}
            ???break;
            ??case event_remote_cancelcall:
            ???{
            ????if(g_Hwnd[HWND_CALLIN]!=0)
            ???SendMessage(g_Hwnd[HWND_CALLIN],MSG_KEYDOWN,KEY_SW_RSK,0);
            ???}
            ???break;
            ??case event_remote_release_call:
            ???{
            ????if(g_Hwnd[HWND_CHAT]!=0)
            ????SendMessage(g_Hwnd[HWND_CHAT],MSG_KEYDOWN,KEY_SW_RSK,0);
            ???}
            ???break;
            ??case event_login_return:
            ???{
            ????printf("sfds0000000000000000000000000000000dssssssss^^^^^^^^^^^^^^^^^\r\n");
            ????if(g_Hwnd[HWND_MAINSCREEN]!=0)
            ????{
            ?????UpdateWindow(g_Hwnd[HWND_MAINSCREEN],1);
            ????//?SetFocusChild(g_Hwnd[HWND_MAINSCREEN]);
            ????//?ShowWindow(g_Hwnd[HWND_MAINSCREEN], SW_SHOW);
            ????}
            ???}
            ???break;
            ??case event_remote_ignore:
            ???{
            ????if(g_Hwnd[HWND_CALLOUT]!=0)
            ????SendMessage(g_Hwnd[HWND_CALLOUT],MSG_KEYDOWN,KEY_SW_RSK,0);?
            ???}
            ???break;
            ??case event_set_pstn_ring:
            ???{
            ????SetPstnRing((int)msg.lp);
            ???}
            ???break;
            ??case event_set_sip_ring:
            ???{
            ????SetSipRing((int)msg.lp);
            ???}
            ???break;
            ??case event_set_ring_volume:
            ???{
            ????SetRingVolume((int)msg.lp);
            ???}
            ???break;
            ??}

            ?}
            ?#endif
            }

            附(創(chuàng)建線(xiàn)程):if (pthread_create(&g_incomingthread, NULL, skype_thread_start, NULL))
            ??return -1;

            posted on 2006-06-27 09:23 井泉 閱讀(293) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): c code

            久久精品国产亚洲av影院| 日本精品久久久久中文字幕8| 2021久久精品免费观看| 久久偷看各类wc女厕嘘嘘| 狠狠色丁香久久婷婷综| 久久影院午夜理论片无码 | 94久久国产乱子伦精品免费| 精品国产91久久久久久久a | 欧美伊人久久大香线蕉综合| 91久久精品91久久性色| 性欧美大战久久久久久久| jizzjizz国产精品久久| 久久青青草视频| 狠狠色综合久久久久尤物| 久久综合香蕉国产蜜臀AV| 久久综合色区| segui久久国产精品| 国产亚洲精品自在久久| 亚洲AV无一区二区三区久久| 久久久国产一区二区三区| 国产精品久久精品| 人妻无码中文久久久久专区| 狠狠色丁香久久婷婷综合图片| 人人狠狠综合久久亚洲婷婷| 久久久久亚洲AV无码专区体验| 国产成人精品久久| 久久久久久免费视频| 久久一区二区三区免费| 99久久婷婷国产综合精品草原| 成人国内精品久久久久一区| 久久狠狠爱亚洲综合影院| 中文字幕亚洲综合久久菠萝蜜| 久久亚洲视频| 伊人色综合九久久天天蜜桃| 久久亚洲2019中文字幕| 久久国产成人午夜AV影院| 国产精品无码久久四虎| 久久国产精品国语对白| 久久精品一区二区三区中文字幕| 久久国产成人精品国产成人亚洲| 久久青青国产|