connectivitylayer/isce/isinameservice_dll/inc/isinameservice.h
changeset 9 8486d82aef45
parent 7 fa67e03b87df
equal deleted inserted replaced
8:6295dc2169f3 9:8486d82aef45
    20 #define __ISINAMESERVICE_H__
    20 #define __ISINAMESERVICE_H__
    21 
    21 
    22 #include "misirouterobjectif.h"
    22 #include "misirouterobjectif.h"
    23 #include "misicommunicationmanagerif.h"
    23 #include "misicommunicationmanagerif.h"
    24 
    24 
       
    25 #ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
       
    26 class DISINameServiceExtended;
       
    27 #define ISCE_INTERNAL_EXTENDED_RESOURCE_ROUTING_SUPPORTED
       
    28 #endif
       
    29 
    25 class MISIObjectRouterIf;
    30 class MISIObjectRouterIf;
    26 class DNameRecords;
    31 class DNameRecords;
    27 
    32 
    28 /*
    33 /*
    29 * ISI router.
    34 * ISI router.
    46         /*
    51         /*
    47         * See comments from MISIRouterObjectIf
    52         * See comments from MISIRouterObjectIf
    48         */
    53         */
    49         void Receive( const TDesC8& aMessage );
    54         void Receive( const TDesC8& aMessage );
    50 
    55 
    51         void HandlePNSNameMessage( const TDesC8& aMessage );
       
    52         void HandleNameQueryResp( const TDesC8& aMessage, const TUint8* msgPtr );
       
    53         void HandleNameRemoveResp( const TDesC8& aMessage, const TUint8* msgPtr );
       
    54 
       
    55         /*
    56         /*
    56         * See comments from MISICommunicationManagerIf
    57         * See comments from MISICommunicationManagerIf
    57         */
    58         */
    58         static TBool IsValidResource( const TDesC8& aMessage );
    59         static TBool IsValidResource( const TDesC8& aMessage );
       
    60 
       
    61         /*
       
    62         * See comments from MISICommunicationManagerIf
       
    63         */
       
    64         static TUint8 GetDeviceIdentifierByResource( const TUint32 aResourceIdentifier );
       
    65 
       
    66         /*
       
    67         * Return device identifier for a given resource identifier
       
    68         * @param aResourceIdentifier
       
    69         * @return device identifier
       
    70         */
       
    71         TUint8 GetDeviceIdByResource( const TUint32 aResourceIdentifier );
       
    72 
       
    73         /*
       
    74         * Return device identifier for a given resource identifier
       
    75         * @param aMessage, message which contains the resource to check
       
    76         * @return ETrue if resource was valid
       
    77         */
       
    78         TBool HandleResourceValidationCheck( const TDesC8& aMessage );
       
    79 
       
    80         /*
       
    81         * Returns a pointer to self.
       
    82         * If pointer does not exist shall assert and throw a fault.
       
    83         * @return DISINameService*
       
    84         */
       
    85         static DISINameService* GetISINameServiceF();
       
    86 
       
    87         /*
       
    88         * Returns pointer to name records.
       
    89         * If pointer does not exist shall assert and throws a fault.
       
    90         * @return DNameRecords*
       
    91         */
       
    92         DNameRecords* GetNameRecordsF();
       
    93 
       
    94     private:
    59 
    95 
    60         /*
    96         /*
    61         * Construct COMM_ISA_ENTITY_NOT_REACHABLE_RESP message and
    97         * Construct COMM_ISA_ENTITY_NOT_REACHABLE_RESP message and
    62         * send message to router.
    98         * send message to router.
    63         */
    99         */
    64         void BuildAndSendCommIsaEntityNotReachableResp( const TDesC8& aMsg );
   100         void BuildAndSendCommIsaEntityNotReachableResp( const TDesC8& aMsg );
    65 
   101 
    66         static DISINameService* iThisptr;
   102         void HandlePnsNameMessage( const TDesC8& aMessage );
    67 
   103         void HandleNameQueryReq( const TDesC8& aPnsNameQueryReq );
    68         static DMutex*      iNameServiceMutex;
   104         void HandleNameRemoveReq( const TDesC8& aPnsNameRemoveReq );
    69 
   105         void HandleNameAddReq( const TDesC8& aPnsNameAddReq );
    70         DNameRecords*       iNameRecords;
   106         void HandleCommonMessage( const TDesC8& aCommonMessage );
    71 
   107 
    72     private:
   108         void SendCommServiceNotIdentifiedResp( TDes8& aCommServiceNotIdentifiedRespMsg );
    73 
   109         void SendCommIsiVersionGetResp( TDes8& aCommIsiVersionGetRespMsg );
    74         MISIObjectRouterIf* iRouter;
   110 
    75         TUint8              iObjId;
   111         // Extended resource identifier support for NameService
       
   112         TUint32 GetResourceUsedInMessage( const TDesC8& aMessageToBeResourceRouted );
       
   113 
       
   114         void SetIsiHeaderForCommonResp( const TDesC8& aResponseMessage,
       
   115                                         const TDesC8& aRequestMessage );
       
   116 
       
   117         void SetIsiHeaderForResp( const TDesC8& aResponseMessage,
       
   118                                   const TDesC8& aRequestMessage,
       
   119                                   const TUint8 aResponseMessageIdentifier );
       
   120 
       
   121         void SetIsiHeaderForIndication( const TDesC8& aIndicationToModify,
       
   122                                         const TDesC8& aPnsNameRequest,
       
   123                                         const TUint8 aIndicationMessageIdentifier );
       
   124 
       
   125         void TxPnsNameAddInd( const TDesC8& aPnsNameAddReq,
       
   126                               const TUint32 aName,
       
   127                               const TUint16 aPhoNetAddress,
       
   128                               const TUint8 aFlags );
       
   129 
       
   130         void TxPnsNameRemoveInd( const TDesC8& aPnsNameRemoveReq,
       
   131                                  const TUint32 aName,
       
   132                                  const TUint16 aPhoNetAddress,
       
   133                                  const TUint8 aFlags );
       
   134 
       
   135 #ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
       
   136     public:
       
   137 #endif // ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
       
   138         void SendToRouter( TDes8& aMessage );
       
   139 
       
   140      // Because accessed from MISICommunicationManagerIf::IsValidResource function.
       
   141      public:
       
   142 
       
   143         void LockNameServiceDMutex();
       
   144         void FreeNameServiceDMutex();
       
   145 
       
   146 #ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
       
   147     private:
       
   148         DISINameServiceExtended* iISINameServiceExtended;
       
   149 #endif // ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
       
   150     private:
       
   151 
       
   152         // Not owned.
       
   153         MISIObjectRouterIf*     iRouter;
       
   154         // Owned
       
   155         static DMutex*          iNameServiceMutex;
       
   156         // Owned
       
   157         DNameRecords*           iNameRecords;
       
   158         // Owned
       
   159         static DISINameService* iThisptr; 
       
   160         TUint8                  iObjId;
       
   161 
       
   162     };
       
   163 
       
   164 #ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
       
   165 class DISINameService;
       
   166 
       
   167 /*
       
   168 * ISI router.
       
   169 */
       
   170 NONSHARABLE_CLASS( DISINameServiceExtended ) : public DBase
       
   171     {
       
   172 
       
   173     private: 
    76         
   174         
       
   175         enum TStateOfSubscription
       
   176             {
       
   177             ENotSubscribed = 0,
       
   178             ESubscribed,
       
   179             EDone,
       
   180             };
       
   181 
       
   182     public:
       
   183 
       
   184         /*
       
   185         * Default contructor
       
   186         */
       
   187         DISINameServiceExtended( DISINameService* aNameService );
       
   188 
       
   189         /*
       
   190         * Destructor
       
   191         */
       
   192         ~DISINameServiceExtended();
       
   193 
       
   194         /*
       
   195         * Responsibility to deallocate message is transferred.
       
   196         * @aPnsNameAddInd, message
       
   197         */
       
   198         void RxPnsNameAddInd( const TDesC8& aPnsNameAddInd );
       
   199 
       
   200         /*
       
   201         * Ownership of the message is not transferred.
       
   202         * @param aMessage, message where to check the device id
       
   203         * @return ETrue if own device
       
   204         */
       
   205         TBool IsRxDeviceOwnDevice( const TDesC8& aMessage );
       
   206 
       
   207         /*
       
   208         * Check is the ape commgr subscribe response message already received
       
   209         * @return ETrue if not received ape commgr subscribe resp already
       
   210         */
       
   211         TBool ApeCommgrSubscribeRespNotReceived();
       
   212 
       
   213         /*
       
   214         * @return ETrue if not subsribed name add ind message
       
   215         */
       
   216         TBool NotSubscribedNameAddIndAlready();
       
   217 
       
   218         /*
       
   219         * Receive the ape commgr subscribe response.
       
   220         * Ownership of the message is transferred.
       
   221         * @param aMessage
       
   222         */
       
   223         void RxApeCommgrSubscribeResp( const TDesC8& aMessage );
       
   224 
       
   225         /*
       
   226         * Subscribes pns name add ind
       
   227         */
       
   228         void SubscribePnsNameAddInd();
       
   229 
       
   230         /*
       
   231         * Modifies communication manager resource to contain also device identifier
       
   232         * [0]=PN_COMMGR [1]=Device Identifier [2]=don't care [3]=don't care
       
   233         * @param aCommgrResource, reference to resource, which value shall be modified
       
   234         * @param aDeviceIdentifier
       
   235         */
       
   236         void ModifyCommgrResource( TUint32& aCommgrResource, const TUint8 aDeviceIdentifier );
       
   237 
       
   238     private:
       
   239 
       
   240         void AddModemResources();
       
   241         
       
   242         //void AddPnDevDspMainResources();
       
   243 
       
   244         void HandleApeCommgrSubscribeResp( const TDesC8& aApeCommGrSubscribeResp );
       
   245 
       
   246         //void HandleNameAddInd( const TDesC8& aNameAddInd );
       
   247 
       
   248         //void SubscribeNameAddInd();
       
   249 
       
   250         // Not owned
       
   251         DISINameService*        iISINameService;
       
   252         TStateOfSubscription    iShNameAddIndSubscriptionState;
    77 
   253 
    78     };
   254     };
       
   255 #endif // ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
       
   256 
    79 
   257 
    80 #endif /* __ISINAMESERVICE_H__ */
   258 #endif /* __ISINAMESERVICE_H__ */
    81 
   259