--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/nonnga/SERVER/OBJECT.H Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,107 @@
+// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Definition of base class for all objects
+//
+//
+
+#ifndef __OBJECT_H__
+#define __OBJECT_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include "w32cmd.h"
+#include "screen.h"
+
+class CWsClient;
+class CWsRootWindow;
+
+/**
+CWsObject is the base class for the server-side objects that are visible to the client.
+
+The client refers to these objects via a handle that is passed to it by the server.
+The association between handles and CWsObject instances is stored by the TWsObject class.
+
+Derived classes must implement the CommandL() function so that it handles the requests
+the client sent.
+
+Each client session has a list of all its CWsObject instances. When creating an instance of
+a class derived from CWsObject the NewObjL() function must be called to add the new
+object to the list. The CWsObject destructor takes care of removing the object from the list.
+
+@see TWsObject
+@see CWsClient
+@internalComponent
+@released
+*/
+class CWsObject : public CBase
+ {
+public:
+ CWsObject(CWsClient* aOwner,WH_HANDLES aType);
+ ~CWsObject();
+ virtual void CommandL(TInt aOpcode, const TAny *aCmdData)=0;
+ virtual void CloseObject();
+ TInt LogHandle() const;
+ void NewObjL();
+ void RemoveFromIndex();
+ inline WH_HANDLES Type() const;
+ inline CWsClient *WsOwner() const;
+ inline void SetWsOwner(CWsClient *aOwner);
+ void OwnerPanic(TClientPanic aPanic) const;
+protected:
+ void SetReply(TInt aReply);
+
+private:
+ WH_HANDLES iType;
+protected:
+ /** Each client has a list of all its CWsObject instances. The CWsObject
+ has a pointer to its owner so that it can update the list when it is created and
+ when it is destroyed. */
+ CWsClient *iWsOwner;
+ };
+
+class CWsScreenObject : public CWsObject
+ {
+public:
+ inline CWsScreenObject(CWsClient *aOwner,WH_HANDLES aType,CScreen* aScreen);
+ inline CScreen* Screen() const;
+ inline CWsRootWindow* RootWindow() const;
+
+protected:
+ CScreen* iScreen;
+ };
+
+
+//
+// inlines //
+//
+
+//
+// CWsObject
+//
+inline CWsClient *CWsObject::WsOwner() const
+ {return(iWsOwner);}
+inline void CWsObject::SetWsOwner(CWsClient *aOwner)
+ {iWsOwner=aOwner;}
+inline WH_HANDLES CWsObject::Type() const
+ {return(iType);}
+//
+// CWsScreenObject
+//
+inline CWsScreenObject::CWsScreenObject(CWsClient *aOwner,WH_HANDLES aType,CScreen* aScreen) : CWsObject(aOwner,aType), iScreen(aScreen)
+ {}
+inline CScreen* CWsScreenObject::Screen() const
+ {return iScreen;}
+inline CWsRootWindow* CWsScreenObject::RootWindow() const
+ {return iScreen->RootWindow();}
+#endif