WEB开发网
开发学院手机开发Symbian 开发 Symbian之client-server架构 阅读

Symbian之client-server架构

 2010-05-31 19:49:00 来源:WEB开发网   
核心提示:RServer2,CServer2,CSession2,RMessenge2,RMessengePtr2,RSessionBase,RSubsessionBase,TIpcArgs.CServer2 是一个AO,从客户线程接受请求,Symbian之client-server架构(2),然后把这些请求分发到相应的服务器端
RServer2,CServer2,CSession2,RMessenge2,RMessengePtr2,RSessionBase,RSubsessionBase,TIpcArgs.

CServer2 是一个AO,从客户线程接受请求,然后把这些请求分发到相应的服务器端的客户session。它可以利用客户线程请求来创建服务器端的客户线程。

以下摘自Symbian os源代码

/*

Abstract base class for servers (version 2).

This is an active object. It accepts requests from client threads and forwards

them to the relevant server-side client session. It also handles the creation

of server-side client sessions as a result of requests from client threads.

A server must define and implement a derived class.

*/

class CServer2 : public CActive

{

public:

IMPORT_C virtual ~CServer2() =0;

IMPORT_C TInt Start(const TDesC& aName);

IMPORT_C void StartL(const TDesC& aName);

IMPORT_C void ReStart();

IMPORT_C void SetPinClientDescriptors(TBool aPin);

protected:

inline const RMessage2& Message() const;

IMPORT_C CServer2(TInt aPriority, TServerType aType=EUnsharableSessions);

IMPORT_C void DoCancel();

IMPORT_C void RunL();

IMPORT_C TInt RunError(TInt aError);

IMPORT_C virtual void DoConnect(const RMessage2& aMessage);

IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);

private:

IMPORT_C virtual CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const =0;

...

};

有两个API需要我们注意一下:

IMPORT_C void StartL(const TDesC& aName);

SDK中描述是把指定名称的Server加入到active scheduler

中,并且触发一个请求。一般这个函数会在我们自己写的类的 ConstructL()中调用。一般,系统的服务器,比如:文件服务器,字体和位图服务器和窗口服务器等都是在系统启动的时候就启动了。但是,如果我们自己的服务器不希望如此,只是在必

上一页  1 2 3 4 5 6  下一页

Tags:Symbian client server

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