diff -r 942573423a60 -r fa67e03b87df connectivitylayer/isce/isinameservice_dll/src/isinameservice.cpp --- a/connectivitylayer/isce/isinameservice_dll/src/isinameservice.cpp Fri Jan 22 10:04:04 2010 +0200 +++ b/connectivitylayer/isce/isinameservice_dll/src/isinameservice.cpp Wed Feb 17 13:58:55 2010 +0200 @@ -24,8 +24,12 @@ #include // For ISI_HEADER_SIZE #include // For PN_NAMESERVICE #include // For PN -#include "misiobjectrouterif.h" // For MISIObjectRouterIf + +#ifdef INTERNAL_FLAG_ISI_ROUTER_IN_USE +#include "isihelpers.h" // For SET_RECEIVER_OBJ... +#else #include "iadhelpers.h" // For SET_RECEIVER_OBJ... +#endif #include "namerecords.h" // For DNameRecords #include // For THIS_DEVICE #include // For SIZE_COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP @@ -96,6 +100,7 @@ const TUint32 KNameServiceUID( 0x2002A5A1 ); const TUint8 KFiller( 0 ); +DISINameService* DISINameService::iThisptr = NULL; DMutex* DISINameService::iNameServiceMutex = NULL; _LIT8( KNameServiceMutex, "KNameServiceMutex" ); @@ -177,16 +182,13 @@ Kern::MutexSignal( *iNameServiceMutex ); C_TRACE( ( _T( "DISINameService::DISINameService<" ) ) ); } - void DISINameService::HandleNameQueryResp( const TDesC8& aMessage, const TUint8* msgPtr ) { C_TRACE( ( _T( "DISINameService::HandleNameQueryResp>" ) ) ); TUint32 name = GETB32( &msgPtr[ ISI_HEADER_SIZE + PNS_NAME_QUERY_REQ_OFFSET_NAME ] ); TUint32 mask = GETB32( &msgPtr[ ISI_HEADER_SIZE + PNS_NAME_QUERY_REQ_OFFSET_BITMASK ] ); - RArray nameTable; TInt32 count = iNameRecords->NameQuery( name, mask, &nameTable ); - TUint16 msgLength = ( SIZE_PNS_NAME_QUERY_RESP + ( count * SIZE_PN_NAME_SRV_ITEM_STR ) ); TDes8& respMsg = MemApi::AllocBlock( msgLength ); respMsg.SetLength( msgLength ); @@ -312,15 +314,7 @@ case PNS_NAME_QUERY_REQ: { C_TRACE( ( _T( "DISINameService PNS_NAME_QUERY_REQ>" ) ) ); -// if( msgPtr[ ISI_HEADER_OFFSET_SENDERDEVICE ] == THIS_DEVICE ) -// { - C_TRACE( ( _T( "DISINameService PNS_NAME_QUERY_RESP>" ) ) ); - HandleNameQueryResp( aMessage, msgPtr ); -// } -// else -// { -// C_TRACE( ( _T( "DISINameService::HandlePNSNameMessage PNS_NAME_QUERY_REQ from other device, ignore" ) ) ); -// } + HandleNameQueryResp( aMessage, msgPtr ); C_TRACE( ( _T( "DISINameService PNS_NAME_QUERY_REQ<" ) ) ); break; } @@ -351,18 +345,12 @@ TUint8 flags = msgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_REQ_OFFSET_NAMEENTRY + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ]; err = iNameRecords->AddName( name, phonetAddr, flags ); respPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_RESP_OFFSET_REASON ] = err; - for( TInt i( 0 ); i < respMsg.Length(); i++ ) - { - C_TRACE( ( _T( "PNS_NAME_ADD_RESP index[ %d ] data 0x%x"), i, respMsg.Ptr()[i] ) ); - } iRouter->Send( respMsg, iObjId ); C_TRACE( ( _T( "DISINameService PNS_NAME_ADD_RESP from this device<" ) ) ); if( err == PN_NAME_OK ) { C_TRACE( ( _T( "DISINameService PNS_NAME_ADD_IND>" ) ) ); - RArray * nameTable = NULL; - nameTable = iNameRecords->GetNameTable(); - msgLength = ( SIZE_PNS_NAME_ADD_IND + ( SIZE_PN_NAME_SRV_ITEM_STR * nameTable->Count() ) ); + msgLength = ( SIZE_PNS_NAME_ADD_IND + ( SIZE_PN_NAME_SRV_ITEM_STR ) ); TDes8& indMsg = MemApi::AllocBlock( msgLength ); indMsg.SetLength( msgLength ); TUint8* indPtr = const_cast( indMsg.Ptr() ); @@ -385,10 +373,6 @@ PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ], phonetAddr ); indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ] = flags; indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_RESERVED ] = KFiller; - for( TInt i( 0 ); i < indMsg.Length(); i++ ) - { - C_TRACE( ( _T( "PNS_NAME_ADD_IND index[ %d ] data 0x%x"), i, indMsg.Ptr()[i] ) ); - } iRouter->Send( indMsg, iObjId ); C_TRACE( ( _T( "DISINameService PNS_NAME_ADD_IND<" ) ) ); } @@ -397,10 +381,6 @@ { C_TRACE( ( _T( "DISINameService PNS_NAME_ADD_REQ from other device>" ) ) ); respPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_RESP_OFFSET_REASON ] = PN_NAME_NOT_ALLOWED; - for( TInt i( 0 ); i < respMsg.Length(); i++ ) - { - C_TRACE( ( _T( "PNS_NAME_ADD_RESP index[ %d ] data 0x%x"), i, respMsg.Ptr()[i] ) ); - } iRouter->Send( respMsg, iObjId ); C_TRACE( ( _T( "DISINameService PNS_NAME_ADD_RESP from other device<" ) ) ); } @@ -426,16 +406,27 @@ } -EXPORT_C TBool DISINameService::IsValidResource( +EXPORT_C TBool MISICommunicationManagerIf::IsValidResource( const TDesC8& aMessage ) { - TInt err( Kern::MutexWait( *iNameServiceMutex ) ); + C_TRACE( ( _T( "DISINameService::IsValidResource 0x%x>" ), &aMessage ) ); + TInt err( Kern::MutexWait( *DISINameService::iThisptr->iNameServiceMutex ) ); ASSERT_RESET_ALWAYS( ( KErrNone == err ), ( EISINameServiceMutexWaitFailed | EDISINameServiceTraceId << KClassIdentifierShift ) ); - C_TRACE( ( _T( "DISINameService::IsValidResource 0x%x>" ), &aMessage ) ); - C_TRACE( ( _T( "DISINameService::IsValidResource 0x%x<" ), &aMessage ) ); - Kern::MutexSignal( *iNameServiceMutex ); - return ETrue; + TUint8* msgPtr = const_cast( aMessage.Ptr() ); + TUint16 phonetAddress( 0 ); + DISINameService::iThisptr->iNameRecords->LookupPhonetAddress( msgPtr[ ISI_HEADER_OFFSET_RESOURCEID ], &phonetAddress ); + Kern::MutexSignal( *DISINameService::iThisptr->iNameServiceMutex ); + if( phonetAddress == GET_SENDER_OBJ( aMessage ) ) + { + C_TRACE( ( _T( "DISINameService::IsValidResource phonetAddress found 0x%x" ), phonetAddress ) ); + return ETrue; + } + else + { + C_TRACE( ( _T( "DISINameService::IsValidResource phonetAddress not found 0x%x" ), phonetAddress ) ); + return EFalse; + } } @@ -445,6 +436,7 @@ // Create a container extension DISINameService* extension = new DISINameService(); TRACE_ASSERT( extension ); + DISINameService::iThisptr = static_cast< DISINameService* >( extension ); Kern::Printf( "ISI Name Service extension<" ); return extension ? KErrNone : KErrNoMemory; } @@ -494,7 +486,6 @@ TDes8* block = reinterpret_cast( const_cast(&aMsg) ); MemApi::DeallocBlock( *block ); - C_TRACE( ( _T( "DISINameService::SendCommIsaEntityNotReachableResp 0x%x <-" ), &aMsg ) ); }