WEB开发网
开发学院手机开发Symbian 开发 Symbian OS中的Client/Server机制分析 阅读

Symbian OS中的Client/Server机制分析

 2010-09-06 08:10:00 来源:WEB开发网   
核心提示:TRequestStatus参数的API是同步的,一个Client的Session对Server同时只能有一个当前的同步请求,Symbian OS中的Client/Server机制分析(7),异步请求可以有多个,RMessage2 这个类封装了Client请求的细节, RTimeServerSession继承自客户端的
TRequestStatus参数的API是同步的,一个Client的Session对Server同时只能有一个当前的同步请求,异步请求可以有多个。

RMessage2 这个类封装了Client请求的细节,在Client和Server端传递。

/**

An object that encapsulates the details of a client request.

*/

class RMessage2 : public RMessagePtr2

{

friend class CServer2;

#endif

inline TInt Function() const;

inline TInt Int0() const;

inline TInt Int1() const;

inline TInt Int2() const;

inline TInt Int3() const;

inline const TAny* Ptr0() const;

inline const TAny* Ptr1() const;

inline const TAny* Ptr2() const;

inline const TAny* Ptr3() const;

inline CSession2* Session() const;

protected:

/**

The request type.

*/

TInt iFunction;

};

这里的 Function ()对应于RSessionbase:: SendReceive (TInt aFunction,const TIpcArgs& aArgs,TRequestStatus& aStatus) 中的aFunction。Client端通过TIpcArgs这个结构包装数据向Server发送请求,TIpcArgs 支持0到4个参数,最多只能是4个,如果参数是简单的整型值我们可以通过RMessage2的Int0-3这些个API得到他们的值,如果是其他类新,比如是描述符,那么就的用Ptr0-3()来获得指针了。系统内部会把TIpcArgs的内容封装成RMessage2,并在Server端相应 Session的ServiceL()中进行解析。

四,实例剖析

下面以SDK中附带的example--ClientServerAsync来阐述一下Client/Server的流程。

1,在csayncdocument.cpp 的CEikAppUi* CCSAsyncDocument::CreateAppUiL()中会调用CCSAsyncRequestHandler::NewL( *appUi ) 来实例化 CCSAsyncRequestHandler,这个 handler是个AO,它拥有一个 RTimeServerSession iSession数据成员, RTimeServerSession继承自客户端的Session类 RSessionBase。这ConstructL()中会调用iSession.Connect() ;

2, RTimeServerSession的Connet() 方法会连接到Server并且创建一个Session。它首先调用一个静态函数StartServer()

上一页  2 3 4 5 6 7 8 9  下一页

Tags:Symbian OS Client

编辑录入:coldstar [复制链接] [打 印]
赞助商链接