• <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成人网人人网站| 国产一久久香蕉国产线看观看| 久久99精品久久久久久久不卡| 色偷偷888欧美精品久久久| 狠狠人妻久久久久久综合蜜桃| 亚州日韩精品专区久久久| 色婷婷综合久久久久中文一区二区| 国产欧美一区二区久久| 色综合久久88色综合天天 | 人妻无码αv中文字幕久久琪琪布| 一本大道久久a久久精品综合| 亚洲欧美另类日本久久国产真实乱对白| 久久久久亚洲AV成人网人人网站| 国产高潮国产高潮久久久| 久久精品国产色蜜蜜麻豆| 久久久久亚洲av无码专区喷水| 久久精品18| 久久九九亚洲精品| 久久久久久午夜成人影院 | 久久久久人妻一区精品色| 精品多毛少妇人妻AV免费久久| 久久天天躁夜夜躁狠狠躁2022| 丁香久久婷婷国产午夜视频| 久久精品无码专区免费东京热 | 久久久亚洲欧洲日产国码aⅴ| 日批日出水久久亚洲精品tv| 91久久精品国产免费直播| 亚洲AV无码久久| 国产偷久久久精品专区| 亚洲国产成人久久一区WWW| 精品久久久久久国产牛牛app| 久久国产精品99久久久久久老狼| 无遮挡粉嫩小泬久久久久久久| 久久中文字幕人妻熟av女| 中文字幕久久亚洲一区| 中文成人久久久久影院免费观看 | 国产精品99久久免费观看| 久久香蕉超碰97国产精品| 亚洲国产精品18久久久久久| 午夜久久久久久禁播电影|