btobexprofiles/obexserviceman/obexservicemanserver/inc/SrcsSession.h
author hgs
Fri, 28 May 2010 17:03:06 +0300
changeset 32 19bd632b5100
permissions -rw-r--r--
201021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  SRCS session definition.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef _SRCSSESSION_H
hgs
parents:
diff changeset
    21
#define _SRCSSESSION_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
//  INCLUDES
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include <e32svr.h>
hgs
parents:
diff changeset
    26
#include "obexserviceman.h"
hgs
parents:
diff changeset
    27
#include "SrcsServiceManager.h"
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    30
class CObexSM;
hgs
parents:
diff changeset
    31
class CSrcsMessage;
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
// CLASS DECLARATION
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
/**
hgs
parents:
diff changeset
    36
 *  CSrcsSession class represent session on server side
hgs
parents:
diff changeset
    37
 *
hgs
parents:
diff changeset
    38
 */
hgs
parents:
diff changeset
    39
class CSrcsSession : public CSession2, public MObexSMRequestObserver
hgs
parents:
diff changeset
    40
    {
hgs
parents:
diff changeset
    41
public:  // Constructors and destructor
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
   /**
hgs
parents:
diff changeset
    44
    * Two-phased constructor.
hgs
parents:
diff changeset
    45
    */
hgs
parents:
diff changeset
    46
    static CSrcsSession* NewL(CObexSM* aServer );
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
   /**
hgs
parents:
diff changeset
    49
    * Destructor.
hgs
parents:
diff changeset
    50
    */
hgs
parents:
diff changeset
    51
    virtual ~CSrcsSession();
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
   /**
hgs
parents:
diff changeset
    54
    * 2nd phase construct for sessions    
hgs
parents:
diff changeset
    55
    * @return   None
hgs
parents:
diff changeset
    56
    */
hgs
parents:
diff changeset
    57
    void CreateL( );
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
public: // Functions from base classes
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
   /**
hgs
parents:
diff changeset
    62
    * From CSession2 ServiceL
hgs
parents:
diff changeset
    63
    * Client-server framework calls this function
hgs
parents:
diff changeset
    64
    * to handle messages from client.
hgs
parents:
diff changeset
    65
    * @param    aMessage received message class
hgs
parents:
diff changeset
    66
    * @return   None
hgs
parents:
diff changeset
    67
    */
hgs
parents:
diff changeset
    68
    virtual void ServiceL( const RMessage2 &aMessage );
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
   /**
hgs
parents:
diff changeset
    71
	* From CSession2 DispatchMessageL
hgs
parents:
diff changeset
    72
	* Dispatchs and calls appropriate methods to
hgs
parents:
diff changeset
    73
	* handle messages.
hgs
parents:
diff changeset
    74
	* @param    aMessage received message class
hgs
parents:
diff changeset
    75
	* @return   None
hgs
parents:
diff changeset
    76
	*/
hgs
parents:
diff changeset
    77
    void DispatchMessageL( const RMessage2 &aMessage );
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
   /**
hgs
parents:
diff changeset
    80
    * From CSession2 Server
hgs
parents:
diff changeset
    81
    * Returns reference to server.
hgs
parents:
diff changeset
    82
    * @param    None
hgs
parents:
diff changeset
    83
    * @return   Reference to server
hgs
parents:
diff changeset
    84
    */
hgs
parents:
diff changeset
    85
    CObexSM& Server();
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
public: // New functions
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
   /**
hgs
parents:
diff changeset
    90
    * Complete Request
hgs
parents:
diff changeset
    91
    * @param    aMessage Request message to be completed    
hgs
parents:
diff changeset
    92
    * @param    aError Error code
hgs
parents:
diff changeset
    93
    * @return   None.
hgs
parents:
diff changeset
    94
    */
hgs
parents:
diff changeset
    95
    void RequestCompleted(const RMessage2 &aMessage, TInt aError);
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
private:  // New functions
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
   /**
hgs
parents:
diff changeset
   100
    * OpCode function
hgs
parents:
diff changeset
   101
    * Turns Services ON/OFF according to aState
hgs
parents:
diff changeset
   102
    * @param    aState boolean to indicate status of service.
hgs
parents:
diff changeset
   103
    * @return   None.
hgs
parents:
diff changeset
   104
    */
hgs
parents:
diff changeset
   105
    void ManageServices( TSrcsTransport aTransport, TBool aState, const RMessage2& aMessage );
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
   /**
hgs
parents:
diff changeset
   108
    * Handles error situation. Panics client
hgs
parents:
diff changeset
   109
    * or completes message with error status.
hgs
parents:
diff changeset
   110
    * @param    aError  Error code
hgs
parents:
diff changeset
   111
    * @return None
hgs
parents:
diff changeset
   112
    */
hgs
parents:
diff changeset
   113
    void HandleError( TInt aError, const RMessage2& aMessage );
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
   /**
hgs
parents:
diff changeset
   116
    * Deletes message from message array
hgs
parents:
diff changeset
   117
    * @param    aMessage    Pointer to message to be deleted.
hgs
parents:
diff changeset
   118
    * @return   None
hgs
parents:
diff changeset
   119
    */
hgs
parents:
diff changeset
   120
    void DeleteMessage( CSrcsMessage* aMessage );
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
    /**
hgs
parents:
diff changeset
   123
    * Finds a message from message array
hgs
parents:
diff changeset
   124
    * @param    aMessage -reference to message.
hgs
parents:
diff changeset
   125
    * @return   Pointer to CSrcsMessage -instance.
hgs
parents:
diff changeset
   126
    */
hgs
parents:
diff changeset
   127
    CSrcsMessage* FindMessage( const RMessage2& aMessage );
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
    /**
hgs
parents:
diff changeset
   130
    * Finds the first message with the function from message array
hgs
parents:
diff changeset
   131
    * @param    aFunction -the request function.
hgs
parents:
diff changeset
   132
    * @return   Pointer to CSrcsMessage -instance, NULL if not found.
hgs
parents:
diff changeset
   133
    */
hgs
parents:
diff changeset
   134
    CSrcsMessage* FindMessage( TInt aFunction );
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
   /**
hgs
parents:
diff changeset
   137
    * Completes a message to client
hgs
parents:
diff changeset
   138
    * @param    aMessage -reference to message.
hgs
parents:
diff changeset
   139
    * @param    aReason -code to be delivered to client.
hgs
parents:
diff changeset
   140
    */
hgs
parents:
diff changeset
   141
    void CompleteMessage( const RMessage2& aMessage, TInt aReason );
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
   /**
hgs
parents:
diff changeset
   144
    * Completes a message to client
hgs
parents:
diff changeset
   145
    * @param    aMessage -reference to message.
hgs
parents:
diff changeset
   146
    * @param    aReason -code to be delivered to client.
hgs
parents:
diff changeset
   147
    */
hgs
parents:
diff changeset
   148
    void CompleteMessage( CSrcsMessage* aMessage, TInt aReason );
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
   /**
hgs
parents:
diff changeset
   151
    * Completes any messages pending in the CBTManMessage array.    
hgs
parents:
diff changeset
   152
    */
hgs
parents:
diff changeset
   153
    void CompletePendingMessages();
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
   /**
hgs
parents:
diff changeset
   156
    * Creates a new CSrcsMessage and puts it in
hgs
parents:
diff changeset
   157
    * message array.
hgs
parents:
diff changeset
   158
    * @param    aMessage -reference to message.
hgs
parents:
diff changeset
   159
    * @return   None
hgs
parents:
diff changeset
   160
    */
hgs
parents:
diff changeset
   161
    void CreateSrcsMessageL( const RMessage2& aMessage );
hgs
parents:
diff changeset
   162
    
hgs
parents:
diff changeset
   163
   /**
hgs
parents:
diff changeset
   164
    * Canceling previous request
hgs
parents:
diff changeset
   165
    * @param    aMessage -reference to message.    
hgs
parents:
diff changeset
   166
    */
hgs
parents:
diff changeset
   167
    void CancelingRequest(const RMessage2& aMessage);    
hgs
parents:
diff changeset
   168
  
hgs
parents:
diff changeset
   169
   /**
hgs
parents:
diff changeset
   170
    * Complete request when canceling
hgs
parents:
diff changeset
   171
    * @param    aMessage Request message to be completed    
hgs
parents:
diff changeset
   172
    * @param    aError Error code
hgs
parents:
diff changeset
   173
    * @param    aPostponeCompletion Not completed yet
hgs
parents:
diff changeset
   174
    * @return   None.
hgs
parents:
diff changeset
   175
    */  
hgs
parents:
diff changeset
   176
    void CompleteCanceling(const RMessage2& aMessage, TInt aError, TBool& aPostponeCompletion);
hgs
parents:
diff changeset
   177
    
hgs
parents:
diff changeset
   178
private:
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
   /**
hgs
parents:
diff changeset
   181
    * C++ default constructor.
hgs
parents:
diff changeset
   182
    */
hgs
parents:
diff changeset
   183
    CSrcsSession( CObexSM* aServer );
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
   /**
hgs
parents:
diff changeset
   186
    * Two-phase constructor.
hgs
parents:
diff changeset
   187
    */
hgs
parents:
diff changeset
   188
    void ConstructL();
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
private:    // Data
hgs
parents:
diff changeset
   192
    CArrayPtr<CSrcsMessage>*    iMessageArray;	    // array of outstanding messages
hgs
parents:
diff changeset
   193
    CObexSM                     *iServer;
hgs
parents:
diff changeset
   194
    TBool                       iCanceling;
hgs
parents:
diff changeset
   195
    };
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
#endif      // SRCSSESSION_H
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
// End of File