Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15819
  • 博文数量: 5
  • 博客积分: 1536
  • 博客等级: 上尉
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-18 18:58
文章分类

全部博文(5)

文章存档

2012年(1)

2011年(4)

我的朋友

分类: C/C++

2011-05-14 23:55:18

    void QWSDisplay::Data::init()
中,如果为客户端程序,调用
    connectToPipe()
跟服务器建立连接。然后向服务器发送QWSIdentifyCommand命令,然后使用
    waitForConnection()
等待命令返回。在waitForConnection()中,首先,调用
    fillQueue()
,在fillQueue()中,首先调用
    QWSServer::processEventQueue()
,如果为服务器所在的程序,服务器会处理该程序的客户事件,填充相应队列。如果为客户端程序,该函数什么都不做。然后调用
    QWSEvent *e = readMore()
读取一个事件,并对该事件根据不同类型分类,放入不同的队列或处理,相对QWSIdentifyCommand的返回为QWSEvent::Connected。然后会循环调用readMore(),直到读出所有事件。如果读到这个事件,fillQueue()直接返回,waitForConnection()也直接返回,否则,waitForConnection()还会重复刷新输出缓冲区,继续等待两个动作,直到超时。
在waitForConnection()正确返回的时候,它会带回一些信息,主要包括qws_client_id,qws_display_spec等,然后QWSDisplay::Data::init()调用
    waitForCreation()
等待返回QWSEvent::Creation事件,从而做一些其他主要的初始化。
之后,客户端程序的运行环境就建立好了
阅读(548) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~