• <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è)置線程屬性
            ?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)建線程):if (pthread_create(&g_incomingthread, NULL, skype_thread_start, NULL))
            ??return -1;

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

            亚洲伊人久久成综合人影院 | 久久天天躁狠狠躁夜夜网站| 久久人人添人人爽添人人片牛牛| 午夜精品久久久久久久无码| 国产激情久久久久久熟女老人 | 久久精品无码专区免费东京热| 99精品国产综合久久久久五月天| 久久水蜜桃亚洲av无码精品麻豆| 久久综合丁香激情久久| 香蕉久久久久久狠狠色| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 国产精自产拍久久久久久蜜| 7777精品伊人久久久大香线蕉| 久久久久久精品久久久久| 9191精品国产免费久久| 久久国产欧美日韩精品| 久久久亚洲裙底偷窥综合| 久久久久国色AV免费看图片| 国产美女久久久| 久久国产精品成人影院| 午夜精品久久久久久中宇| 久久91精品国产91| 久久天天躁狠狠躁夜夜2020老熟妇| 久久久久久伊人高潮影院| 久久人人爽人人澡人人高潮AV| 久久99国产综合精品女同| 久久久久久久久久久精品尤物| 99久久亚洲综合精品成人| 久久久中文字幕| 久久久久国产精品| 伊人久久大香线焦综合四虎| 51久久夜色精品国产| 久久99精品免费一区二区| 国产精品日韩欧美久久综合| 久久99精品免费一区二区| 久久久久九国产精品| 亚洲国产视频久久| 香蕉久久夜色精品升级完成| 精品国产VA久久久久久久冰| 高清免费久久午夜精品| 国产精品伊人久久伊人电影|