--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputarc/inc/pensrvcliinc/peninputserversession.h Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,284 @@
+/*
+* Copyright (c) 2005-2006 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: header file for peninput session
+*
+*/
+
+
+
+
+#ifndef C_CPENINPUTSESSION_H
+#define C_CPENINPUTSESSION_H
+
+// INCLUDES
+#include <e32base.h>
+#include "peninputcmdparam.h"
+
+class CPeninputServer;
+class RMessage2;
+
+
+/**
+ * This class represents a session in the server.
+ *
+ * Functions are provided to respond appropriately to client messages
+ *
+ * @since S60 v4.0
+ */
+NONSHARABLE_CLASS(CPeninputServerSession) : public CSession2
+ {
+public:
+ // Constructors and destructor
+ /**
+ * Constructor.
+ *
+ * @since S60 v4.0
+ * @param aClient reference to client thread
+ * @param aServer pointer to CPeninputServer
+ */
+ CPeninputServerSession(RThread &aClient, CPeninputServer& aServer);
+
+ /**
+ * Destructor.
+ *
+ * @since S60 v4.0
+ */
+ ~CPeninputServerSession();
+
+ /**
+ * Static initializer.
+ *
+ * @since S60 v4.0
+ * @param aClient reference to client thread
+ * @param aServer pointer to CPeninputServer
+ * @return Sever session created
+ */
+ static CPeninputServerSession* NewL(RThread &aClient,
+ CPeninputServer& aServer);
+
+ /**
+ * Signals the client with the given code, if the client has
+ * registered as observer.
+ *
+ * @since S60 v4.0
+ * @param aSignalCode The event code
+ * @param aEventData The event data
+ * @return ETrue if client was signalled succesfully, EFalse otherwise.
+ */
+ TBool SignalClientL(TInt aSignalCode,const TDesC& aEventData);
+
+ /**
+ * Signals the client that UI is activated or deactivaed.
+ *
+ * @since S60 v4.0
+ * @param aSignalCode The event code
+ * @param aType pen ui type associated with this event
+ * @return ETrue if client was signalled succesfully, EFalse otherwise.
+ */
+ TBool SignalUiActivationObserver(TInt aSignalCode,TInt aType);
+
+
+ /**
+ * Handling pending event before this session is closed.
+ *
+ * @since S60 v4.0
+ */
+ void ProcessPendingEventBeforeExit();
+
+ /*
+ * Returns id of the application thread that created this session.
+ *
+ * @since S60 v4.0
+ * @return client thread id
+ */
+ TInt ClientId();
+
+ /**
+ * Increase the delayed command count
+ *
+ * @since S60 v4.0
+ */
+ void AddDelayedCmd();
+
+
+ /**
+ * Regiseter the ui type to be monitored.
+ *
+ * @since S60 v4.0
+ * @aType The ui type to be monitored.
+ */
+ void RegisterPenUiType(TInt aType);
+
+ /**
+ * Panic client
+ *
+ * @since S60 v4.0
+ * @param aMessage The client message
+ * @param aPanic panic code
+ */
+ static void PanicClient(const RMessage2& aMessage ,TInt aPanic );
+
+ // from base classes CSession2
+
+ /**
+ * From CSession2.
+ * handle client request
+ *
+ * @since S60 v4.0
+ * @param aMessage The client request message
+ */
+ virtual void ServiceL( const RMessage2 &aMessage );
+
+ /**
+ * To get disabled layouts for the session of RMessage
+ *
+ * @since S60 v6.0
+ * @param aDisabledLayouts The disabled mode to set
+ */
+ const TProcessId& ClientProcessId();
+ TInt DisabledUiType();
+
+ TInt DoUpdateAppInfo();
+
+ inline TBool DsaEverHappened() const;
+private: // New functions
+ /**
+ * 2nd phase constuctor
+ *
+ * @since S60 v4.0
+ */
+ void ConstructL();
+
+ /**
+ * handle client request
+ *
+ * @since S60 v4.0
+ * @param aMessage The client request message
+ * @return The operation result code
+ */
+ TInt DoServiceL( const RMessage2 &aMessage );
+
+
+ /**
+ * Remove the given event data
+ *
+ * @since S60 v4.0
+ * @param aIndex The event to be remvoed. If aIndex < 0, all events
+ * are removed.
+ */
+ void RemoveEventDataByIdx(TInt aIndex);
+
+ /**
+ * Save data and complete the pending request
+ *
+ * @since S60 v4.0
+ * @param aSignalCode The event code
+ * @param aEventData The event data
+ * @param aPos The event data position. if -1, then append to the end.
+ * @return ETrue if OK.
+ */
+ TBool CompletePendingRequestL(TInt aSignalCode,const TDesC& aEventData,
+ int aPos = -1);
+
+ TInt HandleAppInfoChange(const RMessage2& aMessage);
+ TInt HandleAppInfoChangeL(const RMessage2& aMessage);
+ /**
+ * Build the event buf to send to client.
+ * It checks whether we can combine several events data together to send in one round.
+ *
+ * @since S60 v5.0
+ * @return The number of combined event. -1 if there is no memory to build data buffer.
+ */
+ TInt BuildEventData();
+
+ /**
+ * Remove the given number of event data
+ *
+ * @since S60 v5.0
+ * @param aNum The number of events to be remvoed.
+ */
+ void RemoveEventDatas(TInt aNum);
+
+ /**
+ * Send the event data via the given message.
+ *
+ * @since S60 v5.0
+ * @return KErrNone if succefully, otherwise returns the length needed for msg buf.
+ */
+ TInt SendEventData(const RMessage2& aMessage, const TDesC& aData);
+private: // Data
+
+ /**
+ * Reference to PENINPUT server
+ */
+ CPeninputServer& iPenInputSvr;
+
+ /**
+ * Each client can have one pending request which is issued with function
+ * RequestMessageNotification and is signalled when the client has to switch
+ * FEP or launch help application. Pointer not owned.
+ */
+ RMessage2 iPendingRequest;
+
+ /**
+ * Flag to indicate whether client has issued a notification request.
+ */
+ TBool iObserverActive;
+
+ /**
+ * Id of the client thread for debugging purposes
+ */
+ TInt iClientId;
+
+ /**
+ * Delayed command count for this session
+ */
+ TInt iDelayedCmd;
+
+ /**
+ * The pen ui type to be monitored
+ */
+ TInt iRegistedPenUiType;
+
+ /**
+ * event code array
+ */
+ RArray<TInt> iSignalCodeArray;
+
+ /**
+ * session data buffer
+ * Own
+ */
+ RPointerArray<HBufC> iDataBuf;
+
+ RBuf iCombinedEventBuf;
+ TInt iCombinedMsgNum;
+
+ TInt iCombinedEventId;
+
+ TProcessId iClientProcess;
+
+ HBufC* iAppInfo;
+
+ TPeninputAppInfo iAppInfoType;
+ TInt iDisabledUiType;
+ TBool iDsaEverHappened;
+ };
+#endif //C_CPENINPUTSESSION_H
+
+inline TBool CPeninputServerSession::DsaEverHappened() const
+ {
+ return iDsaEverHappened;
+ }
+// End of File