Symbian之client-server架构
2010-05-31 19:49:00 来源:WEB开发网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()中调用。一般,系统的服务器,比如:文件服务器,字体和位图服务器和窗口服务器等都是在系统启动的时候就启动了。但是,如果我们自己的服务器不希望如此,只是在必
更多精彩
赞助商链接