# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1283258150 -10800 # Node ID 2669f8761a99b3c38f8f873d77e7b243460cfd79 # Parent 2580314736afd4d21ae8d67ef60a5849363cd16d Revision: 201027 Kit: 201035 diff -r 2580314736af -r 2669f8761a99 XDMEngine/BWINSCW/XdmEngineU.DEF --- a/XDMEngine/BWINSCW/XdmEngineU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -EXPORTS - ??0CXdmDirectory@@IAE@AAVCXdmEngine@@@Z @ 1 NONAME ; CXdmDirectory::CXdmDirectory(class CXdmEngine &) - ??0CXdmDocument@@IAE@AAVCXdmEngine@@@Z @ 2 NONAME ; CXdmDocument::CXdmDocument(class CXdmEngine &) - ??0CXdmDocumentNode@@IAE@AAVCXdmEngine@@AAVMXdmNodeFactory@@@Z @ 3 NONAME ; CXdmDocumentNode::CXdmDocumentNode(class CXdmEngine &, class MXdmNodeFactory &) - ??0CXdmDocumentNode@@IAE@AAVCXdmEngine@@AAVMXdmNodeFactory@@PAV0@@Z @ 4 NONAME ; CXdmDocumentNode::CXdmDocumentNode(class CXdmEngine &, class MXdmNodeFactory &, class CXdmDocumentNode *) - ??0CXdmDocumentNode@@IAE@HAAVCXdmEngine@@AAVMXdmNodeFactory@@PAV0@@Z @ 5 NONAME ; CXdmDocumentNode::CXdmDocumentNode(int, class CXdmEngine &, class MXdmNodeFactory &, class CXdmDocumentNode *) - ??0CXdmNodeAttribute@@IAE@AAVCXdmEngine@@AAVMXdmNodeFactory@@@Z @ 6 NONAME ; CXdmNodeAttribute::CXdmNodeAttribute(class CXdmEngine &, class MXdmNodeFactory &) - ??0CXdmNodeAttribute@@IAE@AAVCXdmEngine@@AAVMXdmNodeFactory@@PAVCXdmDocumentNode@@@Z @ 7 NONAME ; CXdmNodeAttribute::CXdmNodeAttribute(class CXdmEngine &, class MXdmNodeFactory &, class CXdmDocumentNode *) - ??0TXdmCredentials@@QAE@ABVTDesC16@@0@Z @ 8 NONAME ; TXdmCredentials::TXdmCredentials(class TDesC16 const &, class TDesC16 const &) - ??0TXdmCredentials@@QAE@XZ @ 9 NONAME ; TXdmCredentials::TXdmCredentials(void) - ??1CXdmDirectory@@UAE@XZ @ 10 NONAME ; CXdmDirectory::~CXdmDirectory(void) - ??1CXdmDocument@@UAE@XZ @ 11 NONAME ; CXdmDocument::~CXdmDocument(void) - ??1CXdmDocumentNode@@UAE@XZ @ 12 NONAME ; CXdmDocumentNode::~CXdmDocumentNode(void) - ??1CXdmEngine@@UAE@XZ @ 13 NONAME ; CXdmEngine::~CXdmEngine(void) - ??1CXdmNodeAttribute@@UAE@XZ @ 14 NONAME ; CXdmNodeAttribute::~CXdmNodeAttribute(void) - ??1CXdmProtocolInfo@@UAE@XZ @ 15 NONAME ; CXdmProtocolInfo::~CXdmProtocolInfo(void) - ??8CXdmDocument@@QBEHAAV0@@Z @ 16 NONAME ; int CXdmDocument::operator==(class CXdmDocument &) const - ??8CXdmDocumentNode@@QBEHABV0@@Z @ 17 NONAME ; int CXdmDocumentNode::operator==(class CXdmDocumentNode const &) const - ?AccessPoint@CXdmProtocolInfo@@QBEHXZ @ 18 NONAME ; int CXdmProtocolInfo::AccessPoint(void) const - ?AppendChileNodeL@CXdmDocumentNode@@QAEXPAV1@@Z @ 19 NONAME ; void CXdmDocumentNode::AppendChileNodeL(class CXdmDocumentNode *) - ?AppendL@CXdmDocument@@QAEXPAVCXdmDocumentNode@@@Z @ 20 NONAME ; void CXdmDocument::AppendL(class CXdmDocumentNode *) - ?AppendToModelL@CXdmDocument@@QAEXPAVCXdmDocumentNode@@0@Z @ 21 NONAME ; void CXdmDocument::AppendToModelL(class CXdmDocumentNode *, class CXdmDocumentNode *) - ?Attribute@CXdmDocumentNode@@QBEPAVCXdmNodeAttribute@@ABVTDesC16@@@Z @ 22 NONAME ; class CXdmNodeAttribute * CXdmDocumentNode::Attribute(class TDesC16 const &) const - ?Attribute@CXdmDocumentNode@@QBEPAVCXdmNodeAttribute@@H@Z @ 23 NONAME ; class CXdmNodeAttribute * CXdmDocumentNode::Attribute(int) const - ?AttributeCount@CXdmDocumentNode@@QBEHXZ @ 24 NONAME ; int CXdmDocumentNode::AttributeCount(void) const - ?AttributeValue@CXdmNodeAttribute@@QBE?AVTPtrC16@@XZ @ 25 NONAME ; class TPtrC16 CXdmNodeAttribute::AttributeValue(void) const - ?BaseConstructL@CXdmDirectory@@IAEXABVTDesC16@@@Z @ 26 NONAME ; void CXdmDirectory::BaseConstructL(class TDesC16 const &) - ?BaseConstructL@CXdmDocument@@IAEXHABVTDesC16@@@Z @ 27 NONAME ; void CXdmDocument::BaseConstructL(int, class TDesC16 const &) - ?BaseConstructL@CXdmDocument@@IAEXHABVTDesC8@@@Z @ 28 NONAME ; void CXdmDocument::BaseConstructL(int, class TDesC8 const &) - ?BaseConstructL@CXdmDocumentNode@@IAEXABVTDesC16@@@Z @ 29 NONAME ; void CXdmDocumentNode::BaseConstructL(class TDesC16 const &) - ?BaseConstructL@CXdmNodeAttribute@@IAEXABVTDesC16@@@Z @ 30 NONAME ; void CXdmNodeAttribute::BaseConstructL(class TDesC16 const &) - ?CancelUpdate@CXdmEngine@@QAEXPAVCXdmDirectory@@@Z @ 31 NONAME ; void CXdmEngine::CancelUpdate(class CXdmDirectory *) - ?CancelUpdate@CXdmEngine@@QAEXPAVCXdmDocument@@@Z @ 32 NONAME ; void CXdmEngine::CancelUpdate(class CXdmDocument *) - ?CheckFileExistsL@XdmStaticUtils@@SAHAAVRFs@@ABVTDesC16@@@Z @ 33 NONAME ; int XdmStaticUtils::CheckFileExistsL(class RFs &, class TDesC16 const &) - ?ChileNode@CXdmDocumentNode@@QBEPAV1@H@Z @ 34 NONAME ; class CXdmDocumentNode * CXdmDocumentNode::ChileNode(int) const - ?CleanUpDirectoryL@XdmStaticUtils@@SAXAAVRFs@@ABVTDesC16@@@Z @ 35 NONAME ; void XdmStaticUtils::CleanUpDirectoryL(class RFs &, class TDesC16 const &) - ?CopyConstructL@CXdmDocumentNode@@MAEXABV1@0@Z @ 36 NONAME ; void CXdmDocumentNode::CopyConstructL(class CXdmDocumentNode const &, class CXdmDocumentNode const &) - ?CreateAttributeL@CXdmDocumentNode@@QAEPAVCXdmNodeAttribute@@ABVTDesC16@@@Z @ 37 NONAME ; class CXdmNodeAttribute * CXdmDocumentNode::CreateAttributeL(class TDesC16 const &) - ?CreateAttributeL@CXdmDocumentNode@@QAEPAVCXdmNodeAttribute@@XZ @ 38 NONAME ; class CXdmNodeAttribute * CXdmDocumentNode::CreateAttributeL(void) - ?CreateChileNodeL@CXdmDocumentNode@@QAEPAV1@ABVTDesC16@@@Z @ 39 NONAME ; class CXdmDocumentNode * CXdmDocumentNode::CreateChileNodeL(class TDesC16 const &) - ?CreateChileNodeL@CXdmDocumentNode@@QAEPAV1@XZ @ 40 NONAME ; class CXdmDocumentNode * CXdmDocumentNode::CreateChileNodeL(void) - ?CreateDirectoryModelL@CXdmEngine@@QAEPAVCXdmDirectory@@ABVTDesC16@@@Z @ 41 NONAME ; class CXdmDirectory * CXdmEngine::CreateDirectoryModelL(class TDesC16 const &) - ?CreateDocumentModelL@CXdmEngine@@QAEPAVCXdmDocument@@ABVTDesC16@@W4TXdmDocType@@@Z @ 42 NONAME ; class CXdmDocument * CXdmEngine::CreateDocumentModelL(class TDesC16 const &, enum TXdmDocType) - ?CreateDocumentNodeL@CXdmEngine@@QAEPAVCXdmDocumentNode@@XZ @ 43 NONAME ; class CXdmDocumentNode * CXdmEngine::CreateDocumentNodeL(void) - ?Credentials@CXdmProtocolInfo@@QBEABVTXdmCredentials@@XZ @ 44 NONAME ; class TXdmCredentials const & CXdmProtocolInfo::Credentials(void) const - ?DeleteDataL@CXdmDocument@@QAEXPAVCXdmDocumentNode@@@Z @ 45 NONAME ; void CXdmDocument::DeleteDataL(class CXdmDocumentNode *) - ?DeleteDirectoryModelL@CXdmEngine@@QAEXPBVCXdmDirectory@@@Z @ 46 NONAME ; void CXdmEngine::DeleteDirectoryModelL(class CXdmDirectory const *) - ?DeleteDocumentModelL@CXdmEngine@@QAEXPBVCXdmDocument@@@Z @ 47 NONAME ; void CXdmEngine::DeleteDocumentModelL(class CXdmDocument const *) - ?DirectoryCollection@CXdmEngine@@QBEABV?$RPointerArray@VCXdmDirectory@@@@XZ @ 48 NONAME ; class RPointerArray const & CXdmEngine::DirectoryCollection(void) const - ?DocumentCollection@CXdmEngine@@QBEABV?$RPointerArray@VCXdmDocument@@@@XZ @ 49 NONAME ; class RPointerArray const & CXdmEngine::DocumentCollection(void) const - ?DocumentSubsetL@CXdmDocument@@QAEPAVCXdmDocumentNode@@ABVTDesC16@@@Z @ 50 NONAME ; class CXdmDocumentNode * CXdmDocument::DocumentSubsetL(class TDesC16 const &) - ?EightBitNodeNameLC@CXdmDocumentNode@@QBEPAVHBufC8@@XZ @ 51 NONAME ; class HBufC8 * CXdmDocumentNode::EightBitNodeNameLC(void) const - ?EightBitValueLC@CXdmNodeAttribute@@QBEPAVHBufC8@@XZ @ 52 NONAME ; class HBufC8 * CXdmNodeAttribute::EightBitValueLC(void) const - ?ElementDataLC@CXdmDocumentNode@@QBEPAVHBufC8@@XZ @ 53 NONAME ; class HBufC8 * CXdmDocumentNode::ElementDataLC(void) const - ?ElementType@CXdmDocumentNode@@UBE?AW4TXdmElementType@@XZ @ 54 NONAME ; enum TXdmElementType CXdmDocumentNode::ElementType(void) const - ?ElementType@CXdmNodeAttribute@@UBE?AW4TXdmElementType@@XZ @ 55 NONAME ; enum TXdmElementType CXdmNodeAttribute::ElementType(void) const - ?EscapeLeafNodeContentLC@CXdmDocumentNode@@QBEPAVHBufC8@@XZ @ 56 NONAME ; class HBufC8 * CXdmDocumentNode::EscapeLeafNodeContentLC(void) const - ?EscapedValueLC@CXdmNodeAttribute@@QBEPAVHBufC8@@XZ @ 57 NONAME ; class HBufC8 * CXdmNodeAttribute::EscapedValueLC(void) const - ?FetchDataL@CXdmDocument@@QAEXPAVCXdmDocumentNode@@@Z @ 58 NONAME ; void CXdmDocument::FetchDataL(class CXdmDocumentNode *) - ?Find@CXdmDocument@@QBEHABVCXdmDocumentNode@@AAV?$RPointerArray@VCXdmDocumentNode@@@@@Z @ 59 NONAME ; int CXdmDocument::Find(class CXdmDocumentNode const &, class RPointerArray &) const - ?Find@CXdmDocument@@QBEHABVTDesC16@@AAV?$RPointerArray@VCXdmDocumentNode@@@@@Z @ 60 NONAME ; int CXdmDocument::Find(class TDesC16 const &, class RPointerArray &) const - ?Find@CXdmDocument@@QBEHABVTDesC16@@AAV?$RPointerArray@VCXdmDocumentNode@@@@ABV?$RPointerArray@USXdmAttribute16@@@@@Z @ 61 NONAME ; int CXdmDocument::Find(class TDesC16 const &, class RPointerArray &, class RPointerArray const &) const - ?Find@CXdmDocument@@QBEHABVTDesC16@@AAV?$RPointerArray@VCXdmNodeAttribute@@@@@Z @ 62 NONAME ; int CXdmDocument::Find(class TDesC16 const &, class RPointerArray &) const - ?Find@CXdmDocumentNode@@QBEHABV1@AAV?$RPointerArray@VCXdmDocumentNode@@@@@Z @ 63 NONAME ; int CXdmDocumentNode::Find(class CXdmDocumentNode const &, class RPointerArray &) const - ?Find@CXdmDocumentNode@@QBEHABVTDesC16@@AAV?$RPointerArray@VCXdmDocumentNode@@@@@Z @ 64 NONAME ; int CXdmDocumentNode::Find(class TDesC16 const &, class RPointerArray &) const - ?Find@CXdmDocumentNode@@QBEHABVTDesC16@@AAV?$RPointerArray@VCXdmDocumentNode@@@@ABV?$RPointerArray@USXdmAttribute16@@@@@Z @ 65 NONAME ; int CXdmDocumentNode::Find(class TDesC16 const &, class RPointerArray &, class RPointerArray const &) const - ?GenerateFileNameL@XdmStaticUtils@@SAPAVHBufC16@@AAVRFs@@ABVTDesC16@@1@Z @ 66 NONAME ; class HBufC16 * XdmStaticUtils::GenerateFileNameL(class RFs &, class TDesC16 const &, class TDesC16 const &) - ?HasAttribute@CXdmDocumentNode@@QBEHABVTDesC16@@@Z @ 67 NONAME ; int CXdmDocumentNode::HasAttribute(class TDesC16 const &) const - ?InsertChileNodeL@CXdmDocumentNode@@QAEXHPAV1@@Z @ 68 NONAME ; void CXdmDocumentNode::InsertChileNodeL(int, class CXdmDocumentNode *) - ?InsertL@CXdmDocument@@QAEXPAVCXdmDocumentNode@@@Z @ 69 NONAME ; void CXdmDocument::InsertL(class CXdmDocumentNode *) - ?IsCacheEnabled@CXdmProtocolInfo@@QBEHXZ @ 70 NONAME ; int CXdmProtocolInfo::IsCacheEnabled(void) const - ?IsEmptyNode@CXdmDocumentNode@@QBEHXZ @ 71 NONAME ; int CXdmDocumentNode::IsEmptyNode(void) const - ?IsLeafNode@CXdmDocumentNode@@QBEHXZ @ 72 NONAME ; int CXdmDocumentNode::IsLeafNode(void) const - ?IsSecure@CXdmProtocolInfo@@QBEHXZ @ 73 NONAME ; int CXdmProtocolInfo::IsSecure(void) const - ?LeafNodeContent@CXdmDocumentNode@@QBE?AVTPtrC8@@XZ @ 74 NONAME ; class TPtrC8 CXdmDocumentNode::LeafNodeContent(void) const - ?Match@CXdmDocumentNode@@QBEHABV1@@Z @ 75 NONAME ; int CXdmDocumentNode::Match(class CXdmDocumentNode const &) const - ?Match@CXdmDocumentNode@@QBEHABVTDesC16@@ABV?$RPointerArray@USXdmAttribute8@@@@@Z @ 76 NONAME ; int CXdmDocumentNode::Match(class TDesC16 const &, class RPointerArray const &) const - ?Name@CXdmDocument@@QBE?AVTPtrC16@@XZ @ 77 NONAME ; class TPtrC16 CXdmDocument::Name(void) const - ?NewL@CXdmEngine@@SAPAV1@ABVCXdmProtocolInfo@@@Z @ 78 NONAME ; class CXdmEngine * CXdmEngine::NewL(class CXdmProtocolInfo const &) - ?NewL@CXdmLogWriter@@SAPAV1@ABVTDesC16@@@Z @ 79 NONAME ; class CXdmLogWriter * CXdmLogWriter::NewL(class TDesC16 const &) - ?NewL@CXdmProtocolInfo@@SAPAV1@H@Z @ 80 NONAME ; class CXdmProtocolInfo * CXdmProtocolInfo::NewL(int) - ?NewL@CXdmProtocolInfo@@SAPAV1@HHABVTDesC16@@@Z @ 81 NONAME ; class CXdmProtocolInfo * CXdmProtocolInfo::NewL(int, int, class TDesC16 const &) - ?NextNode@CXdmDocumentNode@@QBEPAV1@XZ @ 82 NONAME ; class CXdmDocumentNode * CXdmDocumentNode::NextNode(void) const - ?NodeCount@CXdmDocumentNode@@QBEHXZ @ 83 NONAME ; int CXdmDocumentNode::NodeCount(void) const - ?NodeName@CXdmDocumentNode@@QBE?AVTPtrC16@@XZ @ 84 NONAME ; class TPtrC16 CXdmDocumentNode::NodeName(void) const - ?Parent@CXdmDocumentNode@@QBEPAV1@XZ @ 85 NONAME ; class CXdmDocumentNode * CXdmDocumentNode::Parent(void) const - ?Print@CXdmDocumentNode@@QAEXXZ @ 86 NONAME ; void CXdmDocumentNode::Print(void) - ?ProtocolUid@CXdmProtocolInfo@@QBE?AVTUid@@XZ @ 87 NONAME ; class TUid CXdmProtocolInfo::ProtocolUid(void) const - ?RemoveChileNodeL@CXdmDocumentNode@@QAEXPAV1@@Z @ 88 NONAME ; void CXdmDocumentNode::RemoveChileNodeL(class CXdmDocumentNode *) - ?RemoveFromModelL@CXdmDocument@@QAEXPAVCXdmDocumentNode@@@Z @ 89 NONAME ; void CXdmDocument::RemoveFromModelL(class CXdmDocumentNode *) - ?ReplaceChileNodeL@CXdmDocumentNode@@QAEXPAV1@0@Z @ 90 NONAME ; void CXdmDocumentNode::ReplaceChileNodeL(class CXdmDocumentNode *, class CXdmDocumentNode *) - ?ReplaceInModelL@CXdmDocument@@QAEXPAVCXdmDocumentNode@@0@Z @ 91 NONAME ; void CXdmDocument::ReplaceInModelL(class CXdmDocumentNode *, class CXdmDocumentNode *) - ?ReplaceL@CXdmDocument@@QAEXPAVCXdmDocumentNode@@0@Z @ 92 NONAME ; void CXdmDocument::ReplaceL(class CXdmDocumentNode *, class CXdmDocumentNode *) - ?ReplaceL@CXdmDocument@@QAEXXZ @ 93 NONAME ; void CXdmDocument::ReplaceL(void) - ?ResetSubset@CXdmDocument@@UAEXXZ @ 94 NONAME ; void CXdmDocument::ResetSubset(void) - ?Root@CXdmProtocolInfo@@QBE?AVTPtrC16@@XZ @ 95 NONAME ; class TPtrC16 CXdmProtocolInfo::Root(void) const - ?SetAttributeValueL@CXdmNodeAttribute@@QAEXABVTDesC16@@@Z @ 96 NONAME ; void CXdmNodeAttribute::SetAttributeValueL(class TDesC16 const &) - ?SetAttributeValueL@CXdmNodeAttribute@@QAEXABVTDesC8@@@Z @ 97 NONAME ; void CXdmNodeAttribute::SetAttributeValueL(class TDesC8 const &) - ?SetCacheUsage@CXdmProtocolInfo@@QAEXH@Z @ 98 NONAME ; void CXdmProtocolInfo::SetCacheUsage(int) - ?SetCredentials@CXdmProtocolInfo@@QAEXVTXdmCredentials@@@Z @ 99 NONAME ; void CXdmProtocolInfo::SetCredentials(class TXdmCredentials) - ?SetEmptyNode@CXdmDocumentNode@@QAEXH@Z @ 100 NONAME ; void CXdmDocumentNode::SetEmptyNode(int) - ?SetLeafNode@CXdmDocumentNode@@QAEXH@Z @ 101 NONAME ; void CXdmDocumentNode::SetLeafNode(int) - ?SetLeafNodeContentL@CXdmDocumentNode@@QAEXABVTDesC16@@@Z @ 102 NONAME ; void CXdmDocumentNode::SetLeafNodeContentL(class TDesC16 const &) - ?SetLeafNodeContentL@CXdmDocumentNode@@QAEXABVTDesC8@@@Z @ 103 NONAME ; void CXdmDocumentNode::SetLeafNodeContentL(class TDesC8 const &) - ?SetNameL@CXdmDocumentNode@@QAEXABVTDesC16@@@Z @ 104 NONAME ; void CXdmDocumentNode::SetNameL(class TDesC16 const &) - ?SetNameL@CXdmDocumentNode@@QAEXABVTDesC8@@@Z @ 105 NONAME ; void CXdmDocumentNode::SetNameL(class TDesC8 const &) - ?SetNextNode@CXdmDocumentNode@@QAEXPAV1@@Z @ 106 NONAME ; void CXdmDocumentNode::SetNextNode(class CXdmDocumentNode *) - ?SetSecurity@CXdmProtocolInfo@@QAEXH@Z @ 107 NONAME ; void CXdmProtocolInfo::SetSecurity(int) - ?SettingsID@CXdmProtocolInfo@@QBEHXZ @ 108 NONAME ; int CXdmProtocolInfo::SettingsID(void) const - ?UpdateL@CXdmEngine@@QAEXAAVTRequestStatus@@PAVCXdmDirectory@@W4TDirUpdatePhase@@@Z @ 109 NONAME ; void CXdmEngine::UpdateL(class TRequestStatus &, class CXdmDirectory *, enum TDirUpdatePhase) - ?UpdateL@CXdmEngine@@QAEXPAVCXdmDocument@@AAVTRequestStatus@@@Z @ 110 NONAME ; void CXdmEngine::UpdateL(class CXdmDocument *, class TRequestStatus &) - ?WriteToLog@CXdmLogWriter@@QBEXABVTDesC16@@@Z @ 111 NONAME ; void CXdmLogWriter::WriteToLog(class TDesC16 const &) const - ?WriteToLog@CXdmLogWriter@@QBEXABVTDesC8@@@Z @ 112 NONAME ; void CXdmLogWriter::WriteToLog(class TDesC8 const &) const - ?XdmSettingsLC@CXdmEngine@@SAPAVCDesC16Array@@AAV?$RArray@H@@@Z @ 113 NONAME ; class CDesC16Array * CXdmEngine::XdmSettingsLC(class RArray &) - diff -r 2580314736af -r 2669f8761a99 XDMEngine/Conf/xdmengine.confml Binary file XDMEngine/Conf/xdmengine.confml has changed diff -r 2580314736af -r 2669f8761a99 XDMEngine/Conf/xdmengine_10207453.crml Binary file XDMEngine/Conf/xdmengine_10207453.crml has changed diff -r 2580314736af -r 2669f8761a99 XDMEngine/Conf/xdmengine_10282384.crml Binary file XDMEngine/Conf/xdmengine_10282384.crml has changed diff -r 2580314736af -r 2669f8761a99 XDMEngine/XdmDeviceManagement/inc/xdmdmadapter.h --- a/XDMEngine/XdmDeviceManagement/inc/xdmdmadapter.h Thu Aug 19 10:19:02 2010 +0300 +++ b/XDMEngine/XdmDeviceManagement/inc/xdmdmadapter.h Tue Aug 31 15:35:50 2010 +0300 @@ -61,7 +61,6 @@ _LIT8( KXdmDmUriDotSlash, "./" ); _LIT8( KXdmDmSeparator, "/" ); _LIT8( KXdmDmSipLinkPrefix, "./SIP" ); -_LIT8( KXdmDefaultSettingsName,"DMAdapterIns" ); _LIT( KXdmDefaultId, "-1" ); _LIT( KXdmDmStartBracket, "(" ); _LIT( KXdmDmCloseBracket, ")" ); @@ -71,7 +70,6 @@ // CONSTANTS const TInt KXdmDmLogBufferMaxSize = 2000; -const TInt KXdmMaxUriLength = 256; const TInt KXdmDefaultResultSize = 255; const TInt KXdmDmLevel = 2; const TInt KXdmDmIdTableSize = 16; diff -r 2580314736af -r 2669f8761a99 XDMEngine/XdmDeviceManagement/src/xdmdmadapter.cpp --- a/XDMEngine/XdmDeviceManagement/src/xdmdmadapter.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/XDMEngine/XdmDeviceManagement/src/xdmdmadapter.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -235,18 +235,13 @@ } Callback().SetResultsL( aResultsRef, *currentList, KNullDesC8 ); Callback().SetStatusL( aStatusRef, retValue ); - CleanupStack::PopAndDestroy( names ); // >>> names - CleanupStack::PopAndDestroy(); // >>> settingIds - CleanupStack::PopAndDestroy( currentList ); // >>> currentList + CleanupStack::PopAndDestroy( 3, currentList ); // >>> settingIds, names, currentList return; } // ./OMA_XDM/X if( NSmlDmURI::NumOfURISegs( aUri ) == KXdmDmLevel ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::ChildURIListL(): /OMA_XDM/X") ); -#endif segmentName.Copy( KXdmDmAppId ); currentList->InsertL( currentList->Size(), segmentName ); currentList->InsertL( currentList->Size(), KXdmDmSeparator ); @@ -283,9 +278,6 @@ // ./OMA_XDM/X/ToConRef else if ( Match( lastUriSeg, KXdmDmToConRef ) ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::ChildURIListL(): /OMA_XDM/X/ToConRef") ); -#endif segmentName.Copy( KXdmDmSip ); currentList->InsertL( currentList->Size(), segmentName ); currentList->InsertL( currentList->Size(), KXdmDmSeparator ); @@ -298,9 +290,6 @@ // ./OMA_XDM/X/ToConRef/SIP else if( Match( lastUriSeg, KXdmDmSip ) ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::ChildURIListL(): /OMA_XDM/X/ToConRef/SIP") ); -#endif segmentName.Copy( KXdmDmConRef ); currentList->InsertL( currentList->Size(), segmentName ); currentList->InsertL( currentList->Size(), KXdmDmSeparator ); @@ -309,9 +298,6 @@ // ./OMA_XDM/X/ToConRef/TO-NAPID else if( Match ( lastUriSeg, KXdmDmToNapId ) ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::ChildURIListL(): /OMA_XDM/X/ToConRef/TO-NAPID") ); -#endif segmentName.Copy( KXdmDmConRef ); currentList->InsertL( currentList->Size(), segmentName ); currentList->InsertL( currentList->Size(), KXdmDmSeparator ); @@ -319,9 +305,6 @@ else { // if none of asked nodes found return error. -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::ChildURIListL(): return ENotFound") ); -#endif retValue = CSmlDmAdapter::ENotFound; } @@ -519,9 +502,6 @@ { #ifdef _DEBUG WriteToLog(_L8("CXdmDMAdapter::UpdateLeafObjectL(): begin") ); - WriteToLog(_L8("CXdmDMAdapter::UpdateLeafObjectL() - aUri: %S"), &aUri ); - WriteToLog(_L8("CXdmDMAdapter::UpdateLeafObjectL() - aLUID: %S"), &aLUID ); - WriteToLog(_L8("CXdmDMAdapter::UpdateLeafObjectL() - aObject: %S"), &aObject ); #endif CSmlDmAdapter::TError status = CSmlDmAdapter::EOk; @@ -541,9 +521,6 @@ HBufC* current = NULL; TInt error( KErrNone ); TRAP( error, ( current = TXdmSettingsApi::PropertyL( settingsId, EXdmPropName ) ) ); -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::UpdateLeafObjectL() - EXdmPropName error: %d"), error ); -#endif if ( error == KErrNone ) { TBool same ( EFalse ); @@ -553,20 +530,16 @@ { same = ETrue; } - CleanupStack::PopAndDestroy( current8 ); // >>> current8 - CleanupStack::PopAndDestroy( current ); // >>> current + CleanupStack::PopAndDestroy( 2, current8 ); // >>> current, current8 if ( same ) { Callback().SetStatusL( aStatusRef, status ); - return; // value was same, just return without change + return; } } // if the name is already in use, new name with index is created HBufC* value = CheckExistingNamesLC( aObject ); // << value TRAP( error, TXdmSettingsApi::UpdatePropertyL( settingsId, *value, EXdmPropName ) ); -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::UpdateLeafObjectL() - EXdmPropName error: %d"), error ); -#endif CleanupStack::PopAndDestroy( value ); // >>> value if ( error != KErrNone ) { @@ -674,33 +647,14 @@ TInt id = TXdmSettingsApi::CreateCollectionL( *collection ); HBufC8* luid = IntToDes8LC( id ); // << luid Callback().SetMappingL( aUri, *luid ); - status = CSmlDmAdapter::EOk; + CleanupStack::PopAndDestroy( 2, luid ); // >>> collection, luid + status = CSmlDmAdapter::EOk; #ifdef _DEBUG WriteToLog(_L8("CXdmDMAdapter::AddNodeObjectL(): Settings created id=%d"), id ); #endif - HBufC8* nameUri = HBufC8::NewLC( aUri.Length() + - KXdmDmSeparator().Length() + - KXdmDmName().Length() ); - TPtr8 nameUriPtr = nameUri->Des(); - nameUriPtr.Append( aUri ); - nameUriPtr.Append( KXdmDmSeparator ); - nameUriPtr.Append( KXdmDmName ); - - // Update Node's NAME to default so UI can recognize settings - UpdateLeafObjectL( nameUriPtr, - *luid, - KXdmDefaultSettingsName, - KXdmDmName, - aStatusRef ); - CleanupStack::PopAndDestroy( nameUri ); // >> nameUri - CleanupStack::PopAndDestroy( luid ); // >> luid - CleanupStack::PopAndDestroy( collection ); // >> collection } - else - { - Callback().SetStatusL( aStatusRef, status ); - } - + Callback().SetStatusL( aStatusRef, status ); + #ifdef _DEBUG WriteToLog(_L8("CXdmDMAdapter::AddNodeObjectL(): end") ); #endif @@ -749,9 +703,6 @@ const TDesC8& /*aType*/, const TInt aStatusRef ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::UpdateLeafObjectL( ): begin / end") ); -#endif // Update from stream not used Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError ); } @@ -766,9 +717,6 @@ const TDesC8& /*aType*/, const TInt aStatusRef ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::ExecuteCommandL( ): Not supported") ); -#endif // Not supported Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError ); } @@ -783,9 +731,6 @@ const TDesC8& /*aType*/, const TInt aStatusRef ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::ExecuteCommandL( ): Not supported") ); -#endif // Not supported Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError ); } @@ -801,9 +746,6 @@ const TDesC8& /*aType*/, TInt aStatusRef ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::CopyCommandL( ): Not supported") ); -#endif // Not supported Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError ); } @@ -815,9 +757,6 @@ void CXdmDMAdapter::StartAtomicL() { // Not supported -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::StartAtomicL( ): Not supported") ); -#endif } // ----------------------------------------------------------------------------- @@ -827,9 +766,6 @@ void CXdmDMAdapter::CommitAtomicL() { // Not supported -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::CommitAtomicL( ): Not supported") ); -#endif } // ----------------------------------------------------------------------------- @@ -839,9 +775,6 @@ void CXdmDMAdapter::RollbackAtomicL() { // Not supported -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::RollBackAtomicL( ): Not supported") ); -#endif } // ----------------------------------------------------------------------------- @@ -850,9 +783,6 @@ // TBool CXdmDMAdapter::StreamingSupport( TInt& /*aItemSize*/ ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::StreamingSupport( ): Return EFalse") ); -#endif return EFalse; } @@ -863,9 +793,6 @@ void CXdmDMAdapter::StreamCommittedL() { // Not supported -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::StreamCommittedL( ): Not supported") ); -#endif } // ----------------------------------------------------------------------------- @@ -887,9 +814,6 @@ TXdmSettingsProperty aProperty, CBufBase& aObject ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::GetPropertyL( ) - aSettingsId = %d"), &aSettingsId ); -#endif HBufC* value = NULL; TInt error( KErrNone ); TRAP( error, ( value = TXdmSettingsApi::PropertyL( aSettingsId, aProperty ) ) ); @@ -898,16 +822,9 @@ CleanupStack::PushL( value ); // << value HBufC8* utfValue = ConvertLC( *value ); // << utfValue aObject.InsertL( 0, *utfValue ); - CleanupStack::PopAndDestroy( utfValue ); // >>> utfValue - CleanupStack::PopAndDestroy( value ); // >>> value -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::GetPropertyL( ): return EOk") ); -#endif + CleanupStack::PopAndDestroy( 2, utfValue ); // >>> value, utfValue return CSmlDmAdapter::EOk; } -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::GetPropertyL( ): return ENotFound") ); -#endif return CSmlDmAdapter::ENotFound; } @@ -920,9 +837,6 @@ TXdmSettingsProperty aProperty, const TDesC8& aObject ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::UpdatePropertyL( ): begin") ); -#endif HBufC* value = ConvertLC( aObject ); // << value TInt error( KErrNone ); TRAP( error, TXdmSettingsApi::UpdatePropertyL( aSettingsId, *value, aProperty ) ); @@ -930,14 +844,8 @@ if ( error == KErrNone ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::UpdatePropertyL( ): return EOk") ); -#endif return CSmlDmAdapter::EOk; } -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::UpdatePropertyL( ): return ENotFound") ); -#endif return CSmlDmAdapter::ENotFound; } @@ -953,9 +861,6 @@ MSmlDmDDFObject::TDFFormat aFormat, const TDesC8& aDescription) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::FillNodeInfoL( ): begin") ); -#endif aNode.SetAccessTypesL( aAccTypes ); aNode.SetOccurenceL( aOccurrence ); aNode.SetScopeL( aScope ); @@ -966,9 +871,6 @@ aNode.AddDFTypeMimeTypeL( KXdmDmTextPlain ); } aNode.SetDescriptionL( aDescription ); -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::FillNodeInfoL( ): end") ); -#endif } @@ -978,9 +880,6 @@ // TInt CXdmDMAdapter::IapIdFromURIL( const TDesC8& aUri ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::IapIdFromUriL( ): begin") ); -#endif TInt id( KErrNotFound ); MSmlDmAdapter::TError status( MSmlDmAdapter::EError ); CBufBase* result = CBufFlat::NewL(1); @@ -1002,9 +901,6 @@ } CleanupStack::PopAndDestroy( result ); // >>> result -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::IapIdFromUriL( ): end") ); -#endif return id; } @@ -1014,9 +910,6 @@ // HBufC8* CXdmDMAdapter::URIFromIapIdL( TInt aId ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::UriFromIapIdL( ): begin") ); -#endif CBufBase *allIds = CBufFlat::NewL(KXdmDmIdTableSize); CleanupStack::PushL( allIds ); // << allIds MSmlDmAdapter::TError status; @@ -1043,7 +936,7 @@ else { TPtrC8 uriSeg8Ptr = allIds->Ptr(segStart).Mid( 0, index ); - uriSeg = uriSeg8Ptr.AllocLC(); // << uriSeg + uriSeg = uriSeg8Ptr.AllocLC(); // << uriSeg8Ptr } // Construct the uri HBufC8* uri = HBufC8::NewLC( KXdmDmAP().Length() @@ -1064,25 +957,17 @@ if ( id == aId ) { // The correct one found - CleanupStack::Pop(); // >>> uri - CleanupStack::PopAndDestroy( uriSeg ); // >>> uriSeg - CleanupStack::PopAndDestroy( allIds ); // >>> allIds -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::UriFromIapIdL( ): return uri") ); -#endif + CleanupStack::Pop(); // >>> uri + CleanupStack::PopAndDestroy( 2, allIds ); // >>> uriSeg, allIds return uri; } } // This was wrong, delete and get the next one - CleanupStack::PopAndDestroy( uri ); // >>> uri - CleanupStack::PopAndDestroy( uriSeg ); // >>> uriSeg + CleanupStack::PopAndDestroy( 2, uriSeg ); // >>> uri, uriSeg segStart += index + 1; } } CleanupStack::PopAndDestroy( allIds ); // >>> allIds -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::UriFromIapIdL( ): return NULL") ); -#endif return NULL; } // ----------------------------------------------------------------------------- @@ -1091,9 +976,7 @@ // TInt CXdmDMAdapter::GetSipIdL( const TDesC8& aUri ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::GetSipIdL( ): begin") ); -#endif + CSmlDmAdapter::TError status = EOk; CBufBase* result = CBufFlat::NewL(1); CleanupStack::PushL( result ); // << result @@ -1108,16 +991,10 @@ TPtrC8 hexIndex = uri.Right( KXdmDmHexLength ); TLex8 lexer( hexIndex ); lexer.Val( id, EHex ); - CleanupStack::PopAndDestroy( result ); // >>> result -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::GetSipIdL( ): return id: %d"), id ); -#endif + CleanupStack::PopAndDestroy( result ); // >>> result return id; } - CleanupStack::PopAndDestroy( result ); // >>> result -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::GetSipIdL( ): return KErrNotFound") ); -#endif + CleanupStack::PopAndDestroy( result ); // >>> result return KErrNotFound; } // ----------------------------------------------------------------------------- @@ -1127,9 +1004,7 @@ CSmlDmAdapter::TError CXdmDMAdapter::FetchSipConRefL( TInt aSettingsId, CBufBase& aObject) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::FetchSipConRefL( ): begin") ); -#endif + CSmlDmAdapter::TError status = CSmlDmAdapter::EOk; TInt sipSettingsId( KErrNotFound ); @@ -1209,9 +1084,7 @@ { status = CSmlDmAdapter::ENotFound; } -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::FetchSipConRefL( ): return status") ); -#endif + return status; } @@ -1221,16 +1094,10 @@ // TInt CXdmDMAdapter::FindSettingsIdL( const TDesC8& aLUID, const TDesC8& aUri ) { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::FindSettingsIdL( ): begin") ); -#endif TInt settingsId(0); if ( aLUID.Length() > 0 ) { settingsId = DesToInt( aLUID ); -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::FindSettingsIdL( ): return settingsId: %d "), settingsId ); -#endif return settingsId; } else @@ -1240,9 +1107,6 @@ HBufC8* luid = IntToDes8LC( settingsId ); // << luid Callback().SetMappingL( aUri, *luid ); CleanupStack::PopAndDestroy( luid ); // luid -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::FindSettingsIdL( ): return settingsId: %d "), settingsId ); -#endif return settingsId; } } @@ -1252,10 +1116,7 @@ // ----------------------------------------------------------------------------- // HBufC* CXdmDMAdapter::CheckExistingNamesLC( const TDesC8& aName ) - { -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::CheckExistingNamesLC( ): begin") ); -#endif + { TBool ready( EFalse ); RArray settingIds; CleanupClosePushL( settingIds ); // << settingIds @@ -1286,12 +1147,8 @@ ready = ETrue; } } - CleanupStack::PopAndDestroy( settingNames ); // >>> settingNames - CleanupStack::PopAndDestroy(); // >>> settingIds + CleanupStack::PopAndDestroy( 2 ); // >>> settingNames, settingIds HBufC* newName = tempName.AllocLC(); // << newName -#ifdef _DEBUG - WriteToLog(_L8("CXdmDMAdapter::CheckExistingNamesLC( ): end") ); -#endif return newName; } diff -r 2580314736af -r 2669f8761a99 XDMEngine/XdmProvisioning/inc/xdmprovitem.h --- a/XDMEngine/XdmProvisioning/inc/xdmprovitem.h Thu Aug 19 10:19:02 2010 +0300 +++ b/XDMEngine/XdmProvisioning/inc/xdmprovitem.h Tue Aug 31 15:35:50 2010 +0300 @@ -137,7 +137,7 @@ * @param aName Name of the parameter * @param aValue Value of the parameter */ - void DetermineNamedParameterL( const TDesC& aName, + void DetermineNamedParameter( const TDesC& aName, const TDesC& aValue ); /** diff -r 2580314736af -r 2669f8761a99 XDMEngine/XdmProvisioning/src/xdmprovadapter.cpp --- a/XDMEngine/XdmProvisioning/src/xdmprovadapter.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/XDMEngine/XdmProvisioning/src/xdmprovadapter.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -28,8 +28,6 @@ #include "xdmprovitem.h" #include "xdmprovadapter.h" -// for CleanupResetAndDestroyPushL -#include #ifdef _DEBUG #include @@ -307,9 +305,6 @@ #ifdef _DEBUG WriteToLog( _L8( "CXdmProvAdapter::GetSavingInfoL" ) ); #endif - - CleanupResetAndDestroyPushL( aSavingInfo ); - if ( aIndex < iProvItems.Count() - 1 ) { #ifdef _DEBUG @@ -344,9 +339,7 @@ CleanupStack::Pop( idBuf ); // >> idBuf idBuf = NULL; } - - CleanupStack::Pop( &aSavingInfo ); - + #ifdef _DEBUG WriteToLog( _L8( "CXdmProvAdapter::GetSavingInfoL done" ) ); #endif diff -r 2580314736af -r 2669f8761a99 XDMEngine/XdmProvisioning/src/xdmprovitem.cpp --- a/XDMEngine/XdmProvisioning/src/xdmprovitem.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/XDMEngine/XdmProvisioning/src/xdmprovitem.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -270,7 +270,7 @@ case EWPParameterToAppRef: { - iToAppReferences.AppendL( aParameter.Value() ); + iToAppReferences.Append( aParameter.Value() ); #ifdef _DEBUG CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterToAppRef" ) ); #endif @@ -332,7 +332,7 @@ break; default: { - DetermineNamedParameterL( aParameter.Name(), aParameter.Value() ); + DetermineNamedParameter( aParameter.Name(), aParameter.Value() ); } break; } @@ -342,7 +342,7 @@ // CXdmProvItem::DetermineNamedParameter // ----------------------------------------------------------------------------- // -void CXdmProvItem::DetermineNamedParameterL( const TDesC& aName, const TDesC& aValue ) +void CXdmProvItem::DetermineNamedParameter( const TDesC& aName, const TDesC& aValue ) { if ( !aName.Compare( KXdmProvAppRef ) ) { @@ -350,7 +350,7 @@ } else if ( !aName.Compare( KXdmProvToAppRef ) ) { - iToAppReferences.AppendL( aValue ); + iToAppReferences.Append( aValue ); } } // ----------------------------------------------------------------------------- diff -r 2580314736af -r 2669f8761a99 XDMEngine/XdmSettingsApi/src/XdmSettingsApi.cpp --- a/XDMEngine/XdmSettingsApi/src/XdmSettingsApi.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/XDMEngine/XdmSettingsApi/src/XdmSettingsApi.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -31,11 +31,11 @@ EXPORT_C TInt TXdmSettingsApi::CreateCollectionL( const CXdmSettingsCollection& aCollection ) { #ifdef _DEBUG - WriteToLog( _L8( "TXdmSettingsApi::CreateCollectionL() - begin" ) ); + WriteToLog( _L8( "TXdmSettingsApi::CreateCollectionL()" ) ); #endif TInt error = KErrArgument; CRepository* repository = CRepository::NewL( KCRUidXdmEngine ); - CleanupStack::PushL( repository ); // CS: 1 + CleanupStack::PushL( repository ); TInt row = LastRow( repository ); TInt count = aCollection.Count(); __ASSERT_DEBUG( count > 0, User::Leave( KErrArgument ) ); @@ -364,10 +364,8 @@ EXPORT_C CDesCArray* TXdmSettingsApi::CollectionNamesLC( RArray& aSettingIds ) { #ifdef _DEBUG - WriteToLog( _L8( "TXdmSettingsApi::CollectionNamesLC() - begin" ) ); + WriteToLog( _L8( "TXdmSettingsApi::CollectionNamesL()" ) ); #endif - TInt nameError = KErrNone; - TInt idError = KErrNone; TInt error = KErrNone; CDesCArrayFlat* propertySet = new ( ELeave ) CDesCArrayFlat( 10 ); CleanupStack::PushL( propertySet ); @@ -392,9 +390,9 @@ identifier.Zero(); name = HBufC::NewLC( NCentralRepositoryConstants::KMaxUnicodeStringLength ); TPtr desc( name->Des()); - nameError = repository->Get( nameKeys[i], desc ); - idError = repository->Get( idKeys[i], identifier ); - if( idError == KErrNone && desc.Length() > 0 && identifier.Length() > 0 ) + error = repository->Get( nameKeys[i], desc ); + error = repository->Get( idKeys[i], identifier ); + if( error == KErrNone && desc.Length() > 0 && identifier.Length() > 0 ) { #ifdef _DEBUG HBufC8* eightName = HBufC8::NewLC( desc.Length() ); @@ -406,21 +404,18 @@ propertySet->AppendL( desc ); TLex id( identifier ); error = id.Val( numId ); - aSettingIds.AppendL( error == KErrNone ? numId : error ); + aSettingIds.Append( error == KErrNone ? numId : error ); } else { #ifdef _DEBUG - WriteToLog( _L8( " Fetching of the name no. %d failed with idError:%d & nameError:%d" ), i, idError, nameError ); + WriteToLog( _L8( " Fetching of the name no. %d failed with: %d" ), i, error ); #endif } CleanupStack::PopAndDestroy(); //name } } CleanupStack::PopAndDestroy( 3 ); //idKeys, nameKeys, repository -#ifdef _DEBUG - WriteToLog( _L8( "TXdmSettingsApi::CollectionNamesLC() - end" ) ); -#endif return propertySet; } @@ -523,7 +518,6 @@ User::Leave( error ); } CleanupStack::PopAndDestroy( 2 ); //keys, repository - WriteToLog( _L8( " Return: %S" ), buf ); return buf; } diff -r 2580314736af -r 2669f8761a99 XDMEngine/cenrep/backup_registration.xml --- a/XDMEngine/cenrep/backup_registration.xml Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ - - - - - diff -r 2580314736af -r 2669f8761a99 XDMEngine/cenrep/keys_xdmengine.xls Binary file XDMEngine/cenrep/keys_xdmengine.xls has changed diff -r 2580314736af -r 2669f8761a99 XDMEngine/eabi/XdmEngineU.DEF --- a/XDMEngine/eabi/XdmEngineU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -EXPORTS - _ZN10CXdmEngine12CancelUpdateEP12CXdmDocument @ 1 NONAME - _ZN10CXdmEngine12CancelUpdateEP13CXdmDirectory @ 2 NONAME - _ZN10CXdmEngine13XdmSettingsLCER6RArrayIiE @ 3 NONAME - _ZN10CXdmEngine19CreateDocumentNodeLEv @ 4 NONAME - _ZN10CXdmEngine20CreateDocumentModelLERK7TDesC1611TXdmDocType @ 5 NONAME - _ZN10CXdmEngine20DeleteDocumentModelLEPK12CXdmDocument @ 6 NONAME - _ZN10CXdmEngine21CreateDirectoryModelLERK7TDesC16 @ 7 NONAME - _ZN10CXdmEngine21DeleteDirectoryModelLEPK13CXdmDirectory @ 8 NONAME - _ZN10CXdmEngine4NewLERK16CXdmProtocolInfo @ 9 NONAME - _ZN10CXdmEngine7UpdateLEP12CXdmDocumentR14TRequestStatus @ 10 NONAME - _ZN10CXdmEngine7UpdateLER14TRequestStatusP13CXdmDirectory15TDirUpdatePhase @ 11 NONAME - _ZN12CXdmDocument10FetchDataLEP16CXdmDocumentNode @ 12 NONAME - _ZN12CXdmDocument11DeleteDataLEP16CXdmDocumentNode @ 13 NONAME - _ZN12CXdmDocument11ResetSubsetEv @ 14 NONAME - _ZN12CXdmDocument14AppendToModelLEP16CXdmDocumentNodeS1_ @ 15 NONAME - _ZN12CXdmDocument14BaseConstructLEiRK6TDesC8 @ 16 NONAME - _ZN12CXdmDocument14BaseConstructLEiRK7TDesC16 @ 17 NONAME - _ZN12CXdmDocument15DocumentSubsetLERK7TDesC16 @ 18 NONAME - _ZN12CXdmDocument15ReplaceInModelLEP16CXdmDocumentNodeS1_ @ 19 NONAME - _ZN12CXdmDocument16RemoveFromModelLEP16CXdmDocumentNode @ 20 NONAME - _ZN12CXdmDocument7AppendLEP16CXdmDocumentNode @ 21 NONAME - _ZN12CXdmDocument7InsertLEP16CXdmDocumentNode @ 22 NONAME - _ZN12CXdmDocument8ReplaceLEP16CXdmDocumentNodeS1_ @ 23 NONAME - _ZN12CXdmDocument8ReplaceLEv @ 24 NONAME - _ZN12CXdmDocumentC2ER10CXdmEngine @ 25 NONAME - _ZN12CXdmDocumentD0Ev @ 26 NONAME - _ZN12CXdmDocumentD1Ev @ 27 NONAME - _ZN12CXdmDocumentD2Ev @ 28 NONAME - _ZN13CXdmDirectory14BaseConstructLERK7TDesC16 @ 29 NONAME - _ZN13CXdmDirectoryC2ER10CXdmEngine @ 30 NONAME - _ZN13CXdmDirectoryD0Ev @ 31 NONAME - _ZN13CXdmDirectoryD1Ev @ 32 NONAME - _ZN13CXdmDirectoryD2Ev @ 33 NONAME - _ZN13CXdmLogWriter4NewLERK7TDesC16 @ 34 NONAME - _ZN14XdmStaticUtils16CheckFileExistsLER3RFsRK7TDesC16 @ 35 NONAME - _ZN14XdmStaticUtils17CleanUpDirectoryLER3RFsRK7TDesC16 @ 36 NONAME - _ZN14XdmStaticUtils17GenerateFileNameLER3RFsRK7TDesC16S4_ @ 37 NONAME - _ZN15TXdmCredentialsC1ERK7TDesC16S2_ @ 38 NONAME - _ZN15TXdmCredentialsC1Ev @ 39 NONAME - _ZN15TXdmCredentialsC2ERK7TDesC16S2_ @ 40 NONAME - _ZN15TXdmCredentialsC2Ev @ 41 NONAME - _ZN16CXdmDocumentNode11SetLeafNodeEi @ 42 NONAME - _ZN16CXdmDocumentNode11SetNextNodeEPS_ @ 43 NONAME - _ZN16CXdmDocumentNode12SetEmptyNodeEi @ 44 NONAME - _ZN16CXdmDocumentNode14BaseConstructLERK7TDesC16 @ 45 NONAME - _ZN16CXdmDocumentNode14CopyConstructLERKS_S1_ @ 46 NONAME - _ZN16CXdmDocumentNode16AppendChileNodeLEPS_ @ 47 NONAME - _ZN16CXdmDocumentNode16CreateAttributeLERK7TDesC16 @ 48 NONAME - _ZN16CXdmDocumentNode16CreateAttributeLEv @ 49 NONAME - _ZN16CXdmDocumentNode16CreateChileNodeLERK7TDesC16 @ 50 NONAME - _ZN16CXdmDocumentNode16CreateChileNodeLEv @ 51 NONAME - _ZN16CXdmDocumentNode16InsertChileNodeLEiPS_ @ 52 NONAME - _ZN16CXdmDocumentNode16RemoveChileNodeLEPS_ @ 53 NONAME - _ZN16CXdmDocumentNode17ReplaceChileNodeLEPS_S0_ @ 54 NONAME - _ZN16CXdmDocumentNode19SetLeafNodeContentLERK6TDesC8 @ 55 NONAME - _ZN16CXdmDocumentNode19SetLeafNodeContentLERK7TDesC16 @ 56 NONAME - _ZN16CXdmDocumentNode5PrintEv @ 57 NONAME - _ZN16CXdmDocumentNode8SetNameLERK6TDesC8 @ 58 NONAME - _ZN16CXdmDocumentNode8SetNameLERK7TDesC16 @ 59 NONAME - _ZN16CXdmDocumentNodeC2ER10CXdmEngineR15MXdmNodeFactory @ 60 NONAME - _ZN16CXdmDocumentNodeC2ER10CXdmEngineR15MXdmNodeFactoryPS_ @ 61 NONAME - _ZN16CXdmDocumentNodeC2EiR10CXdmEngineR15MXdmNodeFactoryPS_ @ 62 NONAME - _ZN16CXdmDocumentNodeD0Ev @ 63 NONAME - _ZN16CXdmDocumentNodeD1Ev @ 64 NONAME - _ZN16CXdmDocumentNodeD2Ev @ 65 NONAME - _ZN16CXdmProtocolInfo11SetSecurityEi @ 66 NONAME - _ZN16CXdmProtocolInfo13SetCacheUsageEi @ 67 NONAME - _ZN16CXdmProtocolInfo14SetCredentialsE15TXdmCredentials @ 68 NONAME - _ZN16CXdmProtocolInfo4NewLEi @ 69 NONAME - _ZN16CXdmProtocolInfo4NewLEiiRK7TDesC16 @ 70 NONAME - _ZN16CXdmProtocolInfoD0Ev @ 71 NONAME - _ZN16CXdmProtocolInfoD1Ev @ 72 NONAME - _ZN16CXdmProtocolInfoD2Ev @ 73 NONAME - _ZN17CXdmNodeAttribute14BaseConstructLERK7TDesC16 @ 74 NONAME - _ZN17CXdmNodeAttribute18SetAttributeValueLERK6TDesC8 @ 75 NONAME - _ZN17CXdmNodeAttribute18SetAttributeValueLERK7TDesC16 @ 76 NONAME - _ZN17CXdmNodeAttributeC2ER10CXdmEngineR15MXdmNodeFactory @ 77 NONAME - _ZN17CXdmNodeAttributeC2ER10CXdmEngineR15MXdmNodeFactoryP16CXdmDocumentNode @ 78 NONAME - _ZN17CXdmNodeAttributeD0Ev @ 79 NONAME - _ZN17CXdmNodeAttributeD1Ev @ 80 NONAME - _ZN17CXdmNodeAttributeD2Ev @ 81 NONAME - _ZNK10CXdmEngine18DocumentCollectionEv @ 82 NONAME - _ZNK10CXdmEngine19DirectoryCollectionEv @ 83 NONAME - _ZNK12CXdmDocument4FindERK16CXdmDocumentNodeR13RPointerArrayIS0_E @ 84 NONAME - _ZNK12CXdmDocument4FindERK7TDesC16R13RPointerArrayI16CXdmDocumentNodeE @ 85 NONAME - _ZNK12CXdmDocument4FindERK7TDesC16R13RPointerArrayI16CXdmDocumentNodeERKS3_I15SXdmAttribute16E @ 86 NONAME - _ZNK12CXdmDocument4FindERK7TDesC16R13RPointerArrayI17CXdmNodeAttributeE @ 87 NONAME - _ZNK12CXdmDocument4NameEv @ 88 NONAME - _ZNK12CXdmDocumenteqERS_ @ 89 NONAME - _ZNK13CXdmLogWriter10WriteToLogERK6TDesC8 @ 90 NONAME - _ZNK13CXdmLogWriter10WriteToLogERK7TDesC16 @ 91 NONAME - _ZNK16CXdmDocumentNode10IsLeafNodeEv @ 92 NONAME - _ZNK16CXdmDocumentNode11ElementTypeEv @ 93 NONAME - _ZNK16CXdmDocumentNode11IsEmptyNodeEv @ 94 NONAME - _ZNK16CXdmDocumentNode12HasAttributeERK7TDesC16 @ 95 NONAME - _ZNK16CXdmDocumentNode13ElementDataLCEv @ 96 NONAME - _ZNK16CXdmDocumentNode14AttributeCountEv @ 97 NONAME - _ZNK16CXdmDocumentNode15LeafNodeContentEv @ 98 NONAME - _ZNK16CXdmDocumentNode18EightBitNodeNameLCEv @ 99 NONAME - _ZNK16CXdmDocumentNode23EscapeLeafNodeContentLCEv @ 100 NONAME - _ZNK16CXdmDocumentNode4FindERK7TDesC16R13RPointerArrayIS_E @ 101 NONAME - _ZNK16CXdmDocumentNode4FindERK7TDesC16R13RPointerArrayIS_ERKS3_I15SXdmAttribute16E @ 102 NONAME - _ZNK16CXdmDocumentNode4FindERKS_R13RPointerArrayIS_E @ 103 NONAME - _ZNK16CXdmDocumentNode5MatchERK7TDesC16RK13RPointerArrayI14SXdmAttribute8E @ 104 NONAME - _ZNK16CXdmDocumentNode5MatchERKS_ @ 105 NONAME - _ZNK16CXdmDocumentNode6ParentEv @ 106 NONAME - _ZNK16CXdmDocumentNode8NextNodeEv @ 107 NONAME - _ZNK16CXdmDocumentNode8NodeNameEv @ 108 NONAME - _ZNK16CXdmDocumentNode9AttributeERK7TDesC16 @ 109 NONAME - _ZNK16CXdmDocumentNode9AttributeEi @ 110 NONAME - _ZNK16CXdmDocumentNode9ChileNodeEi @ 111 NONAME - _ZNK16CXdmDocumentNode9NodeCountEv @ 112 NONAME - _ZNK16CXdmDocumentNodeeqERKS_ @ 113 NONAME - _ZNK16CXdmProtocolInfo10SettingsIDEv @ 114 NONAME - _ZNK16CXdmProtocolInfo11AccessPointEv @ 115 NONAME - _ZNK16CXdmProtocolInfo11CredentialsEv @ 116 NONAME - _ZNK16CXdmProtocolInfo11ProtocolUidEv @ 117 NONAME - _ZNK16CXdmProtocolInfo14IsCacheEnabledEv @ 118 NONAME - _ZNK16CXdmProtocolInfo4RootEv @ 119 NONAME - _ZNK16CXdmProtocolInfo8IsSecureEv @ 120 NONAME - _ZNK17CXdmNodeAttribute11ElementTypeEv @ 121 NONAME - _ZNK17CXdmNodeAttribute14AttributeValueEv @ 122 NONAME - _ZNK17CXdmNodeAttribute14EscapedValueLCEv @ 123 NONAME - _ZNK17CXdmNodeAttribute15EightBitValueLCEv @ 124 NONAME - _ZTI10CXdmEngine @ 125 NONAME ; ## - _ZTI12CXdmDocument @ 126 NONAME ; ## - _ZTI13CXdmDirectory @ 127 NONAME ; ## - _ZTI13CXdmLogWriter @ 128 NONAME ; ## - _ZTI16CXdmDocumentNode @ 129 NONAME ; ## - _ZTI16CXdmProtocolInfo @ 130 NONAME ; ## - _ZTI17CXdmNodeAttribute @ 131 NONAME ; ## - _ZTV10CXdmEngine @ 132 NONAME ; ## - _ZTV12CXdmDocument @ 133 NONAME ; ## - _ZTV13CXdmDirectory @ 134 NONAME ; ## - _ZTV13CXdmLogWriter @ 135 NONAME ; ## - _ZTV16CXdmDocumentNode @ 136 NONAME ; ## - _ZTV16CXdmProtocolInfo @ 137 NONAME ; ## - _ZTV17CXdmNodeAttribute @ 138 NONAME ; ## - diff -r 2580314736af -r 2669f8761a99 XDMEngine/group/XdmEngine.mmp --- a/XDMEngine/group/XdmEngine.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* -* Copyright (c) 2005 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: XDM Engine -* -*/ - - - -#include - -TARGET xdmengine.dll -UID 0x1000008d 0x1020740E -CAPABILITY CAP_GENERAL_DLL -VENDORID VID_DEFAULT -TARGETTYPE DLL - -SOURCEPATH ../src - -SOURCE XdmEngine.cpp -SOURCE XdmDocument.cpp -SOURCE XdmDirectory.cpp -SOURCE XdmLogWriter.cpp -SOURCE XdmStaticUtils.cpp -SOURCE XdmCredentials.cpp -SOURCE XdmProtocolInfo.cpp -SOURCE XdmDocumentNode.cpp -SOURCE XdmNodeAttribute.cpp - -USERINCLUDE ../inc -USERINCLUDE ../../pressrv_dom/xdm_api/inc -//USERINCLUDE ../XdmSettingsApi/inc - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom - -LIBRARY ecom.lib -LIBRARY efsrv.lib -LIBRARY euser.lib -LIBRARY charconv.lib -LIBRARY flogger.lib -LIBRARY xdmsettingsapi.lib -LIBRARY inetprotutil.lib - - -#if defined( ARMCC ) -DEFFILE ../eabi/ -#elif defined ( WINSCW ) -deffile ../BWINSCW/ -#elif defined (WINS ) -deffile ../bwins/ -#endif - - diff -r 2580314736af -r 2669f8761a99 XDMEngine/group/bld.inf --- a/XDMEngine/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ b/XDMEngine/group/bld.inf Tue Aug 31 15:35:50 2010 +0300 @@ -28,29 +28,13 @@ PRJ_EXPORTS //-------------------- -../Conf/xdmengine.confml MW_LAYER_CONFML(xdmengine.confml) -../Conf/xdmengine_10207453.crml MW_LAYER_CRML(xdmengine_10207453.crml) -../Conf/xdmengine_10282384.crml MW_LAYER_CRML(xdmengine_10282384.crml) - -//For _DEBUG -../inc/XdmLogWriter.h |../../inc/xdmlogwriter.h - -//Backup registry -../cenrep/backup_registration.xml z:/private/10207421/backup_registration.xml - -// IBYs -../rom/XdmEngine.iby CORE_MW_LAYER_IBY_EXPORT_PATH(xdmengine.iby) -../rom/XdmEngineResources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(xdmengineresources.iby) - // LOC (note: This would be better in XdmProvisioning's bld.inf, but since it is not used, it is here.) ../XdmProvisioning/loc/xdmprovisioningadapter.loc MW_LAYER_LOC_EXPORT_PATH(xdmprovisioningadapter.loc) - //-------------------- PRJ_MMPFILES //-------------------- ../XdmSettingsApi/group/XdmSettingsApi.mmp -XdmEngine.mmp ../XdmProvisioning/group/xdmprovisioning.mmp ../XdmDeviceManagement/group/xdmdevicemanagementadapter.mmp diff -r 2580314736af -r 2669f8761a99 XDMEngine/group/bld_engine.inf --- a/XDMEngine/group/bld_engine.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2005 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: XDM Engine build file -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- - -XdmEngine.mmp diff -r 2580314736af -r 2669f8761a99 XDMEngine/inc/XdmEngineDefines.h --- a/XDMEngine/inc/XdmEngineDefines.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2004 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: XDM Engine defines -* -*/ - - - - -#ifndef __XdmENGINEDEFINES__ -#define __XdmENGINEDEFINES__ - -#include - -//General defines -_LIT8( KGeneralEqualsAndQuotes, "=\"" ); -_LIT8( KGeneralQuotes, "\"" ); - -//Xdm specific defines -const TInt KXdmPathSeparator = 47; - -//XCAP specific defines -_LIT8( KXCAPEquality, "=" ); -_LIT8( KXCAPNodeSeparator, "~~" ); -_LIT8( KXCAPPathSeparator, "/" ); -_LIT8( KXCAPAttributeIdentifier, "@" ); - -//HTTP specific defines -_LIT8( KHTTPAngleBracketOpen, "%5b"); -_LIT8( KHTTPAngleBracketClose, "%5d"); -_LIT8( KHTTPAngleQuotationMark, "%22"); - -//XML specific defines -_LIT8( KXmlSpace, " "); -#endif //__XdmENGINEDEFINES__ - -// End of File diff -r 2580314736af -r 2669f8761a99 XDMEngine/inc/XdmLogWriter.h --- a/XDMEngine/inc/XdmLogWriter.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* -* Copyright (c) 2007 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: XDM Engine log writer -* -*/ - - - - -#ifndef __XDMLOGWRITER__ -#define __XDMLOGWRITER__ - -#include - -_LIT( KXdmLogDir, "XDM" ); -_LIT( KXdmLogFileExt, ".txt" ); -_LIT( KXdmLogRoot, "C:\\logs\\" ); - -//Determines how many log file instances are -//retained until the directory is cleaned up -/* E.g. XdmEngine1.txt, XdmEngine2.txt ... XdmEngine10.txt */ -const TInt KMaxLogFiles = 10; - -/* Default size of the log buffer */ -const TInt KLogBufferMaxSize = 2000; - -// CLASS DECLARATION -class CXdmLogWriter : public CBase - { - public: - - /** - * Symbian OS constructor - * - * @param TDesC& The log file name - * @return CXdmLogWriter* A log writer instance - */ - IMPORT_C static CXdmLogWriter* NewL( const TDesC& aLogName ); - - /** - * Write a log string. - * - * @param TDesC& Log string in 16-bit - * @return void - */ - IMPORT_C void WriteToLog( const TDesC& aLogLine ) const; - - /** - * Write a log string. - * - * @param TDesC8& Log string in 8-bit - * @return void - */ - IMPORT_C void WriteToLog( const TDesC8& aLogLine ) const; - - /** - * Destructor - */ - virtual ~CXdmLogWriter(); - - private: - - /** - * C++ constructor is private - */ - CXdmLogWriter(); - - /** - * Symbian OS second-phase constructor - * @param TDesC& Name of the log file to write to - * @return void - */ - void ConstructL( const TDesC& aLogName ); - - private: //Data - - HBufC* iLogFileName; - - }; - -#endif //__XDMLOGWRITER__ - -// End of File diff -r 2580314736af -r 2669f8761a99 XDMEngine/inc/XdmStaticUtils.h --- a/XDMEngine/inc/XdmStaticUtils.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* -* Copyright (c) 2007 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: XDM Engine static utils -* -*/ - - - - -#ifndef __XDMSTATICUTILS__ -#define __XDMSTATICUTILS__ - -#include - -const TInt KBackSlash = 92; - -class RFs; - -// CLASS DECLARATION -class XdmStaticUtils - - { - public: - - /** - * Check whether a file already exists. - * - * @param RFs& An opened file session - * @param TDesC& The file name to check - * @return TBool Is the file already there - */ - IMPORT_C static TBool CheckFileExistsL( RFs& aFileSession, const TDesC& aFileName ); - - /** - * Generate a new file name unique in the context - * of the folder in which it resides - * - * @param RFs& An opened file session - * @param TDesC& The file name to check - * @param TDesC& The extension in the filename - * @return HBufC* The generated filename - */ - IMPORT_C static HBufC* GenerateFileNameL( RFs& aFileSession, const TDesC& aFileName, - const TDesC& aExtension ); - - /** - * Clean up a directory - * - * @param RFs& An opened file session - * @param TDesC& The directory to clean up - * @return void - */ - IMPORT_C static void CleanUpDirectoryL( RFs& aFileSession, const TDesC& aDirectory ); - - }; - -#endif //__XDMCREDENTIALS__ - -// End of File diff -r 2580314736af -r 2669f8761a99 XDMEngine/rom/XdmEngine.iby --- a/XDMEngine/rom/XdmEngine.iby Thu Aug 19 10:19:02 2010 +0300 +++ b/XDMEngine/rom/XdmEngine.iby Tue Aug 31 15:35:50 2010 +0300 @@ -22,9 +22,7 @@ #define __XDMENGINE_IBY__ #ifdef __XDM - file=ABI_DIR/BUILD_DIR/XdmEngine.dll SHARED_LIB_DIR/XdmEngine.dll - file=ABI_DIR/BUILD_DIR/XdmXmlParser.dll SHARED_LIB_DIR/XdmXmlParser.dll - file=ABI_DIR/BUILD_DIR/XdmSettingsApi.dll SHARED_LIB_DIR/XdmSettingsApi.dll + file=ABI_DIR\BUILD_DIR\XdmSettingsApi.dll SHARED_LIB_DIR\XdmSettingsApi.dll ECOM_PLUGIN( XdmDeviceManagementAdapter.dll, 10275112.rsc) ECOM_PLUGIN( XdmProvisioning.dll, 1028237A.rsc) #endif //__XDM diff -r 2580314736af -r 2669f8761a99 XDMEngine/rom/XdmEngineResources.iby --- a/XDMEngine/rom/XdmEngineResources.iby Thu Aug 19 10:19:02 2010 +0300 +++ b/XDMEngine/rom/XdmEngineResources.iby Tue Aug 31 15:35:50 2010 +0300 @@ -23,7 +23,7 @@ // // Settings provisioning adapter plugin resources // -data=DATAZ_/RESOURCE_FILES_DIR/XdmProvisioningTexts.RSC RESOURCE_FILES_DIR/XdmProvisioningTexts.RSC +data=DATAZ_\RESOURCE_FILES_DIR\XdmProvisioningTexts.RSC RESOURCE_FILES_DIR\XdmProvisioningTexts.RSC #endif //__XDMENGINE_RESOURCES_IBY__ diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmCredentials.cpp --- a/XDMEngine/src/XdmCredentials.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2005 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: XDM Engine credentials -* -*/ - - - -#include "XdmCredentials.h" - -// --------------------------------------------------------- -// TXdmCredentials::TXdmCredentials -// -// --------------------------------------------------------- -// -EXPORT_C TXdmCredentials::TXdmCredentials() - { - } - -// --------------------------------------------------------- -// TXdmCredentials::TXdmCredentials -// -// --------------------------------------------------------- -// -EXPORT_C TXdmCredentials::TXdmCredentials( const TDesC& aUserName, - const TDesC& aPassword ) - { - iUserName.Copy( aUserName ); - iPassword.Copy( aPassword ); - } - - -// End of File - diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmDirectory.cpp --- a/XDMEngine/src/XdmDirectory.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* -* Copyright (c) 2005 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: XDM Engine directory -* -*/ - - - - -// INCLUDE FILES -#include "XdmEngine.h" - -// ---------------------------------------------------------- -// CXdmDirectory::CXdmDirectory -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmDirectory::CXdmDirectory( CXdmEngine& aXdmEngine ) : - CActive( EPriorityStandard ), - iFileCount( KErrNotReady ), - iXdmEngine( aXdmEngine ) - { - } - -// ---------------------------------------------------------- -// CXdmDirectory::BaseConstructL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmDirectory::BaseConstructL( const TDesC& aDirectoryPath ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDirectory::ConstructL()" ) ); - #endif - iDirectoryPath = aDirectoryPath.AllocL(); - iDirectoryPath->Des().Copy( aDirectoryPath ); - } - -// ---------------------------------------------------------- -// CXdmDirectory::CXdmDirectory -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmDirectory::~CXdmDirectory() - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDirectory::~CXdmDirectory()" ) ); - #endif - delete iDirectoryPath; - } - - - - - - - diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmDocument.cpp --- a/XDMEngine/src/XdmDocument.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,505 +0,0 @@ -/* -* Copyright (c) 2005 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: XDM Engine document -* -*/ - - - - -// INCLUDE FILES -#include -#include "XdmEngine.h" -#include "XdmProtocol.h" -#include "XdmDocument.h" -#include "XdmOperation.h" -#include "XdmDocumentNode.h" -#include "XdmNodeAttribute.h" -#include "XdmOperationFactory.h" - -// ---------------------------------------------------------- -// CXdmDocument::CXdmDocument -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmDocument::CXdmDocument( CXdmEngine& aXdmEngine ) : - CActive( EPriorityStandard ), - iDocSubset( EFalse ), - iXdmEngine( aXdmEngine ) - - { - } - -// ---------------------------------------------------------- -// CXdmDocument::BaseConstructL( 16-bit ) -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmDocument::BaseConstructL( TInt aOperationFactoryUid, - const TDesC& aDocumentName ) - { - delete iDocumentName; - iDocumentName = NULL; - iDocumentName = HBufC::NewL( aDocumentName.Length() ); - iDocumentName->Des().Copy( aDocumentName ); - iOperationFactory = CXdmOperationFactory::NewL( aOperationFactoryUid ); - } - -// ---------------------------------------------------------- -// CXdmDocument::BaseConstructL( 8-bit ) -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmDocument::BaseConstructL( TInt aOperationFactoryUid, - const TDesC8& aDocumentName ) - { - delete iDocumentName; - iDocumentName = NULL; - iDocumentName = HBufC::NewL( aDocumentName.Length() ); - iDocumentName->Des().Copy( aDocumentName ); - iOperationFactory = CXdmOperationFactory::NewL( aOperationFactoryUid ); - } - -// ---------------------------------------------------- -// CXdmDocument::~CXdmDocument -// -// ---------------------------------------------------- -// -EXPORT_C CXdmDocument::~CXdmDocument() - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::~CXdmDocument()" ) ); - #endif - delete iDocumentName; - EmptyOperationQueue(); - iChangeRequests.Close(); - delete iOperationFactory; - } - -// --------------------------------------------------------- -// CXdmDocument::EmptyOperationQueue -// -// --------------------------------------------------------- -// -void CXdmDocument::EmptyOperationQueue() - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::EmptyOperationQueue()" ) ); - #endif - - while (iChangeRequests.Count()) - { - MXdmOperation* operation = iChangeRequests[0]; - iChangeRequests.Remove( 0 ); - operation->Destroy(); - operation = NULL; - } - } - -// ---------------------------------------------------- -// CXdmDocument::FetchDataL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::FetchDataL( CXdmDocumentNode* aDocNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::FetchDataL()" ) ); - #endif - MXdmOperation* operation = iOperationFactory->FetchL( *this, aDocNode ); - CleanupStack::PushL( operation ); - User::LeaveIfError( iChangeRequests.Append( operation ) ); - CleanupStack::Pop(); //operation - } - -// ---------------------------------------------------- -// CXdmDocument::ReplaceL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::ReplaceL( CXdmDocumentNode* aOldNode, - CXdmDocumentNode* aNewNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::ReplaceL()" ) ); - #endif - if( aOldNode->Parent() == aNewNode->Parent() ) - { - MXdmOperation* operation = iOperationFactory->ReplaceL( - *this, aOldNode, aNewNode ); - CleanupStack::PushL( operation ); - User::LeaveIfError( iChangeRequests.Append( operation ) ); - CleanupStack::Pop(); //operation - } - else - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( " Different parents, leaves!" ) ); - #endif - User::Leave( KErrGeneral ); - } - } - -// ---------------------------------------------------- -// CXdmDocument::ReplaceL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::ReplaceL() - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::ReplaceL()" ) ); - #endif - MXdmOperation* operation = iOperationFactory->ReplaceL( *this, NULL, NULL ); - CleanupStack::PushL( operation ); - User::LeaveIfError( iChangeRequests.Append( operation ) ); - CleanupStack::Pop(); //operation - } - -// ---------------------------------------------------- -// CXdmDocument::InsertL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::InsertL( CXdmDocumentNode* aDocNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::InsertL()" ) ); - #endif - __ASSERT_DEBUG( aDocNode != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) ); - MXdmOperation* operation = iOperationFactory->InsertL( - *this, aDocNode ); - CleanupStack::PushL( operation ); - User::LeaveIfError( iChangeRequests.Append( operation ) ); - CleanupStack::Pop(); //operation - } - -// ---------------------------------------------------- -// CXdmDocument::AppendL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::AppendL( CXdmDocumentNode* aDocNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::AppendL()" ) ); - #endif - MXdmOperation* operation = - iOperationFactory->AppendL( *this, aDocNode ); - CleanupStack::PushL( operation ); - User::LeaveIfError( iChangeRequests.Append( operation ) ); - CleanupStack::Pop(); //operation - } - -// ---------------------------------------------------- -// CXdmDocument::DeleteDataL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::DeleteDataL( CXdmDocumentNode* aDocNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::DeleteDataL()" ) ); - #endif - MXdmOperation* operation = aDocNode == NULL ? - iOperationFactory->DeletionL( *this, NULL ) : - iOperationFactory->DeletionL( *this, aDocNode ); - CleanupStack::PushL( operation ); - User::LeaveIfError( iChangeRequests.Append( operation ) ); - CleanupStack::Pop(); //operation - } - -// ---------------------------------------------------- -// CXdmDocument::Find -// -// ---------------------------------------------------- -// -EXPORT_C TInt CXdmDocument::Find( const CXdmDocumentNode& aTargetNode, - RPointerArray& aResultArray ) const - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::Find()" ) ); - #endif - TInt error = KErrNone; - CXdmDocumentNode* root = DocumentRoot(); - __ASSERT_ALWAYS( root != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) ); - if( root->NodeName().Compare( aTargetNode.NodeName() ) == 0 ) - { - TBool found = EFalse; - TInt attrCount = root->AttributeCount(); - TInt attrCount2 = aTargetNode.AttributeCount(); - if( attrCount > 0 && attrCount == attrCount2 ) - { - SXdmAttribute16 attribute; - for( TInt i = 0;i < attrCount;i++ ) - { - attribute.iName.Set( aTargetNode.Attribute( i )->NodeName() ); - attribute.iValue.Set( aTargetNode.Attribute( i )->AttributeValue() ); - found = root->HasAttribute( attribute ); - } - } - error = found ? aResultArray.Append( root ) : KErrNotFound; - } - else - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( " Root does not match, search child nodes" ) ); - #endif - error = root->Find( aTargetNode, aResultArray ); - } - TInt count = aResultArray.Count(); - return error == KErrNone && count > 0 ? count : KErrNotFound; - } - -// ---------------------------------------------------- -// CXdmDocument::Find -// -// ---------------------------------------------------- -// -EXPORT_C TInt CXdmDocument::Find( const TDesC& aNodeName, - RPointerArray& aResultArray, - const RPointerArray& aAttributeArray ) const - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::Find()" ) ); - #endif - TInt error = KErrNone; - CXdmDocumentNode* root = DocumentRoot(); - __ASSERT_ALWAYS( root != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) ); - if( root->NodeName().Compare( aNodeName ) == 0 ) - { - TBool found = EFalse; - TInt attrCount = root->AttributeCount(); - if( attrCount > 0 ) - { - for( TInt i = 0;i < attrCount;i++ ) - found = root->HasAttribute( *aAttributeArray[i] ); - } - error = found ? aResultArray.Append( root ) : KErrNotFound; - } - else - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( " Root does not match, search child nodes" ) ); - #endif - error = root->Find( aNodeName, aResultArray, aAttributeArray ); - } - TInt count = aResultArray.Count(); - return error == KErrNone && count > 0 ? count : KErrNotFound; - } - -// ---------------------------------------------------- -// CXdmDocument::Find -// -// ---------------------------------------------------- -// -EXPORT_C TInt CXdmDocument::Find( const TDesC& aNodeName, - RPointerArray& aResultArray ) const - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::Find()" ) ); - #endif - TInt error = KErrNone; - CXdmDocumentNode* root = DocumentRoot(); - __ASSERT_ALWAYS( root != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) ); - if( root->NodeName().Compare( aNodeName ) == 0 ) - error = aResultArray.Append( root ); - else - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( " Root does not match, search child nodes" ) ); - #endif - error = root->Find( aNodeName, aResultArray ); - } - TInt count = aResultArray.Count(); - return error == KErrNone && count > 0 ? count : KErrNotFound; - } - -// ---------------------------------------------------- -// CXcapDocument::operator== -// -// ---------------------------------------------------- -// -EXPORT_C TBool CXdmDocument::operator==( CXdmDocument& aDocument ) const - { - CXdmDocumentNode* root1 = DocumentRoot(); - CXdmDocumentNode* root2 = aDocument.DocumentRoot(); - __ASSERT_ALWAYS( root1 != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) ); - __ASSERT_ALWAYS( root2 != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) ); - return Name().Compare( aDocument.Name() ) == 0 ? *root1 == *root2 : EFalse; - } - -// ---------------------------------------------------- -// CXdmDocument::Name -// -// ---------------------------------------------------- -// -EXPORT_C TPtrC CXdmDocument::Name() const - { - return iDocumentName != NULL ? iDocumentName->Des() : TPtrC(); - } - -// ---------------------------------------------------- -// CXdmDocument::Find -// -// ---------------------------------------------------- -// -EXPORT_C TInt CXdmDocument::Find( const TDesC& aAttributeName, - RPointerArray& aResultArray ) const - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::Find()" ) ); - #endif - TInt error = KErrNone; - CXdmDocumentNode* root = DocumentRoot(); - __ASSERT_ALWAYS( root != NULL, User::Panic( _L( "CXdmDocument" ), EDocNodeNull ) ); - error = DoFindAttributes( root, aAttributeName, aResultArray ); - TInt count = aResultArray.Count(); - return error == KErrNone && count > 0 ? count : KErrNotFound; - } - -// ---------------------------------------------------- -// CXdmDocument::RemoveFromModelL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::RemoveFromModelL( CXdmDocumentNode* aChileNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::RemoveFromModel()" ) ); - #endif - if( !iDocSubset ) - { - CXdmDocumentNode* parent = aChileNode->Parent(); - parent != NULL ? parent->RemoveChileNodeL( aChileNode ) : User::Leave( KErrArgument); - } - else User::Leave( KErrGeneral ); - } - -// ---------------------------------------------------- -// CXdmDocument::ResetSubset -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::ResetSubset() - { - iDocSubset = EFalse; - } - -// ---------------------------------------------------- -// CXdmDocument::AppendToModelL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::AppendToModelL( CXdmDocumentNode* aNewNode, - CXdmDocumentNode* aParentNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::AppendToModelL()" ) ); - #endif - if( !iDocSubset ) - { - if( aNewNode != NULL && aParentNode != NULL ) - aParentNode->AppendChileNodeL( aNewNode ); - } - else User::Leave( KErrGeneral ); - } - -// ---------------------------------------------------- -// CXdmDocument::ReplaceInModelL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocument::ReplaceInModelL( CXdmDocumentNode* aNewNode, - CXdmDocumentNode* aTargetNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::ReplaceInModelL()" ) ); - #endif - if( !iDocSubset ) - { - CXdmDocumentNode* parent = aTargetNode->Parent(); - parent != NULL ? parent->ReplaceChileNodeL( aNewNode, aTargetNode ) : User::Leave( KErrArgument); - } - else User::Leave( KErrGeneral ); - } - -// ---------------------------------------------------- -// CXdmDocument::DocumentSubsetL -// -// ---------------------------------------------------- -// -EXPORT_C CXdmDocumentNode* CXdmDocument::DocumentSubsetL( const TDesC& aNodePath ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::DocumentSubsetL()" ) ); - #endif - TBool ready = EFalse; - HBufC* temp = HBufC::NewLC( aNodePath.Length() ); - temp->Des().Copy( aNodePath ); - TPtr nodePath( temp->Des() ); - while( !ready && nodePath.Length() != 0 ) - { - TPtrC part; - TInt index = nodePath.LocateF( KXdmPathSeparatorChar ); - if( index > 0 ) - part.Set( nodePath.Left( index ) ); - else - { - part.Set( nodePath ); - ready = ETrue; - } - AppendPathPartL( part ); - nodePath.Delete( 0, index + 1 ); - } - iDocSubset = ETrue; - CleanupStack::PopAndDestroy(); //temp - return CurrentExtent(); - } - -// ---------------------------------------------------- -// CXdmDocument::DoFindAttributes -// -// ---------------------------------------------------- -// -TInt CXdmDocument::DoFindAttributes( CXdmDocumentNode* aNode, - const TDesC& aAttributeName, - RPointerArray& aResultArray ) const - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocument::DoFindAttributes()" ) ); - #endif - TInt error = KErrNone; - CXdmDocumentNode* node = aNode; - TInt attrCount = aNode->AttributeCount(); - for( TInt i = 0; i < attrCount; i++ ) - { - CXdmNodeAttribute* attr = node->Attribute( i ); - if( !attr->NodeName().CompareF( aAttributeName ) ) - error = aResultArray.Append( attr ); - } - TInt nodeCount = node->NodeCount(); - for( TInt i = 0; i < nodeCount; i++ ) - { - CXdmDocumentNode* child = node->ChileNode( i ); - DoFindAttributes ( child, aAttributeName, aResultArray ); - } - TInt count = aResultArray.Count(); - return error == KErrNone && count > 0 ? count : KErrNotFound; - } - - - - - diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmDocumentNode.cpp --- a/XDMEngine/src/XdmDocumentNode.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1143 +0,0 @@ -/* -* Copyright (c) 2005 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: XDM Engine document node -* -*/ - - - - -// INCLUDE FILES -#include "XdmEngine.h" -#include "XdmDocument.h" -#include "XdmNodeFactory.h" -#include "XdmDocumentNode.h" -#include "XdmNodeAttribute.h" - -//XML Escape codes -_LIT8( KXmlBracketOpenEsc, "<"); -_LIT8( KXmlBracketCloseEsc, ">"); -_LIT8( KXmlAmpersandEsc, "&"); - -// ---------------------------------------------------------- -// CXdmDocumentNode::CXdmDocumentNode -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmDocumentNode::CXdmDocumentNode( CXdmEngine& aXdmEngine, - MXdmNodeFactory& aNodeFactory ) : - iPosition( KErrNotFound ), - iEmptyNode( EFalse ), - iXdmEngine( aXdmEngine ), - iNodeFactory( aNodeFactory ) - { - } - - -// ---------------------------------------------------------- -// CXdmDocumentNode::CXdmDocumentNode -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmDocumentNode::CXdmDocumentNode( CXdmEngine& aXdmEngine, - MXdmNodeFactory& aNodeFactory, - CXdmDocumentNode* aParentNode ) : - iEmptyNode( EFalse ), - iXdmEngine( aXdmEngine ), - iNodeFactory( aNodeFactory ), - iParentNode( aParentNode ) - - { - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::CXdmDocumentNode -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmDocumentNode::CXdmDocumentNode( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - MXdmNodeFactory& aNodeFactory, - CXdmDocumentNode* aParentNode ) : - iLeafNode( aLeafNode ), - iEmptyNode( EFalse ), - iXdmEngine( aXdmEngine ), - iNodeFactory( aNodeFactory ), - iParentNode( aParentNode ) - - { - - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::ConstructL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::BaseConstructL( const TDesC& aNodeName ) - { - delete iNodeName; - iNodeName = NULL; - iNodeName = HBufC::NewL( aNodeName.Length() ); - iNodeName->Des().Copy( aNodeName ); - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::CopyConstructL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::CopyConstructL( const CXdmDocumentNode& aAnotherNode, - const CXdmDocumentNode& aParentNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::CopyConstructL()" ) ); - #endif - if( aAnotherNode.ElementType() != EXdmElementAttribute ) - { - ConstructChildrenL( aAnotherNode ); - ConstructAttributesL( aAnotherNode ); - } - iLeafNode = aAnotherNode.IsLeafNode(); - iEmptyNode = aAnotherNode.IsEmptyNode(); - if( iLeafNode ) - { - iLeafContent = HBufC8::New( aAnotherNode.LeafNodeContent().Length() ); - iLeafContent->Des().Copy( aAnotherNode.LeafNodeContent() ); - } - iParentNode = CONST_CAST( CXdmDocumentNode*, &aParentNode ); - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::ConstructAttributesL -// -// ---------------------------------------------------------- -// -void CXdmDocumentNode::ConstructAttributesL( const CXdmDocumentNode& aAnotherNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::CopyConstructL()" ) ); - #endif - TInt attrCount = aAnotherNode.AttributeCount(); - for( TInt i = 0;i < attrCount;i++ ) - { - TPtrC name = aAnotherNode.Attribute( i )->NodeName(); - TPtrC value = aAnotherNode.Attribute( i )->AttributeValue(); - CXdmNodeAttribute* attribute = iNodeFactory.AttributeL( name ); - CleanupStack::PushL( attribute ); - attribute->SetAttributeValueL( value ); - User::LeaveIfError( iAttributes.Append( attribute ) ); - CleanupStack::Pop(); //attribute - } - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::ConstructChildrenL -// -// ---------------------------------------------------------- -// -void CXdmDocumentNode::ConstructChildrenL( const CXdmDocumentNode& aAnotherNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::ConstructChildrenL()" ) ); - #endif - TInt childCount = aAnotherNode.NodeCount(); - for( TInt i = 0;i < childCount;i++ ) - { - CXdmDocumentNode* node = aAnotherNode.ChileNode( i ); - CXdmDocumentNode* copy = iNodeFactory.ChileNodeL( node ); - CleanupStack::PushL( copy ); - User::LeaveIfError( iChildren.Append( copy ) ); - CleanupStack::Pop(); //copy - } - } - -// ---------------------------------------------------- -// CXdmDocumentNode::~CXdmDocumentNode -// -// ---------------------------------------------------- -// -EXPORT_C CXdmDocumentNode::~CXdmDocumentNode() - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::~CXdmDocumentNode()" ) ); - #endif - delete iNextNode; - iNextNode = NULL; - delete iLeafContent; - delete iNodeName; - iChildren.ResetAndDestroy(); - iChildren.Close(); - iAttributes.ResetAndDestroy(); - iAttributes.Close(); - } - -// ---------------------------------------------------- -// CXdmDocumentNode::CreateChileNodeL -// -// ---------------------------------------------------- -// -EXPORT_C CXdmDocumentNode* CXdmDocumentNode::CreateChileNodeL() - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::CreateChileNodeL()" ) ); - #endif*/ - __ASSERT_ALWAYS( !iEmptyNode, User::Panic( _L( "CXdmDocumentNode" ), ENodeNotEmpty ) ); - CXdmDocumentNode* node = iNodeFactory.ChileNodeL(); - CleanupStack::PushL( node ); - User::LeaveIfError( iChildren.Append( node ) ); - CleanupStack::Pop(); //node - return node; - } - -// ---------------------------------------------------- -// CXdmDocumentNode::CreateChileNodeL -// -// ---------------------------------------------------- -// -EXPORT_C CXdmDocumentNode* CXdmDocumentNode::CreateChileNodeL( const TDesC& aChildName ) - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::CreateChileNodeL() - Name: %S" ), &aChildName ); - #endif*/ - __ASSERT_ALWAYS( !iEmptyNode, User::Panic( _L( "CXdmDocumentNode" ), ENodeNotEmpty ) ); - CXdmDocumentNode* node = iNodeFactory.ChileNodeL( aChildName ); - CleanupStack::PushL( node ); - User::LeaveIfError( iChildren.Append( node ) ); - CleanupStack::Pop(); //node - return node; - } - -// ---------------------------------------------------- -// CXdmDocumentNode::SetLeafNode -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::SetLeafNode( const TBool aIsLeafNode ) - { - iLeafNode = aIsLeafNode; - } - -// ---------------------------------------------------- -// CXdmDocumentNode::IsLeafNode -// -// ---------------------------------------------------- -// -EXPORT_C TBool CXdmDocumentNode::IsLeafNode() const - { - return iLeafNode; - } - -// ---------------------------------------------------- -// CXdmDocumentNode::SetEmptyNode -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::SetEmptyNode( const TBool aIsEmptyNode ) - { - //Do nothing if the state is not being changed - if( aIsEmptyNode != iEmptyNode ) - { - if( aIsEmptyNode ) - { - if( !iEmptyNode ) - { - TInt count = iChildren.Count(); - if( count > 0 ) - iChildren.ResetAndDestroy(); - } - } - iEmptyNode = aIsEmptyNode; - } - } - -// ---------------------------------------------------- -// CXdmDocumentNode::IsEmptyNode -// -// ---------------------------------------------------- -// -EXPORT_C TBool CXdmDocumentNode::IsEmptyNode() const - { - return iEmptyNode; - } - -// ---------------------------------------------------- -// CXdmDocumentNode::CreateAttributeL -// -// ---------------------------------------------------- -// -EXPORT_C CXdmNodeAttribute* CXdmDocumentNode::CreateAttributeL() - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::CreateAttributeL()" ) ); - #endif*/ - CXdmDocumentNode* node = iNodeFactory.AttributeL(); - CleanupStack::PushL( node ); - User::LeaveIfError( iAttributes.Append( ( CXdmNodeAttribute* )node ) ); - CleanupStack::Pop(); //node - return ( CXdmNodeAttribute* )node; - } - -// ---------------------------------------------------- -// CXdmDocumentNode::CreateAttributeL -// -// ---------------------------------------------------- -// -EXPORT_C CXdmNodeAttribute* CXdmDocumentNode::CreateAttributeL( const TDesC& aAttributeName ) - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::CreateAttributeL() - Name: %S" ), &aAttributeName ); - #endif*/ - CXdmDocumentNode* node = iNodeFactory.AttributeL( aAttributeName ); - CleanupStack::PushL( node ); - User::LeaveIfError( iAttributes.Append( ( CXdmNodeAttribute* )node ) ); - CleanupStack::Pop(); //node - return ( CXdmNodeAttribute* )node; - } - -// ---------------------------------------------------- -// CXdmDocumentNode::SetLeafNodeContentL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::SetLeafNodeContentL( const TDesC& aLeafContent ) - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::SetLeafNodeContentL( 16 ) - Content: %S" ), - &aLeafContent ); - #endif*/ - if( iLeafNode ) - { - delete iLeafContent; - iLeafContent = NULL; - iLeafContent = CXdmEngine::ConvertToUTF8L( aLeafContent ); - } - else - User::Leave( KErrGeneral ); - } - -// ---------------------------------------------------- -// CXdmDocumentNode::SetLeafNodeContentL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::SetLeafNodeContentL( const TDesC8& aLeafContent ) - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::SetLeafNodeContentL( 8 ) - Content: %S" ), - &aLeafContent ); - #endif*/ - if( iLeafNode ) - { - delete iLeafContent; - iLeafContent = NULL; - iLeafContent = HBufC8::NewL( aLeafContent.Length() ); - iLeafContent->Des().Copy( aLeafContent ); - } - else - User::Leave( KErrGeneral ); - } - -// ---------------------------------------------------- -// CXdmDocumentNode::ElementData -// -// ---------------------------------------------------- -// -EXPORT_C HBufC8* CXdmDocumentNode::ElementDataLC() const - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::ElementDataLC()" ) ); - #endif*/ - TInt position = 0; - CBufFlat* buffer = CBufFlat::NewL( 48 ); - CleanupStack::PushL( buffer ); - buffer->InsertL( position, EightBitNodeNameLC()->Des() ); - CleanupStack::PopAndDestroy(); //EightBitNodeNameLC() - position = position + NodeName().Length(); - TInt attributeCount = iAttributes.Count(); - if( attributeCount > 0 ) - { - for( TInt i = 0;i < attributeCount;i++ ) - { - buffer->InsertL( position, KGeneralSpace ); - position = position + KGeneralSpace().Length(); - CXdmNodeAttribute* attribute = iAttributes[i]; - TPtrC8 name( attribute->EightBitNodeNameLC()->Des() ); - buffer->InsertL( position, name ); - position = position + name.Length(); - buffer->InsertL( position, KGeneralEqualsAndQuotes ); - position = position + KGeneralEqualsAndQuotes().Length(); - TPtrC8 value( attribute->EscapedValueLC()->Des() ); - buffer->InsertL( position, value ); - position = position + value.Length(); - buffer->InsertL( position, KGeneralQuotes ); - position = position + KGeneralQuotes().Length(); - CleanupStack::PopAndDestroy( 2 ); //EscapedValueLC(), - //EightBitNodeNameLC() - } - } - HBufC8* ret = HBufC8::NewL( buffer->Size() ); - TPtr8 pointer( ret->Des() ); - buffer->Read( 0, pointer, buffer->Size() ); - CleanupStack::PopAndDestroy(); //buffer - CleanupStack::PushL( ret ); - return ret; - } - -// ---------------------------------------------------------- -// CXdmNodeAttribute::NodeCount -// -// ---------------------------------------------------------- -// -EXPORT_C TInt CXdmDocumentNode::NodeCount() const - { - return iNextNode ? 1 : iChildren.Count(); - } - -// ---------------------------------------------------------- -// CXdmNodeAttribute::NodeCount -// -// ---------------------------------------------------------- -// -EXPORT_C TInt CXdmDocumentNode::AttributeCount() const - { - return iAttributes.Count(); - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::Parent -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmDocumentNode* CXdmDocumentNode::ChileNode( const TInt aPosition ) const - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::ChileNode() - Position: %d" ), aPosition ); - #endif*/ - if( iNextNode ) - return iNextNode; - else - { - TInt count = NodeCount(); - if( count > 0 && aPosition >= 0 && aPosition < count ) - return iChildren[aPosition]; - else return NULL; - } - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::Attribute -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmNodeAttribute* CXdmDocumentNode::Attribute( const TInt aPosition ) const - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::Attribute() - Position: %d" ), aPosition ); - #endif*/ - TInt count = iAttributes.Count(); - if( count > 0 && aPosition >= 0 && aPosition < count ) - return iAttributes[aPosition]; - else return NULL; - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::Attribute -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmNodeAttribute* CXdmDocumentNode::Attribute( const TDesC& aAttributeName ) const - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::Attribute() - Name: %S" ), &aAttributeName ); - #endif*/ - TInt count = iAttributes.Count(); - if( count > 0 ) - { - TBool found = EFalse; - CXdmNodeAttribute* target = NULL; - for( TInt i = 0;!found && i < count;i++ ) - { - if( iAttributes[i]->NodeName().Compare( aAttributeName ) == 0 ) - { - target = iAttributes[i]; - found = ETrue; - } - } - return target; - } - else return NULL; - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::Parent -// -// ---------------------------------------------------------- -// -EXPORT_C TPtrC8 CXdmDocumentNode::LeafNodeContent() const - { - return iLeafNode && iLeafContent != NULL ? iLeafContent->Des() : TPtrC8(); - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::Parent -// -// ---------------------------------------------------------- -// -EXPORT_C HBufC8* CXdmDocumentNode::EscapeLeafNodeContentLC() const - { - return iLeafNode && iLeafContent != NULL ? EscapeDescLC( iLeafContent->Des() ) : NULL; - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::SetNextNode -// -// ---------------------------------------------------------- -// -EXPORT_C TPtrC CXdmDocumentNode::NodeName() const - { - return iNodeName != NULL ? iNodeName->Des() : TPtrC(); - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::SetNextNode -// -// ---------------------------------------------------------- -// -EXPORT_C HBufC8* CXdmDocumentNode::EightBitNodeNameLC() const - { - HBufC8* eightBit = CXdmEngine::ConvertToUTF8L( iNodeName->Des() ); - CleanupStack::PushL( eightBit ); - return eightBit; - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::SetNextNode -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::SetNameL( const TDesC& aNodeName ) - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::SetNameL( 16-Bit ) - Name: %S" ), - &aNodeName ); - #endif*/ - delete iNodeName; - iNodeName = NULL; - iNodeName = HBufC::NewL( aNodeName.Length() ); - iNodeName->Des().Copy( aNodeName ); - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::SetNextNode -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::SetNameL( const TDesC8& aNodeName ) - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::SetNameL( 8-Bit ) - Name: %S" ), - &aNodeName ); - #endif*/ - delete iNodeName; - iNodeName = NULL; - iNodeName = HBufC::NewL( aNodeName.Length() ); - iNodeName->Des().Copy( aNodeName ); - } - -// ---------------------------------------------------------- -// CXdmNodeAttribute::ElementType -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmDocumentNode* CXdmDocumentNode::Parent() const - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::Parent()" ) ); - #endif*/ - return iParentNode; - } - -// ---------------------------------------------------------- -// CXdmNodeAttribute::ElementType -// -// ---------------------------------------------------------- -// -EXPORT_C TXdmElementType CXdmDocumentNode::ElementType() const - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::ElementType()" ) ); - #endif*/ - return EXdmElementNode; - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::Match -// -// ---------------------------------------------------------- -// -EXPORT_C TBool CXdmDocumentNode::Match( const CXdmDocumentNode& aAnotherNode ) const - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::Match()" ) ); - #endif - if( NodeName().Compare( aAnotherNode.NodeName() ) == 0 ) - { - TBool match = ETrue; - TInt attrCount = iAttributes.Count(); - if( attrCount == aAnotherNode.AttributeCount() ) - { - for( TInt i = 0;match && i < attrCount;i++ ) - match = HasAttribute( *aAnotherNode.Attribute( i ) ); - } - else match = EFalse; - return match; - } - else return EFalse; - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::Match -// -// ---------------------------------------------------------- -// -EXPORT_C TBool CXdmDocumentNode::Match( const TDesC& aNodeName, - const RPointerArray& - aAttributeArray ) const - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::Match()" ) ); - #endif - if( NodeName().Compare( aNodeName ) == 0 ) - { - TBool match = ETrue; - TInt attrCount = iAttributes.Count(); - if( attrCount == aAttributeArray.Count() ) - { - for( TInt i = 0;match && i < attrCount;i++ ) - match = HasAttributeL( *aAttributeArray[i] ); - } - else match = EFalse; - return match; - } - else return EFalse; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::HasAttribute -// -// --------------------------------------------------------- -// -EXPORT_C TBool CXdmDocumentNode::HasAttribute( const TDesC& aAttributeName ) const - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::HasAttribute()" ) ); - #endif - TInt count = iAttributes.Count(); - for( TInt i = 0; i < count;i++ ) - { - if( !iAttributes[i]->NodeName().Compare( aAttributeName ) ) - return ETrue; - } - return EFalse; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::Print -// !!! For debugging ONLY !!! -// --------------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::Print() - { - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::Print()" ) ); - HBufC8* nameBuf = HBufC8::NewLC( iNodeName->Des().Length() ); - TPtr8 name( nameBuf->Des() ); - name.Copy( iNodeName->Des() ); - if( ElementType() == EXdmElementAttribute ) - { - CXdmNodeAttribute* attr = ( CXdmNodeAttribute* )this; - TPtrC8 value( attr->EightBitValueLC()->Des() ); - iXdmEngine.WriteToLog( _L8( "* Name: %S Value: %S" ), &name, &value ); - CleanupStack::PopAndDestroy(); //value - } - else - { - iXdmEngine.WriteToLog( _L8( "* Name: %S" ), &name ); - TInt count = iAttributes.Count(); - if( count > 0 ) - { - for( TInt i = 0;i < count;i++ ) - { - CXdmNodeAttribute* attr = iAttributes[i]; - TPtrC8 value( attr->EightBitValueLC()->Des() ); - TPtrC8 name( attr->EightBitNodeNameLC()->Des() ); - iXdmEngine.WriteToLog( _L8( "* Attribute %d - Name: %S Value: %S" ), i, &name, &value ); - CleanupStack::PopAndDestroy( 2 ); //name, value - } - - } - if( iLeafNode ) - { - TPtr8 data( iLeafContent->Des() ); - iXdmEngine.WriteToLog( _L8( "* Data: %S" ), &data ); - } - CXdmDocumentNode* node = NULL; - TInt nodeCount = NodeCount(); - for( TInt i = 0;i < nodeCount;i++ ) - { - node = ChileNode( i ); - node->Print(); - } - } - CleanupStack::PopAndDestroy(); //nameBuf - } - -// --------------------------------------------------------- -// CXdmDocumentNode::Find -// -// --------------------------------------------------------- -// -EXPORT_C TInt CXdmDocumentNode::Find( const TDesC& aNodeName, - RPointerArray& aResultArray ) const - { - TInt error = KErrNotFound; - TInt childCount = NodeCount(); - if( childCount > 0 ) - { - for( TInt i = 0;i < childCount;i++ ) - error = ChileNode( i )->DoFind( aNodeName, aResultArray ); - } - return error; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::DoFind -// -// --------------------------------------------------------- -// -TInt CXdmDocumentNode::DoFind( const TDesC& aNodeName, - RPointerArray& aResultArray ) const - { - TInt error = KErrNone; - if( NodeName().Compare( aNodeName ) == 0 ) - error = aResultArray.Append( this ); - if( error == KErrNone ) - { - TInt childCount = NodeCount(); - if( childCount > 0 ) - { - for( TInt i = 0;i < childCount;i++ ) - error = ChileNode( i )->DoFind( aNodeName, aResultArray ); - } - } - return error; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::Find -// -// --------------------------------------------------------- -// -EXPORT_C TInt CXdmDocumentNode::Find( const CXdmDocumentNode& aTargetNode, - RPointerArray& aResultArray ) const - { - TInt error = KErrNotFound; - TInt childCount = NodeCount(); - if( childCount > 0 ) - { - for( TInt i = 0;i < childCount;i++ ) - error = ChileNode( i )->DoFind( aTargetNode, aResultArray ); - } - return error; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::Find -// -// --------------------------------------------------------- -// -TInt CXdmDocumentNode::DoFind( const CXdmDocumentNode& aTargetNode, - RPointerArray& aResultArray ) const - { - TInt error = KErrNone; - if( *this == aTargetNode ) - error = aResultArray.Append( this ); - if( error == KErrNone ) - { - TInt childCount = NodeCount(); - if( childCount > 0 ) - { - for( TInt i = 0;i < childCount;i++ ) - error = ChileNode( i )->DoFind( aTargetNode, aResultArray ); - } - } - return error; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::Find -// -// --------------------------------------------------------- -// -EXPORT_C TInt CXdmDocumentNode::Find( const TDesC& aNodeName, - RPointerArray& aResultArray, - const RPointerArray& aAttributeArray ) const - { - TInt error = KErrNone; - TInt childCount = NodeCount(); - if( childCount > 0 ) - { - for( TInt j = 0;j < childCount;j++ ) - error = ChileNode( j )->DoFind( aNodeName, aResultArray, aAttributeArray ); - } - return error; - } - -// --------------------------------------------------------- -// CXcapHttpOperation::RemoveNamespaceAttributes -// -// --------------------------------------------------------- -// -void CXdmDocumentNode::RemoveNamespaceAttributes() - { - _LIT( KXmlNamespaceAttr, "xmlns" ); - for( TInt i( iAttributes.Count() - 1 ); i > KErrNotFound; i-- ) - { - CXdmNodeAttribute* attr( iAttributes[i] ); - if( attr->NodeName().Find( KXmlNamespaceAttr ) == 0 ) - { - iAttributes.Remove( i ); - delete attr; - attr = NULL; - } - } - } - -// --------------------------------------------------------- -// CXdmDocumentNode::DoFind -// -// --------------------------------------------------------- -// -TInt CXdmDocumentNode::DoFind( const TDesC& aNodeName, - RPointerArray& aResultArray, - const RPointerArray& aAttributeArray ) - { - TBool match = EFalse; - TInt error = KErrNone; - if( NodeName().Compare( aNodeName ) == 0 ) - { - match = ETrue; - RemoveNamespaceAttributes(); - TInt attrCount = iAttributes.Count(); - if( attrCount == aAttributeArray.Count() ) - { - if( attrCount > 0 ) - { - for( TInt i = 0;i < attrCount;i++ ) - match = HasAttribute( *aAttributeArray[i] ); - } - } - else match = EFalse; - error = match ? aResultArray.Append( this ) : KErrNotFound; - } - TInt childCount = NodeCount(); - if( childCount > 0 ) - { - for( TInt j = 0;j < childCount;j++ ) - error = ChileNode( j )->DoFind( aNodeName, aResultArray, aAttributeArray ); - } - return error; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::operator== -// -// --------------------------------------------------------- -// -EXPORT_C TBool CXdmDocumentNode::operator==( const CXdmDocumentNode& aNode ) const - { - TBool match = EFalse; - if( NodeName().Compare( aNode.NodeName() ) == 0 ) - { - match = ETrue; - TInt attrCount = iAttributes.Count(); - if( attrCount == aNode.AttributeCount() ) - { - if( attrCount > 0 ) - { - for( TInt i = 0;i < attrCount;i++ ) - match = aNode.HasAttribute( *iAttributes[i] ); - } - } - if( match ) - { - TInt childCount = NodeCount(); - if( childCount == aNode.NodeCount() ) - { - if( childCount > 0 ) - { - for( TInt j = 0;j < childCount;j++ ) - { - match = *ChileNode( j ) == *aNode.ChileNode( j ); - if( !match ) - break; - } - } - } - else match = EFalse; - } - else match = EFalse; - } - return match; - } - -// ---------------------------------------------------- -// CXdmDocumentNode::AppendChileNodeL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::AppendChileNodeL( CXdmDocumentNode* aDocumentNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CLocalDocument::AppendChileNodeL()" ) ); - #endif - CXdmDocumentNode* node = iNodeFactory.ChileNodeL( aDocumentNode ); - CleanupStack::PushL( node ); - User::LeaveIfError( iChildren.Append( node ) ); - CleanupStack::Pop(); //node - } - -// ---------------------------------------------------- -// CXdmDocumentNode::InsertChileNodeL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::InsertChileNodeL( TInt aIndex, CXdmDocumentNode* aDocumentNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CLocalDocument::InsertChileNodeL()" ) ); - #endif - __ASSERT_ALWAYS( aIndex >= 0, User::Panic( _L( "CXdmDocumentNode" ), EIndexOutOfBounds ) ); - CXdmDocumentNode* node = iNodeFactory.ChileNodeL( aDocumentNode ); - CleanupStack::PushL( node ); - User::LeaveIfError( iChildren.Insert( node, aIndex ) ); - CleanupStack::Pop(); //node - } - -// ---------------------------------------------------- -// CXdmDocumentNode::ReplaceChileNodeL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::ReplaceChileNodeL( CXdmDocumentNode* aNewNode, - CXdmDocumentNode* aTargetNode ) - { - CXdmDocumentNode* remove = NULL; - TInt index = iChildren.Find( aTargetNode ); - #ifdef _DEBUG - CXdmDocumentNode* a = NULL; - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::ReplaceChileNodeL()" ) ); - iXdmEngine.WriteToLog( _L8( " New node: %x" ), aNewNode ); - iXdmEngine.WriteToLog( _L8( " Target node: %x" ), aTargetNode ); - for( TInt i = 0;i < iChildren.Count();i++ ) - { - a = iChildren[i]; - iXdmEngine.WriteToLog( _L8( " Child %d: %x" ), i, a ); - } - #endif - __ASSERT_DEBUG( index >= 0, User::Panic( _L( "CXdmDocumentNode" ), EIndexOutOfBounds ) ); - remove = iChildren[index]; - iChildren.Remove( index ); - delete remove; - remove = NULL; - CXdmDocumentNode* node = iNodeFactory.ChileNodeL( aNewNode ); - CleanupStack::PushL( node ); - User::LeaveIfError( iChildren.Insert( node, index ) ); - CleanupStack::Pop(); //node - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::RemoveChileNodeL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::RemoveChileNodeL( CXdmDocumentNode* aChileNode ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::RemoveChileNodeL()" ) ); - #endif - CXdmDocumentNode* remove = NULL; - switch( aChileNode->ElementType() ) - { - case EXdmElementNode: - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( " Element is a node" ) ); - #endif - TInt index( iChildren.Find( aChileNode ) ); - __ASSERT_DEBUG( index >= 0, User::Panic( _L( "CXdmDocumentNode" ), EIndexOutOfBounds ) ); - remove = iChildren[index]; - iChildren.Remove( index ); - delete remove; - remove = NULL; - } - break; - case EXdmElementAttribute: - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( " Element is an attribute" ) ); - #endif - TInt index( iAttributes.Find( ( CXdmNodeAttribute* )aChileNode ) ); - __ASSERT_DEBUG( index >= 0, User::Panic( _L( "CXdmDocumentNode" ), EIndexOutOfBounds ) ); - remove = iAttributes[index]; - iAttributes.Remove( index ); - delete remove; - remove = NULL; - } - break; - default: - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( " Element is of undefined type, ignore" ) ); - #endif - break; - } - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::NextNode -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmDocumentNode* CXdmDocumentNode::NextNode() const - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXcapDocumentNode::NextNode()" ) ); - #endif*/ - return iNextNode; - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::SetNextNode -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmDocumentNode::SetNextNode( CXdmDocumentNode* aNextNode ) - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::SetNextNode()" ) ); - #endif*/ - __ASSERT_DEBUG( aNextNode != NULL, User::Panic( _L( "CXdmDocumentNode" ), EDocNodeNull ) ); - iNextNode = aNextNode; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::EscapeDescLC -// -// --------------------------------------------------------- -// -HBufC8* CXdmDocumentNode::EscapeDescLC( const TDesC8& aDescriptor ) const - { - /*#ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmDocumentNode::EscapeDescLC()" ) ); - #endif*/ - TInt bufPos = 0; - TBuf8<10> format; - HBufC8* ret = NULL; - CBufFlat* buffer = CBufFlat::NewL( 50 ); - CleanupStack::PushL( buffer ); - for( TInt i = 0;i < aDescriptor.Length();i++ ) - { - TUint8 byte = aDescriptor[i]; - switch( byte ) - { - case 0x26: //'&' - format.Append( KXmlAmpersandEsc ); - break; - case 0x3C: //'<' - format.Append( KXmlBracketOpenEsc ); - break; - case 0x3E: //'>' - format.Append( KXmlBracketCloseEsc ); - break; - default: - format.Append( byte ); - break; - } - buffer->InsertL( bufPos, format ); - bufPos = bufPos + format.Length(); - format.Zero(); - } - ret = HBufC8::NewL( buffer->Size() ); - ret->Des().Copy( buffer->BackPtr( buffer->Size() ) ); - CleanupStack::PopAndDestroy(); //buffer - CleanupStack::PushL( ret ); - return ret; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::HasAttribute -// -// --------------------------------------------------------- -// -TBool CXdmDocumentNode::HasAttribute( const CXdmNodeAttribute& aAttribute ) const - { - TBool ret = EFalse; - TInt count = iAttributes.Count(); - for( TInt i = 0;i < count && !ret;i++ ) - { - ret = iAttributes[i]->NodeName().Compare( aAttribute.NodeName() ) == 0 && - iAttributes[i]->AttributeValue().Compare( aAttribute.AttributeValue() ) == 0; - } - return ret; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::HasAttribute -// -// --------------------------------------------------------- -// -TBool CXdmDocumentNode::HasAttributeL( const SXdmAttribute8& aAttribute ) const - { - TBool ret = EFalse; - TInt count = iAttributes.Count(); - for( TInt i = 0;i < count && !ret;i++ ) - { - HBufC8* name = CXdmEngine::ConvertToUTF8L( iAttributes[i]->NodeName() ); - CleanupStack::PushL( name ); - HBufC8* value = CXdmEngine::ConvertToUTF8L( iAttributes[i]->AttributeValue() ); - CleanupStack::PushL( value ); - ret = name->Des().Compare( aAttribute.iName ) == 0 && - value->Des().Compare( aAttribute.iValue ) == 0; - CleanupStack::PopAndDestroy( 2 ); //value, name - } - return ret; - } - -// --------------------------------------------------------- -// CXdmDocumentNode::HasAttribute -// -// --------------------------------------------------------- -// -TBool CXdmDocumentNode::HasAttribute( const SXdmAttribute16& aAttribute ) const - { - TBool ret = EFalse; - TInt count = iAttributes.Count(); - for( TInt i = 0;i < count && !ret;i++ ) - { - ret = iAttributes[i]->NodeName().Compare( aAttribute.iName ) == 0 && - iAttributes[i]->AttributeValue().Compare( aAttribute.iValue ) == 0; - } - return ret; - } - diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmEngine.cpp --- a/XDMEngine/src/XdmEngine.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,446 +0,0 @@ -/* -* Copyright (c) 2005 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: XDM Engine -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include "XdmEngine.h" -#include "XdmDocument.h" -#include "XdmProtocol.h" -#include "XdmDirectory.h" -#include "XdmLogWriter.h" -#include "XdmStaticUtils.h" -#include "XdmSettingsApi.h" -#include "XdmProtocolInfo.h" - -// ---------------------------------------------------------- -// CXdmEngine::CXdmEngine -// -// ---------------------------------------------------------- -// -CXdmEngine::CXdmEngine() : CActive( EPriorityStandard ) - { - } - -// ---------------------------------------------------------- -// CXdmEngine::NewL -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmEngine* CXdmEngine::NewL( const CXdmProtocolInfo& aProtocolInfo ) - { - CXdmEngine* self = new ( ELeave ) CXdmEngine(); - CleanupStack::PushL( self ); - self->ConstructL( CONST_CAST( CXdmProtocolInfo&, aProtocolInfo ) ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXdmEngine::XdmSettingsLC -// -// ---------------------------------------------------------- -// -EXPORT_C CDesC16Array* CXdmEngine::XdmSettingsLC( RArray& aSettingIds ) - { - return TXdmSettingsApi::CollectionNamesLC( aSettingIds ); - } - -// ---------------------------------------------------------- -// CXdmEngine::ConstructL -// -// ---------------------------------------------------------- -// -void CXdmEngine::ConstructL( CXdmProtocolInfo& aProtocolInfo ) - { - #ifdef _DEBUG - iLogWriter = CXdmLogWriter::NewL( KXdmEngLogFile ); - WriteToLog( _L8( "CXdmEngine::ConstructL()" ) ); - #endif - TRAPD( error, iXdmProtocol = CXdmProtocol::NewL( *this, aProtocolInfo ) ); - if( error == KErrNone && iXdmProtocol != NULL ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Protocol implementation created successfully" ) ); - #endif - CActiveScheduler::Add( this ); - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " Protocol creation failed - Error: %d Protocol: %x" ), error, iXdmProtocol ); - #endif - User::Leave( KErrUnknown ); - } - } - -// ---------------------------------------------------- -// CXdmEngine::~CXdmEngine -// -// ---------------------------------------------------- -// -CXdmEngine::~CXdmEngine() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::~CXdmEngine()" ) ); - #endif - iDocUpdateQueue.Close(); - iDirUpdateQueue.Close(); - iDocumentQueue.Close(); - iDirectoryQueue.Close(); - #ifdef _DEBUG - WriteToLog( _L8( " Queues closed" ) ); - #endif - delete iXdmProtocol; - #ifdef _DEBUG - WriteToLog( _L8( " Protocol deleted" ) ); - #endif - REComSession::FinalClose(); - #ifdef _DEBUG - WriteToLog( _L8( " Destructor finished" ) ); - #endif - delete iLogWriter; - } - -// ---------------------------------------------------------- -// CXdmEngine::WriteToLog -// -// ---------------------------------------------------------- -// -void CXdmEngine::WriteToLog( TRefByValue aFmt,... ) const - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - iLogWriter->WriteToLog( buf ); - } - -// ---------------------------------------------------- -// CXdmEngine::DirectoryCollection -// -// ---------------------------------------------------- -// -EXPORT_C const RPointerArray& CXdmEngine::DocumentCollection() const - { - return iDocumentQueue; - } - -// ---------------------------------------------------- -// CXdmEngine::DirectoryCollection -// -// ---------------------------------------------------- -// -EXPORT_C const RPointerArray& CXdmEngine::DirectoryCollection() const - { - return iDirectoryQueue; - } - - -// ---------------------------------------------------- -// CXdmEngine::CancelUpdate -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmEngine::CancelUpdate( CXdmDocument* aDocument ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::CancelUpdate( document )" ) ); - #endif - TInt index = iDocumentQueue.Find( aDocument ); - if( IsActive() ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Transfer media init pending, cancel self" ) ); - #endif - Cancel(); - } - else if( index != KErrNotFound && aDocument->IsActive() ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Cancel document update" ) ); - #endif - aDocument->CancelUpdate(); - if( iDocUpdateQueue.Find( aDocument ) == KErrNone ) - iDocUpdateQueue.Remove( index ); - } - } - -// ---------------------------------------------------- -// CXdmEngine::CancelUpdate -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmEngine::CancelUpdate( CXdmDirectory* aDirectory ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::CancelUpdate( directory )" ) ); - #endif - TInt index = iDirectoryQueue.Find( aDirectory ); - if( IsActive() ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Transfer media init pending, cancel self" ) ); - #endif - Cancel(); - } - else if( index != KErrNotFound && aDirectory->IsActive() ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Cancel directory update" ) ); - #endif - aDirectory->CancelUpdate(); - if( iDirUpdateQueue.Find( aDirectory ) == KErrNone ) - iDirUpdateQueue.Remove( index ); - } - } - -// ---------------------------------------------------- -// CXdmEngine::CreateDocumentModelL -// -// ---------------------------------------------------- -// -EXPORT_C CXdmDocument* CXdmEngine::CreateDocumentModelL( const TDesC& aDocumentName, - const TXdmDocType aDocumentType ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::CreateDocumentModelL()" ) ); - #endif - CXdmDocument* document = iXdmProtocol->CreateDocumentL( aDocumentName, aDocumentType ); - CleanupStack::PushL( document ); - User::LeaveIfError( iDocumentQueue.Append( document ) ); - CleanupStack::Pop(); //document - return document; - } - -// ---------------------------------------------------- -// CXdmEngine::DeleteDocumentModelL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmEngine::DeleteDocumentModelL( const CXdmDocument* aDocument ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::DeleteDocumentModelL()" ) ); - #endif - TInt index = iDocumentQueue.Find( aDocument ); - __ASSERT_ALWAYS( index != KErrNotFound, User::Leave( KErrNotFound ) ); - iDocumentQueue.Remove( index ); - delete aDocument; - aDocument = NULL; - } - -// ---------------------------------------------------- -// CXdmEngine::CreateDirectoryModelL -// -// ---------------------------------------------------- -// -EXPORT_C CXdmDirectory* CXdmEngine::CreateDirectoryModelL( const TDesC& aDirectoryPath ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::CreateDirectoryModelL()" ) ); - #endif - CXdmDirectory* directory = iXdmProtocol->CreateDirectoryL( aDirectoryPath ); - CleanupStack::PushL( directory ); - User::LeaveIfError( iDirectoryQueue.Append( directory ) ); - CleanupStack::Pop(); //document - return directory; - } - -// ---------------------------------------------------- -// CXdmEngine::DeleteDirectoryModelL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmEngine::DeleteDirectoryModelL( const CXdmDirectory* aDirectory ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::DeleteDirectoryModelL()" ) ); - #endif - TInt index = iDirectoryQueue.Find( aDirectory ); - __ASSERT_ALWAYS( index != KErrNotFound, User::Panic( _L( "CXdmEngine" ), EDirModelNotFound ) ); - iDirectoryQueue.Remove( index ); - delete aDirectory; - aDirectory = NULL; - } - -// ---------------------------------------------------- -// CXdmEngine::CreateDocumentNodeL -// -// ---------------------------------------------------- -// -EXPORT_C CXdmDocumentNode* CXdmEngine::CreateDocumentNodeL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::CreateDocumentNodeL()" ) ); - #endif - return iXdmProtocol->CreateDocumentNodeL(); - } - -// ---------------------------------------------------- -// CXdmEngine::UpdateL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmEngine::UpdateL( CXdmDocument* aDocument, - TRequestStatus& aStatus ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::UpdateL( document )" ) ); - #endif - iClientStatus = &aStatus; - aStatus = KRequestPending; - aDocument->SaveClientStatus( aStatus ); - User::LeaveIfError( iDocUpdateQueue.Append( aDocument ) ); - if( !IsActive() ) - { - iXdmProtocol->InitTransferMedium( KDefaultIdleTimeout, iStatus ); - SetActive(); - } - } - -// ---------------------------------------------------- -// CXdmEngine::UpdateL -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmEngine::UpdateL( TRequestStatus& aStatus, - CXdmDirectory* aDirectory, - TDirUpdatePhase aUpdatePhase ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::UpdateL( directory )" ) ); - #endif - iClientStatus = &aStatus; - aStatus = KRequestPending; - aDirectory->SaveRequestData( aUpdatePhase, aStatus ); - User::LeaveIfError( iDirUpdateQueue.Append( aDirectory ) ); - if( !IsActive() ) - { - iXdmProtocol->InitTransferMedium( KDefaultIdleTimeout, iStatus ); - SetActive(); - } - } - -// --------------------------------------------------------- -// CXdmEngine::RunL -// -// --------------------------------------------------------- -// -void CXdmEngine::RunL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::RunL() - Status: %d" ), iStatus.Int() ); - #endif - if( iStatus == KErrCancel ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Update cancelled, complete client request" ) ); - #endif - if( iClientStatus ) - { - iDocUpdateQueue.Reset(); - iDirUpdateQueue.Reset(); - User::RequestComplete( iClientStatus, KErrCancel ); - #ifdef _DEBUG - WriteToLog( _L8( " Request complete" ) ); - #endif - } - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " Transfer media initialised, start update" ) ); - #endif - TInt dirCount( iDirUpdateQueue.Count() ); - TInt docCount( iDocUpdateQueue.Count() ); - #ifdef _DEBUG - WriteToLog( _L8( " Document queue count: %d" ), docCount ); - WriteToLog( _L8( " Directory queue count: %d" ), dirCount ); - #endif - //First check the document queue - for( TInt i = 0;i < docCount;i++ ) - { - iDocUpdateQueue[0]->StartUpdateL(); - iDocUpdateQueue.Remove( 0 ); - } - //Then the directory queue - for( TInt j = 0;j < dirCount;j++ ) - { - iDirUpdateQueue[0]->StartUpdateL(); - iDirUpdateQueue.Remove( 0 ); - } - } - } - -// --------------------------------------------------------- -// CXdmEngine::DoCancel -// -// --------------------------------------------------------- -// -void CXdmEngine::DoCancel() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::DoCancel()" ) ); - #endif - iXdmProtocol->CancelTransferMediumInit(); - if( iClientStatus ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Client request pending => Complete" ) ); - #endif - iDocUpdateQueue.Reset(); - iDirUpdateQueue.Reset(); - User::RequestComplete( iClientStatus, KErrCancel ); - } - } - -// --------------------------------------------------------- -// CXdmEngine::XdmProtocol -// -// --------------------------------------------------------- -// -CXdmProtocol* CXdmEngine::XdmProtocol() const - { - #ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::XdmProtocol()" ) ); - #endif - return iXdmProtocol; - } - -// --------------------------------------------------------- -// CXdmEngine::ConvertToUTF8L -// -// --------------------------------------------------------- -// -HBufC8* CXdmEngine::ConvertToUTF8L( const TDesC& aUnicodeDesc ) - { - /*#ifdef _DEBUG - WriteToLog( _L8( "CXdmEngine::ConvertToUTF8L()" ) ); - #endif*/ - return CnvUtfConverter::ConvertFromUnicodeToUtf8L( aUnicodeDesc ); - } - - - - - diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmLogWriter.cpp --- a/XDMEngine/src/XdmLogWriter.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -/* -* Copyright (c) 2007 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: XDM Engine log writer -* -*/ - - - -#include -#include -#include -#include "XdmLogWriter.h" -#include "XdmStaticUtils.h" - - -// ---------------------------------------------------------- -// XdmStaticUtils::CheckFileExistsL -// -// ---------------------------------------------------------- -// -CXdmLogWriter::CXdmLogWriter() - { - } - -// ---------------------------------------------------------- -// CXdmLogWriter::NewL -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmLogWriter* CXdmLogWriter::NewL( const TDesC& aLogName ) - { - CXdmLogWriter* self = new ( ELeave ) CXdmLogWriter(); - CleanupStack::PushL( self ); - self->ConstructL( aLogName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXdmLogWriter::ConstructL -// -// ---------------------------------------------------------- -// -void CXdmLogWriter::ConstructL( const TDesC& aLogName ) - { - RFs session; - HBufC* full = NULL; - User::LeaveIfError( session.Connect() ); - CleanupClosePushL( session ); - HBufC* concat = HBufC::NewLC( KXdmLogRoot().Length() + - KXdmLogDir().Length() + - aLogName.Length() + 1 ); - TPtr path( concat->Des() ); - path.Copy( KXdmLogRoot ); - path.Append( KXdmLogDir ); - path.Append( _L( "\\") ); - path.Append( aLogName ); - TRAPD( error, full = XdmStaticUtils::GenerateFileNameL( session, path, KXdmLogFileExt ) ); - if( full && error == KErrNone ) - { - CleanupStack::PushL( full ); - TPtrC fullDes( full->Des() ); - iLogFileName = fullDes.Mid( fullDes.LocateReverse( 92 ) + 1 ).AllocL(); - CleanupStack::PopAndDestroy(); //full - } - else iLogFileName = NULL; - CleanupStack::PopAndDestroy( 2 ); //concat, session - } - -// ---------------------------------------------------------- -// CXdmLogWriter::~CXdmLogWriter -// -// ---------------------------------------------------------- -// -CXdmLogWriter::~CXdmLogWriter() - { - delete iLogFileName; - } - -// ---------------------------------------------------------- -// CXdmLogWriter::WriteToLog -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmLogWriter::WriteToLog( const TDesC& aLogLine ) const - { - if( iLogFileName ) - { - RFileLogger::Write( KXdmLogDir, *iLogFileName, EFileLoggingModeAppend, aLogLine ); - } - RDebug::Print( aLogLine ); - } - -// ---------------------------------------------------------- -// CXdmLogWriter::WriteToLog -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmLogWriter::WriteToLog( const TDesC8& aLogLine ) const - { - if( iLogFileName ) - { - RFileLogger::Write( KXdmLogDir, *iLogFileName, EFileLoggingModeAppend, aLogLine ); - } - RDebug::RawPrint( aLogLine ); - } - -// End of File - - - - diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmNodeAttribute.cpp --- a/XDMEngine/src/XdmNodeAttribute.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -/* -* Copyright (c) 2005 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: XDM Engine node attribute -* -*/ - - - - -// INCLUDE FILES -#include - -#include "XdmEngine.h" -#include "XdmNodeFactory.h" -#include "XdmNodeAttribute.h" - -// ---------------------------------------------------------- -// CXdmNodeAttribute::CXdmNodeAttribute -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmNodeAttribute::CXdmNodeAttribute( CXdmEngine& aXdmEngine, - MXdmNodeFactory& aNodeFactory ) : - CXdmDocumentNode( aXdmEngine, aNodeFactory ) - - { - } - -// ---------------------------------------------------------- -// CXdmNodeAttribute::CXdmNodeAttribute -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmNodeAttribute::CXdmNodeAttribute( CXdmEngine& aXdmEngine, - MXdmNodeFactory& aNodeFactory, - CXdmDocumentNode* aParentNode ) : - CXdmDocumentNode( aXdmEngine, aNodeFactory, aParentNode ) - { - } - -// ---------------------------------------------------------- -// CXdmNodeAttribute::ConstructL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmNodeAttribute::BaseConstructL( const TDesC& aAttributeName ) - { - SetNameL( aAttributeName ); - } - -// ---------------------------------------------------------- -// CXdmNodeAttribute::ElementType -// -// ---------------------------------------------------------- -// -EXPORT_C TXdmElementType CXdmNodeAttribute::ElementType() const - { - return EXdmElementAttribute; - } - -// ---------------------------------------------------- -// CXdmNodeAttribute::~CXdmNodeAttribute -// -// ---------------------------------------------------- -// -EXPORT_C CXdmNodeAttribute::~CXdmNodeAttribute() - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmNodeAttribute::~CXdmNodeAttribute()" ) ); - #endif - delete iAttributeValue; - } - -// ---------------------------------------------------- -// CXdmNodeAttribute::AttributeValue -// -// ---------------------------------------------------- -// -EXPORT_C TPtrC CXdmNodeAttribute::AttributeValue() const - { - return iAttributeValue != NULL ? iAttributeValue->Des() : TPtrC(); - } - -// ---------------------------------------------------- -// CXdmNodeAttribute::AttributeValue -// -// ---------------------------------------------------- -// -EXPORT_C HBufC8* CXdmNodeAttribute::EightBitValueLC() const - { - HBufC8* eightBit = CXdmEngine::ConvertToUTF8L( iAttributeValue->Des() ); - CleanupStack::PushL( eightBit ); - return eightBit; - } - -// ---------------------------------------------------- -// CXdmNodeAttribute::EscapedValueLC -// -// ---------------------------------------------------- -// -EXPORT_C HBufC8* CXdmNodeAttribute::EscapedValueLC() const - { - HBufC8* eightBit = CXdmEngine::ConvertToUTF8L( iAttributeValue->Des() ); - CleanupStack::PushL( eightBit ); - HBufC8* escape = EscapeDescLC( eightBit->Des() ); - CleanupStack::Pop(); //escape - CleanupStack::PopAndDestroy(); //eightBit - CleanupStack::PushL( escape ); - return escape; - } - -// ---------------------------------------------------- -// CXdmNodeAttribute::SetAttributeValue -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmNodeAttribute::SetAttributeValueL( const TDesC& aAttributeValue ) - { - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmNodeAttribute::SetAttributeValueL() - Value: %S" ), - &aAttributeValue ); - #endif - delete iAttributeValue; - iAttributeValue = NULL; - iAttributeValue = HBufC::NewL( aAttributeValue.Length() ); - iAttributeValue->Des().Copy( aAttributeValue ); - } - -// ---------------------------------------------------- -// CXdmNodeAttribute::SetAttributeValue -// -// ---------------------------------------------------- -// -EXPORT_C void CXdmNodeAttribute::SetAttributeValueL( const TDesC8& aAttributeValue ) - { - // change to UNICODE from UTF8 format - HBufC* unicode = EscapeUtils::ConvertToUnicodeFromUtf8L( aAttributeValue ); - CleanupStack::PushL( unicode ); - - #ifdef _DEBUG - iXdmEngine.WriteToLog( _L8( "CXdmNodeAttribute::SetAttributeValueL() - Value: %S" ), - unicode ); - #endif - delete iAttributeValue; - iAttributeValue = NULL; - iAttributeValue = HBufC::NewL( unicode->Length() ); - iAttributeValue->Des().Copy( *unicode ); - CleanupStack::PopAndDestroy( unicode ); - } - - diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmProtocol.cpp --- a/XDMEngine/src/XdmProtocol.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* -* Copyright (c) 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: XDM Engine protocol -* -*/ - - - -#include -#include "XdmProtocol.h" -#include "XdmProtocolInfo.h" - diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmProtocolInfo.cpp --- a/XDMEngine/src/XdmProtocolInfo.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -/* -* Copyright (c) 2005 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: XDM Engine protocol info -* -*/ - - - -#include "XdmProtocol.h" -#include "XdmDocument.h" -#include "XdmSettingsApi.h" -#include "XdmProtocolInfo.h" -#include "XdmProtocolUidList.h" -#include "XdmSettingsProperty.h" -#include "XdmSettingsCollection.h" - -// ---------------------------------------------------------- -// CXdmProtocolInfo::CXdmProtocolInfo -// -// ---------------------------------------------------------- -// -CXdmProtocolInfo::CXdmProtocolInfo() : iSecure( EFalse ), - iUseCache( ETrue ) - { - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::CXdmProtocolInfo -// -// ---------------------------------------------------------- -// -CXdmProtocolInfo::CXdmProtocolInfo( TInt aProtocolUid ) : - iProtocolUid( TUid::Uid( aProtocolUid ) ), - iSecure( EFalse ), - iUseCache( ETrue ) - { - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::CXdmProtocolInfo -// -// ---------------------------------------------------------- -// -CXdmProtocolInfo::CXdmProtocolInfo( TInt aAccessPoint, - TInt aProtocolUid ) : - iProtocolUid( TUid::Uid( aProtocolUid ) ), - iAccessPoint( aAccessPoint ), - iSecure( EFalse ), - iUseCache( ETrue ) - { - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::NewL -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmProtocolInfo* CXdmProtocolInfo::NewL( TInt aAccessPoint, - TInt aProtocolUid, - const TDesC& aRootLocation ) - { - CXdmProtocolInfo* self = new ( ELeave ) CXdmProtocolInfo( aAccessPoint, aProtocolUid ); - CleanupStack::PushL( self ); - self->ConstructL( aRootLocation ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::NewL -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmProtocolInfo* CXdmProtocolInfo::NewL( TInt aSettingsId ) - { - CXdmProtocolInfo* self = new ( ELeave ) CXdmProtocolInfo( KXcapProtocol ); - self->Construct( aSettingsId ); - return self; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::ConstructL -// -// ---------------------------------------------------------- -// -void CXdmProtocolInfo::ConstructL( const TDesC& aRootLocation ) - { - delete iRootLocation; - iRootLocation = NULL; - iRootLocation = HBufC::NewL( aRootLocation.Length() ); - iRootLocation->Des().Copy( aRootLocation ); - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::Construct -// -// ---------------------------------------------------------- -// -void CXdmProtocolInfo::Construct( TInt aSettingsId ) - { - iSettingsId = aSettingsId; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::~CXdmProtocolInfo -// -// ---------------------------------------------------------- -// -EXPORT_C CXdmProtocolInfo::~CXdmProtocolInfo() - { - delete iRootLocation; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::SetCredentials -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmProtocolInfo::SetCredentials( const TXdmCredentials aCredentials ) - { - iCredentials = aCredentials; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::SetCacheUsage -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmProtocolInfo::SetCacheUsage( const TBool aCacheUsage ) - { - iUseCache = aCacheUsage; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::CacheUsage -// -// ---------------------------------------------------------- -// -EXPORT_C TBool CXdmProtocolInfo::IsCacheEnabled() const - { - return iUseCache; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::Credentials -// -// ---------------------------------------------------------- -// -EXPORT_C const TXdmCredentials& CXdmProtocolInfo::Credentials() const - { - return iCredentials; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::SetCredentials -// -// ---------------------------------------------------------- -// -EXPORT_C void CXdmProtocolInfo::SetSecurity( const TBool aSecure ) - { - iSecure = aSecure; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::SetCredentials -// -// ---------------------------------------------------------- -// -EXPORT_C TBool CXdmProtocolInfo::IsSecure() const - { - return iSecure; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::Root -// -// ---------------------------------------------------------- -// -EXPORT_C TUid CXdmProtocolInfo::ProtocolUid() const - { - return iProtocolUid; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::AccessPoint -// -// ---------------------------------------------------------- -// -EXPORT_C TInt CXdmProtocolInfo::AccessPoint() const - { - return iAccessPoint; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::AccessPoint -// -// ---------------------------------------------------------- -// -EXPORT_C TInt CXdmProtocolInfo::SettingsID() const - { - return iSettingsId; - } - -// ---------------------------------------------------------- -// CXdmProtocolInfo::Root -// -// ---------------------------------------------------------- -// -EXPORT_C TPtrC CXdmProtocolInfo::Root() const - { - return iRootLocation != NULL ? iRootLocation->Des() : TPtrC(); - } - - -// End of File - - diff -r 2580314736af -r 2669f8761a99 XDMEngine/src/XdmStaticUtils.cpp --- a/XDMEngine/src/XdmStaticUtils.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* -* Copyright (c) 2007 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: XDM Engine static utils -* -*/ - - - - -#include -#include "XdmStaticUtils.h" -#include "XdmLogWriter.h" - -// ---------------------------------------------------------- -// XdmStaticUtils::CheckFileExistsL -// -// ---------------------------------------------------------- -// -EXPORT_C TBool XdmStaticUtils::CheckFileExistsL( RFs& aFileSession, const TDesC& aFileName ) - { - TBool found = EFalse; - CDir* directory = NULL; - TInt index = aFileName.LocateReverse( KBackSlash ); - TPtrC dir( aFileName.Left( index + 1 ) ); - TPtrC name( aFileName.Right( aFileName.Length() - index - 1 ) ); - User::LeaveIfError( aFileSession.GetDir( dir, KEntryAttNormal, ESortNone, directory ) ); - CleanupStack::PushL( directory ); - const TInt count = directory->Count(); - for( TInt i = 0;!found && i < count;i++ ) - { - if( name.CompareF( ( *directory )[i].iName ) == 0 ) - found = ETrue; - } - CleanupStack::PopAndDestroy(); //directory - return found; - } - -// ---------------------------------------------------------- -// XdmStaticUtils::GenerateFileNameLC -// -// ---------------------------------------------------------- -// -EXPORT_C HBufC* XdmStaticUtils::GenerateFileNameL( RFs& aFileSession, const TDesC& aFileName, - const TDesC& aExtension ) - { - TInt i = 1; - TBuf name; - name.Copy( aFileName ); - name.Append( aExtension ); - TBool exists = XdmStaticUtils::CheckFileExistsL( aFileSession, name ); - for( ;exists && i <= KMaxLogFiles;i++ ) - { - name.Zero(); - name.Copy( aFileName ); - name.AppendNum( i ); - name.Append( aExtension ); - exists = XdmStaticUtils::CheckFileExistsL( aFileSession, name ); - } - if( i >= KMaxLogFiles ) - { - TPtrC dir( aFileName.Left( aFileName.LocateReverse( KBackSlash ) ) ); - CleanUpDirectoryL( aFileSession, dir ); - name.Zero(); - name.Copy( aFileName ); - name.Append( aExtension ); - } - return name.AllocL(); - } - -// ---------------------------------------------------------- -// XdmStaticUtils::CleanUpDirectoryL -// -// ---------------------------------------------------------- -// -EXPORT_C void XdmStaticUtils::CleanUpDirectoryL( RFs& aFileSession, const TDesC& aDirectory ) - { - TBuf allFiles; - allFiles.Copy( aDirectory ); - allFiles.Append( _L( "\\*.*") ); - CFileMan* manager = CFileMan::NewL( aFileSession ); - manager->Delete( allFiles ); - delete manager; - manager = NULL; - } - -// End of File - - - diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/data/10207428.rss --- a/XDMSettingsUI/data/10207428.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 1020 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: ECOM plugin resource file for GS XDM plugin. -* -*/ - - - -#include - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = 0x10207428; // Plugin dll UID - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x10207236; // UID for CGSPluginInterface - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x10207429; // Plugin UID - version_no = 1; - display_name = "XDM Settings Plugin"; // Plugin debug name - - #ifdef RD_CONTROL_PANEL // for control panel change (5.0) - default_data = "0x10283341"; // Parent UID adminstrative settings - opaque_data = "50"; // Order number - #else // for normal 3.0 without control panel change - default_data = "0x10207250"; // Parent UID connection settings - opaque_data = "140"; // Order number - #endif //RD_CONTROL_PANEL - } - }; - } - }; - } - diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/data/XDMPluginRsc.rss --- a/XDMSettingsUI/data/XDMPluginRsc.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,444 +0,0 @@ -/* -* Copyright (c) 2005-2010 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: Resource file for XDMPlugin -* -*/ - - - - -// RESOURCE IDENTIFIER -NAME GSXD // 4 letter ID - -// INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include "XDMPlugin.hrh" - -// CONSTANTS -//---------------------------------------------------- -// -// -// Needed or loading the resource fails! -// -//---------------------------------------------------- -// -RESOURCE RSS_SIGNATURE - { - } - -//---------------------------------------------------- -// -// r_gs_xdm_settings_main_menubar -// Menu when main list is visible -// -//---------------------------------------------------- -// -RESOURCE MENU_BAR r_gs_xdm_settings_main_menubar - { - titles = - { - MENU_TITLE { menu_pane = r_gs_xdm_settings_main_menu;} - }; - } - -//---------------------------------------------------- -// -// r_gs_xdm_settings_main_menu -// Main menu when we enter in XDM settings -// -//---------------------------------------------------- -// -RESOURCE MENU_PANE r_gs_xdm_settings_main_menu - { - items = - { - MENU_ITEM - { - command = EGSXDMPluginCmdChange; - txt = qtn_xdm_settings_change; - flags = EEikMenuItemAction; - }, - MENU_ITEM - { - command = EGSXDMPluginCmdEdit; - txt = qtn_xdm_options_edit_set; - flags = EEikMenuItemAction; - }, - MENU_ITEM - { - command = EGSXDMPluginCmdNewSettings; - cascade = r_gs_xdm_new_settings_menu; - txt = qtn_xdm_options_new_set; - }, - MENU_ITEM - { - command = EGSXDMPluginCmdDelete; - txt = qtn_xdm_options_delete; - }, - MENU_ITEM - { - command = EAknCmdHelp; - txt = qtn_options_help; - }, - MENU_ITEM - { - command = EGSXDMPluginCmdExitFromSL; - txt = qtn_options_exit; - }, - MENU_ITEM - { - command = EAknCmdExit; - txt = qtn_options_exit; - } - }; - } - -//---------------------------------------------------- -// -// r_gs_xdm_new_settings_menu -// case menu -// -//---------------------------------------------------- -// -RESOURCE MENU_PANE r_gs_xdm_new_settings_menu - { - items = - { - MENU_ITEM - { - command = EGSXDMPluginCmdNewDefault; - txt = qtn_xdm_options_new_sub_default; - }, - MENU_ITEM - { - command = EGSXDMPluginCmdNewExisting; - txt = qtn_xdm_options_new_sub_existing; - } - }; - } - -//---------------------------------------------------- -// -// r_gs_xdm_main_view_title -// XDM view's title. -// -//---------------------------------------------------- -// -RESOURCE TITLE_PANE r_gs_xdm_main_view_title - { - txt = qtn_xdm_title; - } - -//---------------------------------------------------- -// -// r_gs_xdm_main_view -// XDM plugin main view. -// -//---------------------------------------------------- -// -RESOURCE AVKON_VIEW r_gs_xdm_main_view - { - menubar = r_gs_xdm_settings_main_menubar; - cba = r_xdmui_mainview_softkeys;//R_AVKON_SOFTKEYS_OPTIONS_BACK; - } - -//---------------------------------------------------- -// -// r_xdmui_mainview_softkeys -// XDM plugin main view softkeys. -// -//---------------------------------------------------- -// -RESOURCE CBA r_xdmui_mainview_softkeys - { - flags = 0; - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOptions; txt= text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyBack; txt= text_softkey_back;}, - CBA_BUTTON {id=EGSXDMPluginCmdEdit; txt= qtn_msk_edit;} - }; - } - -//---------------------------------------------------- -// -// r_xdmui_mainview_softkeys_sl -// XDM plugin main view softkeys for settings list -// -//---------------------------------------------------- -// -RESOURCE CBA r_xdmui_mainview_softkeys_sl - { - flags = 0; - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOptions; txt= text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyBack; txt= text_softkey_back;}, - CBA_BUTTON {id=EGSXDMPluginCmdChange; txt= qtn_msk_change;} - }; - } - -// --------------------------------------------------------- -// -// r_settings -// -// settings list - collection of all setting types -// -// --------------------------------------------------------- -// -RESOURCE LISTBOX r_gs_xdm_main_list - { - flags = EAknListBoxSelectionList; - } - - -// --------------------------------------------------------- -// -// r_settings -// -// settings list - collection of all setting types -// -// --------------------------------------------------------- -// - -RESOURCE AVKON_SETTING_ITEM_LIST r_settings - { - flags = EAknSettingItemIncludeHiddenInOrdinal; - title = qtn_xdm_title; - items = - { - AVKON_SETTING_ITEM - { - identifier = ESettingItemSettingName; - setting_page_resource = r_server_name_editor_page; - name = qtn_xdm_settings_set_name; - compulsory_ind_string = qtn_xdm_compulsory_indicator; - empty_item_text = qtn_xdm_settings_must_define; - }, - AVKON_SETTING_ITEM - { - identifier = ESettingItemAccessPoint; - setting_page_resource = r_accesspoint_editor_page; - name = qtn_xdm_settings_access_point; - compulsory_ind_string = qtn_xdm_compulsory_indicator; - empty_item_text = qtn_xdm_settings_must_define; - }, - AVKON_SETTING_ITEM - { - identifier = ESettingItemServerAddress; - setting_page_resource = r_server_address_editor_page; - name = qtn_xdm_settings_address; - compulsory_ind_string = qtn_xdm_compulsory_indicator; - empty_item_text = qtn_xdm_settings_must_define; - }, - AVKON_SETTING_ITEM - { - identifier = ESettingItemSipURL; - setting_page_resource = r_sip_url_editor_page; - name = qtn_xdm_settings_sip; - }, - AVKON_SETTING_ITEM - { - identifier = ESettingItemUserID; - setting_page_resource = r_user_id_editor_page; - name = qtn_xdm_settings_username; - compulsory_ind_string = qtn_xdm_compulsory_indicator; - empty_item_text = qtn_xdm_settings_must_define; - }, - AVKON_SETTING_ITEM - { - identifier = ESettingItemPassword; - setting_page_resource = r_password_editor_page; - name = qtn_xdm_settings_password; - empty_item_text = qtn_xdm_text_password; - } - }; - } - -// --------------------------------------------------------- -// -// Settings Pages -// -// defines the AVKON_SETTING_PAGE structures referred to in -// setting_page_resource fields above. -// -// These structures define the way in which the editors used -// to change the setting data are presented. -// -// --------------------------------------------------------- -// -RESOURCE AVKON_SETTING_PAGE r_server_name_editor_page - { - label= qtn_xdm_settings_set_name; - type = EEikCtEdwin; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - editor_resource_id = r_server_name_editor; - } - -RESOURCE AVKON_SETTING_PAGE r_server_address_editor_page - { - label= qtn_xdm_settings_address; - type = EEikCtEdwin; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - editor_resource_id = r_server_address_editor; - } - - -RESOURCE AVKON_SETTING_PAGE r_accesspoint_editor_page - { - label= qtn_xdm_settings_access_point; - type = EEikCtEdwin; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - editor_resource_id = r_accesspoint_editor; - } - -RESOURCE AVKON_SETTING_PAGE r_sip_url_editor_page - { - label= qtn_xdm_settings_sip; - type = EEikCtEdwin; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - editor_resource_id = r_sip_url_editor; - } - -RESOURCE AVKON_SETTING_PAGE r_user_id_editor_page - { - label= qtn_xdm_settings_username; - type = EEikCtEdwin; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - editor_resource_id = r_user_id_editor; - } - -RESOURCE AVKON_SETTING_PAGE r_password_editor_page - { - label= qtn_xdm_settings_password; - type = EEikCtSecretEd; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - editor_resource_id = r_password_editor; - } - -RESOURCE EDWIN r_user_id_editor - { - flags = EEikEdwinAutoSelection | EAknEditorLowerCase | EEikEdwinNoLineOrParaBreaks; - allowed_case_modes = EAknEditorLowerCase | EAknEditorUpperCase; - numeric_keymap=EAknEditorCalculatorNumberModeKeymap; - allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode; - default_input_mode = EAknEditorTextInputMode; - special_character_table = R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG; - default_case = EAknEditorLowerCase; - avkon_flags = EAknEditorFlagLatinInputModesOnly; - width = 0; - lines = 0; - maxlength = KMaxUserIDLength; - } - -RESOURCE SECRETED r_password_editor - { - num_letters = KMaxPasswordLength; - } - -RESOURCE EDWIN r_server_address_editor - { - flags = EEikEdwinAutoSelection | EAknEditorLowerCase | EEikEdwinNoLineOrParaBreaks; - allowed_case_modes = EAknEditorLowerCase | EAknEditorUpperCase; - numeric_keymap=EAknEditorCalculatorNumberModeKeymap; - allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode; - default_input_mode = EAknEditorTextInputMode; - special_character_table = R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG; - default_case = EAknEditorLowerCase; - avkon_flags = EAknEditorFlagLatinInputModesOnly; - width = 0; - lines = 0; - maxlength = KMaxServerAddressLength; - } - -RESOURCE EDWIN r_accesspoint_editor - { - maxlength = KMaxAccessPointNameLength; - } - -RESOURCE EDWIN r_server_name_editor - { - width = 0; - lines = 0; - flags = EEikEdwinNoLineOrParaBreaks; - maxlength = KMaxSettingSetNameLength; - } - -RESOURCE EDWIN r_sip_url_editor - { - width = 0; - lines = 0; - maxlength = KMaxSIPURLLength; - } - - -RESOURCE DIALOG r_confirmation_query - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_YES_NO; - items= - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_CONFIRMATION_QUERY - { - layout =EConfirmationQueryLayout; - }; - } - }; - } - -//---------------------------------------------------- -// -// string resouces -// the strings can be localized in loc file -// -//---------------------------------------------------- -// -RESOURCE TBUF r_str_xdm_settings { buf = qtn_xdm_title; } -RESOURCE TBUF r_str_xdm_compulsory { buf = qtn_selec_setting_compulsory; } -RESOURCE TBUF r_str_xdm_must_define { buf = qtn_poc_settings_must_define; } -RESOURCE TBUF r_str_xdm_use_existing { buf = qtn_xdm_propmt_use_exist; } -RESOURCE TBUF r_str_xdm_empty_text { buf = qtn_xdm_main_empty_info_text; } -RESOURCE TBUF r_str_xdm_empty_text_sec { buf = qtn_xdm_main_empty_info_text_secondary; } -RESOURCE TBUF r_str_xdm_new_set { buf = qtn_xdm_text_new_set; } -RESOURCE TBUF r_str_xdm_new_set_many { buf = qtn_xdm_text_new_set_many; } -RESOURCE TBUF r_str_xdm_conf_delete_last { buf = qtn_xdm_conf_delete_last; } -RESOURCE TBUF r_str_xdm_conf_delete { buf = qtn_query_common_conf_delete; } -RESOURCE TBUF r_str_xdm_conf_compulsory { buf = qtn_xdm_compulsory_query_info_text; } -RESOURCE TBUF r_str_xdm_title_pane_text { buf = qtn_xdm_title; } -RESOURCE TBUF r_str_xdm_name_already_exist { buf = qtn_xdm_set_already_exist_info; } -RESOURCE TBUF r_str_xdm_ap_name_for_debug_only { buf = qtn_xdm_settings_access_point;} - -// ****** PDATA RESOURCES END ****** -//End of File diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/group/XDMPlugin.mmp --- a/XDMSettingsUI/group/XDMPlugin.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: This is project specification file for GS XDMPlugin. -* -*/ - - - - -#include -#include - -CAPABILITY CAP_ECOM_PLUGIN -TARGET gsxdmplugin.dll -TARGETTYPE PLUGIN -UID 0x10009D8D 0x10207428 -VENDORID VID_DEFAULT - -SOURCEPATH ../src -SOURCE XDMPluginImplementationTable.cpp -SOURCE XDMPlugin.cpp -SOURCE XDMPluginContainer.cpp -SOURCE SettingsData.cpp -SOURCE XDMPluginSettinglist.cpp -SOURCE XDMPluginSLContainer.cpp - -USERINCLUDE ../inc -USERINCLUDE ../data - -APP_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom - -SOURCEPATH ../data - -//ECOM resource definition -START RESOURCE 10207428.rss - TARGET gsxdmplugin.rsc -END // ECOM resource definition - -//XDMPlugin resources -START RESOURCE XDMPluginRsc.rss - HEADER - TARGETPATH RESOURCE_FILES_DIR - LANGUAGE_IDS -END // XDMPlugin resources - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY efsrv.lib -LIBRARY avkon.lib -LIBRARY bafl.lib -LIBRARY cone.lib -LIBRARY eikcoctl.lib -LIBRARY eikcore.lib -LIBRARY eikctl.lib -LIBRARY commonengine.lib//For RConeResourceLoader - -LIBRARY egul.lib // CGulIcon -LIBRARY aknskins.lib // AknsUtils.h -LIBRARY apsettingshandlerui.lib // access point UI -LIBRARY commdb.lib -LIBRARY apengine.lib //AP engine -LIBRARY xdmsettingsapi.lib -LIBRARY gsecomplugin.lib //GS Ecom plugin -LIBRARY agentdialog.lib // To show access points only in emulator - -LIBRARY featmgr.lib // Feature Manager -LIBRARY hlplch.lib // HlpLauncher -LIBRARY inetprotutil.lib // conversions - -// This is optional - used only by Codewarrior for convenience. -DOCUMENT 10207428.rss -// End of File diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/group/XDMPluginIcons.mk --- a/XDMSettingsUI/group/XDMPluginIcons.mk Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -# -# Copyright (c) 2005 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: XDM Settings UI -# - -ifeq (WINS,$(findstring WINS, $(PLATFORM))) -ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z -else -ZDIR=\epoc32\data\z -endif - -# ---------------------------------------------------------------------------- -# TODO: Configure these -# ---------------------------------------------------------------------------- - -TARGETDIR=$(ZDIR)\resource\apps -HEADERDIR=\epoc32\include -ICONTARGETFILENAME=$(TARGETDIR)\gsxdmplugin.mif -HEADERFILENAME=$(HEADERDIR)\gsxdmplugin.mbg - -do_nothing : - @rem do_nothing - -MAKMAKE : do_nothing - -BLD : do_nothing - -CLEAN : do_nothing - -LIB : do_nothing - -CLEANLIB : do_nothing - -# ---------------------------------------------------------------------------- -# TODO: Configure these. -# -# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by -# MifConv if the mask detph is defined. -# -# NOTE 2: Usually, source paths should not be included in the bitmap -# definitions. MifConv searches for the icons in all icon directories in a -# predefined order, which is currently \s60\icons, \s60\bitmaps2, \s60\bitmaps. -# The directory \s60\icons is included in the search only if the feature flag -# __SCALABLE_ICONS is defined. -# ---------------------------------------------------------------------------- - -RESOURCE : - mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \ - /c8,8 qgn_prop_set_conn_xdm.bmp - - -FREEZE : do_nothing - -SAVESPACE : do_nothing - -RELEASABLES : - @echo $(HEADERFILENAME)&& \ - @echo $(ICONTARGETFILENAME) - -FINAL : do_nothing diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/group/bld.inf --- a/XDMSettingsUI/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: Build information file GS XDM Plugin -* -*/ - - - - -#include - -#ifdef __XDM - -// Platforms -PRJ_PLATFORMS -DEFAULT -// Help exports -#include "../help/group/bld.inf" - -PRJ_EXPORTS -// IBYs -../rom/GSXDMPlugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(gsxdmplugin.iby) -../rom/GSXDMPluginResources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(gsxdmpluginresources.iby) -// LOC -../loc/gsxdmplugin.loc MW_LAYER_LOC_EXPORT_PATH(gsxdmplugin.loc) - -PRJ_EXTENSIONS -START EXTENSION s60/mifconv - OPTION TARGETFILE gsxdmplugin.mif - OPTION HEADERFILE gsxdmplugin.mbg - OPTION SOURCES -c8,8 qgn_prop_set_conn_xdm -END - - -// MMP Files -PRJ_MMPFILES -XDMPlugin.mmp - -PRJ_TESTMMPFILES -//../internal/tsrc/test/group/ut_xdmplugin.mmp - - -#endif //__XDM - -// End of File - - diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/help/data/xhtml.zip Binary file XDMSettingsUI/help/data/xhtml.zip has changed diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/help/group/bld.inf --- a/XDMSettingsUI/help/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -/* -* Copyright (c) 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: -* Export help related files. -* -*/ - -#include -PRJ_EXPORTS -:zip ../data/xhtml.zip /epoc32/data/z/resource/ overwrite -:zip ../data/xhtml.zip /epoc32/winscw/c/resource/ overwrite - -../inc/xdm.hlp.hrh MW_LAYER_PLATFORM_EXPORT_PATH(csxhelp/xdm.hlp.hrh) -../rom/xdmsettingsuihelps_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(xdmsettingsuihelps_variant.iby) diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/help/inc/xdm.hlp.hrh --- a/XDMSettingsUI/help/inc/xdm.hlp.hrh Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - -// -// xdm.hlp.hrh generated by CSXHelp Utilities. -// - -#ifndef __XDM_HLP_HRH__ -#define __XDM_HLP_HRH__ - -_LIT(KXDM_HLP_LIST_VIEW, "XDM_HLP_LIST_VIEW"); // -_LIT(KXDM_HLP_EDIT_SET, "XDM_HLP_EDIT_SET"); // - -#endif \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/help/rom/xdmsettingsuihelps_variant.iby --- a/XDMSettingsUI/help/rom/xdmsettingsuihelps_variant.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - -#ifndef __XDMSETTINGSUIHELPS_VARIANT_IBY__ -#define __XDMSETTINGSUIHELPS_VARIANT_IBY__ - -#if defined(FF_S60_HELPS_IN_USE) - data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x10207429/contents.zip, RESOURCE_FILES_DIR/xhtml/%02d/0x10207429/contents.zip) - data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x10207429/index.xml, RESOURCE_FILES_DIR/xhtml/%02d/0x10207429/index.xml) - data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x10207429/keywords.xml, RESOURCE_FILES_DIR/xhtml/%02d/0x10207429/keywords.xml) - data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x10207429/meta.xml, RESOURCE_FILES_DIR/xhtml/%02d/0x10207429/meta.xml) -#endif - -#endif \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/inc/SettingsData.h --- a/XDMSettingsUI/inc/SettingsData.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: XDM GS plugin data holding class for XDM setting list -* -*/ - - - - -#ifndef __SettingsData_H__ -#define __SettingsData_H__ - -// INCLUDE FILES -#include -#include - -#include "XDMPlugin.hrh" - - -/** -* CSettingsData data holding class for an XDM set -*/ -class CSettingsData : public CBase - { - public: - - /** - * Default 1st phase factory method. - * Creates an instance of CSettingsData - */ - static CSettingsData* NewL(); - - /** - * Default 1st phase factory method. - * Creates an instance of CSettingsData, leaves it on stack - */ - static CSettingsData* NewLC(); - - /** - * Destructor - */ - virtual ~CSettingsData(); - - /** - * Resets all data to initial values - */ - void Reset(); - - private: - - /** - * 2nd Phase constructor - */ - void ConstructL(); - - /** - * C++ Constructor - */ - CSettingsData(); - - public: - - // Buffer holding the XDM set name - TBuf iSettingName; - - // Buffer holding the XDM set name with localized digits for display - TBuf iSettingNameDisp; - - // Buffer holding the XDM set server address - TBuf iServerAddress; - - // Access point number - TInt32 iAccessPoint; - - // Buffer holding the access point number as a descriptor - TBuf iAccessPointDes; - - // Buffer holding the SIP URL - TBuf iSipURL; - - // Buffer holding the User ID - TBuf iUserID; - - // Buffer holding the password - TBuf iPassword; - - // Buffer holding the access point name - TBuf iAccessPointName; - - // XDM setting, settings id, used to identify in XDM settings API - TInt32 iSettingId; - }; - -#endif // __SettingsData_H__ \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/inc/XDMExternalInterface.h --- a/XDMSettingsUI/inc/XDMExternalInterface.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/* -* Copyright (c) 2005 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 with UID definitions - * -*/ - - - -#ifndef XDMEXTERNALINTERFACE_H -#define XDMEXTERNALINTERFACE_H - -#include -#include -#include -#include "XDMPlugin.h" -#define XDM_PLUGIN - -/** -* This UID is used for both the view UID and the ECOM plugin implementation -* UID. -*/ -const TUid KGSXDMPluginUid = { 0x10207429 }; - -// View UIDs -const TUid KViewId= {0x1028236B}; - -#endif // XDMEXTERNALINTERFACE_H - -// End of File diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/inc/XDMPlugin.h --- a/XDMSettingsUI/inc/XDMPlugin.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,184 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: XDM GS plugin, UI(CAknView) interface header -* -*/ - - - - -#ifndef GS_XDMPLUGIN_H -#define GS_XDMPLUGIN_H - -// INCLUDES -#include -#include -#include -#include - -#include "XDMPlugin.hrh" - -// FORWARD DECLARATIONS -class CXDMPluginContainer; -class CXDMPluginSLContainer; -class CAknViewAppUi; -class CSettingsData; - -/** -* This UID is used for both the view UID and the ECOM plugin implementation -* UID. -*/ -//const TUid KGSXDMPluginUid = { 0x10207429 }; - -// CLASS DECLARATION - -/** -* CXDMPlugin view class (CAknView). -* -* This is XDM GS plugin. -*/ -class CXDMPlugin : public CGSPluginInterface - { - - public: // Constructors and destructor - - /** - * Symbian OS two-phased constructor - * @return - */ - static CXDMPlugin* NewL( TAny* aInitParams ); - - /** - * Destructor. - */ - ~CXDMPlugin(); - - /** - * Load the SettingsView with specified XDM set and type of loading - * The types are EEditExisting, ENewDefault, ENewFromExisting - */ - void LoadSettingsViewL(TXDMSettingsViewType aType, TDesC& aXDMSetName); - - /** - * Loads the Main View where list of XDM sets are visible - */ - void LoadMainViewL(); - - /** - * Manual resource change method - * @param aType ype of resource - */ - void HandleResourceChangeManual(TInt aType); - - /** - * Hides MSK if not needed - */ - void UpdateMskL(); - - public: // From CAknView - - /** - * This function is used for identifying the plugin - */ - TUid Id() const; - - /** - * See CAknView - */ - //void HandleClientRectChange(); - void HandleViewRectChange(); - - /** - * See CAknView - */ - void DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - /** - * See CAknView - */ - void DoDeactivate(); - - /** - * See CAknView - */ - void HandleCommandL( TInt aCommand ); - - - - protected: - - /** - * C++ default constructor. - */ - CXDMPlugin( ); - - /** - * Symbian OS default constructor. - */ - void ConstructL(); - - private: - - /** - * See base classes - */ - void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane); - - public: // From CGSPluginInterface - - /** - * See CGSPluginInterface - */ - void GetCaptionL( TDes& aCaption ) const; - - /** - * See CGSPluginInterface - */ - TInt PluginProviderCategory() const; - - /** - * @see CGSPluginInterface - */ - CGulIcon* CreateIconL( const TUid aIconType ); - - - protected: //Data - - // Reference to application UI - not owned. - CAknViewAppUi* iAppUi; - - // RConeResourceLoader - RConeResourceLoader iResources; - - // Previous View ID - TVwsViewId iPrevViewId; // Previous view. - - private: - - // Pointer to the main list container - owned - CXDMPluginContainer* iMainListContainer; - - // Pointer to the setting list container - owned. - CXDMPluginSLContainer* iSettingListContainer; - - // Pointer to the current container - not owned. - CCoeControl* iCurrentContainer; - -#ifdef _DEBUG - friend class UT_CXDMPluginContainer; -#endif - }; - -#endif // GS_XDMPLUGIN_H diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/inc/XDMPlugin.hrh --- a/XDMSettingsUI/inc/XDMPlugin.hrh Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* Copyright (c) 2009-2010 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: XDM Settings enumerations -* -*/ - - -#ifndef XDM_PLUGIN_HRH -#define XDM_PLUGIN_HRH - -/** - * TSettingItems - identifiers for individual setting items - */ -enum TSettingItems - { - ESettingItemSettingName = 1, - ESettingItemAccessPoint, - ESettingItemServerAddress, - ESettingItemSipURL, - ESettingItemUserID, - ESettingItemPassword - }; - -/** - * TGSXDMPluginCommandIds - GSXDMPlugin menu commands - */ -enum TGSXDMPluginCommandIds - { - EGSXDMPluginCmdChange = 0x06000, - EGSXDMPluginCmdEdit, - EGSXDMPluginCmdNewSettings, - EGSXDMPluginCmdNewExisting, - EGSXDMPluginCmdNewDefault, - EGSXDMPluginCmdDelete, - EGSXDMPluginCmdExitFromSL - }; - -/** - * TXDMSettingsViewType - Used inside UI to differentiate - * different kinds of editing - */ -enum TXDMSettingsViewType - { - EEditExisting, - ENewDefault, - ENewFromExisting - }; - -/** - * Constants used in application - */ -enum TXDMSettingsIndex - { - ESettingNameIndex = 0, - EAccessPointIndex, - EServerAddressIndex, - ESipURLIndex, - EUserIDIndex, - EPasswordIndex - }; - -/** - * Constants used in resources and in application - */ -#define KMaxSettingSetNameLength 32 -#define KMaxSettingSetNameArrayGran 10 -#define KMaxUserIDLength 100 -#define KMaxServerAddressLength 100 -#define KMaxPasswordLength 100 -#define KMaxSIPURLLength 100 -#define KMaxAccessPointNameLength 32 -#define KMaxAccessPointDesLength 32 -#define KMaxMessageToDisplayLength 100 - - -#endif // XDM_PLUGIN_HRH diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/inc/XDMPluginContainer.h --- a/XDMSettingsUI/inc/XDMPluginContainer.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: XDM GS plugin main list container. -* -*/ - - - - -#ifndef GS_XDMPLUGIN_CONTAINER_H -#define GS_XDMPLUGIN_CONTAINER_H - -// INCLUDES -#include -#include -#include -#include -#include -#include - -#include "XDMPlugin.hrh" - - -// FORWARD DECLARATION -class CGSListBoxItemTextArray; -class CEikTextListBox; -class CAknSingleStyleListBox; -class CXDMPluginMainList; -class CAknColumnListBox; -class CAknViewAppUi; -class CXDMPlugin; -class CMainView; - -// CLASS DECLARATION - -/** -* CXDMPluginContainer main list container class -*/ -class CXDMPluginContainer : public CCoeControl, - public MEikListBoxObserver, - public MEikMenuObserver - { - public: // Constructors and destructor - - /** - * Constructor - */ - CXDMPluginContainer(CAknView* aView); - - /** - * Symbian OS constructor. - * - * @param aRect Listbox's rect. - */ - void ConstructL( const TRect& aRect ); - - /** - * Destructor. - */ - ~CXDMPluginContainer(); - - public: // From CCoeControl - - /** - * See CCoeControl - */ - TInt CountComponentControls() const; - - /** - * See CCoeControl - */ - CCoeControl* ComponentControl( TInt aIndex ) const; - - /** - * See CCoeControl - */ - TKeyResponse OfferKeyEventL( - const TKeyEvent& aKeyEvent, TEventCode aType ); - - /** - * See CCoeControl - */ - void SizeChanged(); - - /** - * See CCoeControl - */ - void HandleResourceChange( TInt aType ); - - /** - * Gets help context - */ - void GetHelpContext( TCoeHelpContext& aContext ) const; - - /** - * See CCoeControl - */ - void FocusChanged(TDrawNow aDrawNow); - - - public: // own methods - - /** - * Invokes editing on current item, in response to UI Edit command - */ - void EditCurrentItemL(); - - /** - * See MEikListBoxObserver - */ - void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); - - /** - * From MEikMenuObserver - */ - void SetEmphasis( CCoeControl* /*aMenuControl*/, TBool /*aEmphasis*/ ){}; - - - /** - * From MEikMenuObserver - */ - void ProcessCommandL( TInt /*aCommandId*/ ){}; - - /** - * Finds whether main list is empty - * @return ETrue if main list is empty. - */ - TBool IsListEmpty(); - - /** - * Finds whether the current item is the last item in main list - * @return ETrue if current item is last in main list. - */ - TBool IsLastItem(); - - /** - * Delete the currently focused set. Also deletes it using XDM API - */ - void DeleteCurrentSetL(); - - /** - * Load the main list using XDM API, and perform other necessary tasks - */ - void LoadSettingsListArrayL(); - - /** - * Get the name of currently focused set. Usually called by UI. - * The pointer to buffer remains on heap, which is deleted by caller. - * @return HBufC* pointer to currently focused set name - */ - HBufC* GetCurrentSetNameLC(); - - /** - * This function starts the deleting current XDM set. All sub functions - * are called through this function. - */ - void DeleteSetProcedureL(); - - /** - * This function does necessary action on layout change, it is called from - * actual resource change function. - * @param aType type of resource - */ - void HandleResourceChangeManual(TInt aType); - - /** - * Set the focus to the given set name if it exist - * @param aSetName Set name to set focus - */ - void SetFocusIfExist(TDes& aSetName); - - - private: // own methods - - /** - * Perform the initial setup of the main list. Called by Constructor - */ - void SetupListL(); - - /** - * Get the Setting ID of the current set - * @return TInt setting ID of the current set - */ - TInt CXDMPluginContainer::GetCurrentSetIdL(); - - /** - * Load XDM Collection names with trap, useful when list doesnt have anything - * @param Reference to setting ids - * @return CDesCArray collection names - */ - CDesCArray* LoadCollectionNamesL(RArray& aSettingIDs); - - - - private: // data - - // Pointer to the main list, owned - CAknColumnListBox* iMainList; - - // Pointer to the application view, not owned - CAknView* iView; // not owned - - // The XDM set names list array, not owned - CDesCArray* iSettingListArray; - - // Buffer for holding new XDM set name - TBuf iSettingNewName; - - // Title for menu pane - TBuf iTitle; - - // Pointer to title pane, not owned - CAknTitlePane* iTitlePane; - - // Menubar, owned - CEikMenuBar* iEikMenuBar; - }; - -#endif //GS_XDMPLUGIN_CONTAINER_H diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/inc/XDMPluginSLContainer.h --- a/XDMSettingsUI/inc/XDMPluginSLContainer.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,306 +0,0 @@ -/* -* Copyright (c) 2005-2010 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: XDM GS plugin Settings list container. -* -*/ - - - - -#ifndef GS_XDMPLUGIN_SL_CONTAINER_H -#define GS_XDMPLUGIN_SL_CONTAINER_H - -// INCLUDES -#include -#include -#include -#include - -#include "XDMPlugin.hrh" - -// FORWARD DECLARATION -class CGSListBoxItemTextArray; -class CEikTextListBox; -class CSettingsData; -class CXDMPluginSettinglist; -class CAknColumnListBox; -class CAknViewAppUi; - -/** -* CXDMPluginSLContainer Settings list container class -*/ -class CXDMPluginSLContainer : public CCoeControl, MEikListBoxObserver - { - public: - - /** - * C++ Constructor - */ - CXDMPluginSLContainer(CAknView* aView); - - /** - * Symbian OS constructor. - * @param aRect Listbox's rect. - */ - void ConstructL( const TRect& aRect); - - /** - * Destructor. - */ - ~CXDMPluginSLContainer(); - - public: // From CCoeControl - - /** - * See CCoeControl. - */ - TInt CountComponentControls() const; - - /** - * See CCoeControl. - */ - CCoeControl* ComponentControl( TInt aIndex ) const; - - /** - * See CCoeControl. - */ - TKeyResponse OfferKeyEventL( - const TKeyEvent& aKeyEvent, TEventCode aType ); - - /** - * See CCoeControl. - */ - void SizeChanged(); - - /** - * See CCoeControl. - */ - void Draw(const TRect& aRect) const; - - /** - * See CCoeControl - */ - void HandleResourceChange( TInt aType ); - - /** - * Gets help context - */ - void GetHelpContext( TCoeHelpContext& aContext ) const; - - /** - * See CCoeControl - */ - void FocusChanged(TDrawNow aDrawNow); - - public: - - /** - * Edit currently focused item on settings list. called from UI - */ - void EditCurrentItemL(); - - /** - * See MEikListBoxObserver - */ - void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); - - /** - * Prepare the XDM set with given name for editing - * @param aXDMSetName reference to the XDM set name to be edited - */ - void PrepareXDMSetForEditingL(TDesC& aXDMSetName); - - /** - * Prepare the a new XDM set with default values - * @param none - */ - void PrepareXDMSetNewDefaultL(); - - /** - * Prepare the a new XDM set with values from an existing set - * @param aXDMSetName reference to the new XDM set name - */ - void PrepareNewXDMSetFromExistingL(TDesC& aXDMSetName); - - /** - * Display the dialog to the user to select the creation of new set - * from existing sets. Saves the selected name to iData - * @return ETrue if user has choosen a set, return EFalse if user cancels - */ - TBool DisplayNewXDMSetOptionsL(); - - /** - * Called by the UI when back button is pressed, to perform needed steps - * @return ETrue if settings list is allowed to close - */ - TBool IsExitProcessingOKL(); - - /** - * Handle manual resource change with its type - * @param aType, type of resource - */ - void HandleResourceChangeManual(TInt aType); - - /** - * Save settings if possible, without any user interaction. - * this is useful for force exit, e.g. when mmc taken out - */ - void SaveSettingsIfPossibleL(); - - /** - * Return the name of current set in iData - * @return TDes reference to current set - */ - TDes& GetCurrentSetName(); - - /** - * Returns ETrue is AP used by XDM settings is in use - * @return ETrue if ap in use - */ - TBool SettingsApInUseL(TDesC& aXDMSetName); - - - private: // Most of these methods perform operations using iData - - /** - * Sets the title pane text with given discriptor - * @param aTitleText text to be shown on title pane - */ - void SetTitlePaneTextL( const TDesC& aTitleText ) const; - - /** - * Finds out whether compulsory items are filled - * @return ETrue if compulsory items are filled - */ - TBool AreCompulsoryItemsFilled(); - - /** - * Display a query dialog to user that compulsory settings are not - * filled, and if user wants to delete the settings - * @return ETrue if user wants to delete the settings - */ - TBool DisplayDeleteOrDontSaveDialogL(); - - /** - * Update an XDM set if it already exist or create it if it doesnt exist - * @param aShowDialog whether dialog will be displayed or not - * @return ETrue if save procedure goes ok - */ - TBool SaveOrCreateAndSaveXDMSetL(TBool aShowDialog); - - /** - * Deletes the XDM set if it exist in the XDM settings API - */ - void DeleteXDMSetIfExistL(); - - /** - * Gets the setting id of the given set name - * @param aXDMSetName reference to XDM set name - * @return settingid of the given xdm set - */ - TInt GetSettingIdL(TDesC& aXDMSetName); - - /** - * If the given XDM set name with given ID is exist or not - * @param aXDMSetName reference to XDM set name - * aSettingId settings id of the XDM - * @return ETrue of XDM set exist with given name - */ - TBool IsXDMSetNameExistL(TDesC& aXDMSetName, TInt32& aSettingId); - - /** - * Load XDM Collection names with trap, useful when list doesnt have anything - * @param Reference to setting ids - * @return CDesCArray collection names - */ - CDesCArray* LoadCollectionNamesL(RArray& aSettingIDs, TBool aDisp); - - /** - * Check the given name and returns the possible altered name. NULL - * pointer is returned no change is needed in aName, so aName can be - * used if NULL pointer is returned. If some valid pointer is returned - * then that pointer is owned by client, and needed to be deleted after - * usage. - * @param aName, the name from which to start suggestion. - * @param aChanged, returns ETrue if an alternate name is returned. - * @return HBufC* pointer to the new name, can be NULL if not needed. - */ - HBufC* DoMakeValidNameL(HBufC* aName, TBool& aChanged); - - /** - * Ensures that the passed name is valid, length > 0 & length < max. - * If length == 0, leaves with KErrInvalidName - * If name is only whitespace, leaves with KErrInvalidName - * If name is longer than max, name is truncated - * It copies the name, pushes it onto the CleanupStack and passes - * ownership. - - * @param aName The name - * @param aChanged A reference to a boolean to hold whether the name - * had been changed or not. - * @return The valid-length name - */ - HBufC* EnsureMaxLengthLC( const TDesC* aName, TBool& aChanged); - - /** - * Given aName in the format or - * , return a - * pointer to the leading part. That is, if there is - * trailing , then that is excluded; - * if there is no trailing part, then the original - * decriptor is returned. - * Examples: - * - "Foo" returns "Foo"; - * - "Foo 12" returns "Foo 12"; - * - "Foo(12)" returns "Foo"; - * - "Foo 12 (34)" returns "Foo 12 "; - * - "Foo bar" returns "Foo bar"; - * - "Foo " returns "Foo ". - * @param aName The name to get the prefix from - * @return The prefix - */ - TPtrC GetPrefix( const TDesC& aName ); - - - /** - * If aName is constructed from aPrefix with a postfix, get the numeric - * value of the postfix, e.g: - * - GetPostfix( "Foo (3)", "Foo" ) == 3 - * - GetPostfix( "Foo 23 (45)", "Foo 23" ) == 45 - * If aName is the same as aPrefix, return 0, e.g.: - * - GetPostfix( "Foo", "Foo" ) == 0 - * If aName is not constructed from aPrefix, return -1, e.g.: - * - GetPostfix( "Foobar", "Foo" ) == -1 - * - GetPostfix( "Fo 23 45", "Foo" ) == -1 - * @param aName The name to get the postfix from - * @param aPrefix The prefix - * @return The postfix - */ - TInt GetPostfix( const TDesC& aName, const TDesC& aPrefix ); - - - private: // data - - // CXDMPluginSettinglist owned - CXDMPluginSettinglist* iSettingList; - - // Pointer to settings data owned - CSettingsData* iData; - - // Pointer to the application view, not owned - CAknView* iView; // not owned - - }; - -#endif //GS_XDMPLUGIN_SL_CONTAINER_H diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/inc/XDMPluginSettinglist.h --- a/XDMSettingsUI/inc/XDMPluginSettinglist.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -/* -* Copyright (c) 2005-2010 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: XDM GS plugin, Setting List class -* -*/ - - - - -#ifndef CXDMPLUGINSETTINGLIST_H -#define CXDMPLUGINSETTINGLIST_H - -// INCLUDE FILES -#include -#include -#include - -// FORWARD DECLARATIONS -class CSettingsData; - -/** -* CXDMPluginSettinglist derived from CAknSettingItemList -*/ -class CXDMPluginSettinglist : public CAknSettingItemList - { - - public: - - /** - * Symbian OS two-phased constructor - * @param reference to CSettingsData from which data to be displayed - */ - static CXDMPluginSettinglist* NewL(CSettingsData &aData); - - /** - * Symbian OS two-phased constructor, leave pointer to stack - * @param reference to CSettingsData from which data to be displayed - */ - static CXDMPluginSettinglist* NewLC(CSettingsData &aData); - - /** - * Destructor. - */ - virtual ~CXDMPluginSettinglist(); - - /** - * Inherited from base classes. See CCoeControl - */ - void SizeChanged(); - - /** - * Edit the indexed item. This probably came as a result of UI command - * @param aIndex index to the item - * aCalledFromMenu ETrue of this call resulted from UI command - */ - void EditItemL (TInt aIndex, TBool aCalledFromMenu); - - /** - * Actual editing of item done here, from whereever the call is made from - */ - void EditCurrentItemL(); - - /** - * Gets the Access point name - * @param aAP Access point number as integer - * aAccessPoint reference to TDes, doesnt change if AP not found - * otherwise access point name returns here - */ - void GetAccessPointNameL(TInt32 aAP, TDes& aAccessPoint); - - /** - * For checking if access point is in use - * @param aAP Access point number as integer - * return ETrue if access point is in use - */ - TBool IsAccessPointInUseL(TInt32 aAP); - - /** - * Sets the focus to the first item of the settings list - */ - void ResetItemIndex(); - - private: - - /** - * C++ constructor - * @param reference to CSettingsData - */ - CXDMPluginSettinglist(CSettingsData &aData); - - /** - * See CAknSettingItemList - */ - CAknSettingItem* CreateSettingItemL (TInt aSettingId); - - /** - * Edit the AccessPoint, We edit the access point differently than other - * settings. We bypass the list's text editor and open the S60 standard - * access point editor - */ - void EditAccessPointL(); - - /** - * Saves the changed settings to the list's data - * @param aIndex index of the setting to be saved - */ - void SaveSettingL(TInt aIndex); - - /** - * Sets the title pane text with given discriptor - * @param aTitleText text to be shown on title pane - */ - void SetTitlePaneTextL( const TDesC& aTitleText ) const; - - private: - - // Reference to the data owned by container - CSettingsData& iSettingsData; - - }; - -#endif // CXDMPLUGINSETTINGLIST_H diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/loc/GSXDMPlugin.loc --- a/XDMSettingsUI/loc/GSXDMPlugin.loc Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,185 +0,0 @@ -/* -* Copyright (c) 2005 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: Localization strings for GS XDM Plugin -* -*/ - - - - -// LOCALISATION STRINGS - -//d:Caption string for AIF file (short) -//d:GS XDM Settings plugin -//l:cell_app_pane_t1 -//r:3.0 -#define qtn_apps_xdm_grid "XDMSettingsApp" - -//d:Caption string for AIF file (long) -//d:GS XDM Settings plugin -//l:list_single_large_graphic_pane_t1 -//r:3.0 -#define qtn_apps_xdm_list "XDMSettingsApp" - -//d:Popup confirmation dialog text when deleting the last XDM set of the list -//d:GS XDM Settings plugin -//l:popup_note_window -//r:3.1 -#define qtn_xdm_conf_delete_last "%U is the last XDM set. Are you sure to delete it?" - -//d:Popup confirmation dialog text when deleting a XDM set, not the last. -//d:GS XDM Settings plugin -//l:popup_note_window -//r:3.1 -#define qtn_xdm_conf_delete "Delete %U?" - -//d:Menu Item use existing set -//d:GS XDM Settings plugin -//l:heading_pane_t1 -//r:3.1 -#define qtn_xdm_propmt_use_exist "Use existing set" - -//d:Menu Item to change a specific setting in an XDM set -//d:GS XDM Settings plugin -//l:list_single_pane_t1_cp2 -//r:3.1 -#define qtn_xdm_settings_change "Change" - -//d:Default text in password setting field -//d:GS XDM Settings plugin -//l:list_set_graphic_pane_t1 -//r:3.1 -#define qtn_xdm_text_password "****" - -//d:Title for password setting field -//d:GS XDM Settings plugin -//l:list_setting_pane_t1 -//r:3.1 -#define qtn_xdm_settings_password "HTTP password" - -//d:Title for SIP setting field -//d:GS XDM Settings plugin -//l:list_setting_pane_t1 -//r:3.1 -#define qtn_xdm_settings_sip "SIP in use" - -//d:Title for user id settings -//d:GS XDM Settings plugin -//l:list_setting_pane_t1 -//r:3.1 -#define qtn_xdm_settings_username "HTTP username" - -//d:Title of the service address setting field -//d:GS XDM Settings plugin -//l:list_setting_pane_t1 -//r:3.1 -#define qtn_xdm_settings_address "XDM service address" - -//d:Default text in compulsory setting fields -//d:GS XDM Settings plugin -//l:list_set_graphic_pane_t1 -//r:3.1 -#define qtn_xdm_settings_must_define "Must be defined" - -//d:Title of the access point setting field -//d:GS XDM Settings plugin -//l:list_setting_pane_t1 -//r:3.1 -#define qtn_xdm_settings_access_point "Access point" - -//d:Default xdm set name -//d:GS XDM Settings plugin -//l:list_set_graphic_pane_t1 -//r:3.1 -#define qtn_xdm_text_new_set_many "New XDM set(%N)" - -//d:Menu item for setting up a new XDM set -//d:GS XDM Settings plugin -//l:list_single_pane_t1_cp2 -//r:3.1 -#define qtn_xdm_text_new_set "New XDM set" - -//d:Title of XDM set name setting -//d:GS XDM Settings plugin -//l:list_setting_pane_t1 -//r:3.1 -#define qtn_xdm_settings_set_name "XDM set name" - -//d:Menu item delete, to delete an specific XDM set -//d:GS XDM Settings plugin -//l:list_single_pane_t1_cp2 -//r:3.1 -#define qtn_xdm_options_delete "Delete" - -//d:Title of the popup sub menu -//d:GS XDM Settings plugin -//l:list_single_popup_submenu_pane_t1 -//r:3.1 -#define qtn_xdm_options_new_sub_existing "Use existing set" - -//d:Menu item to edit an XDM set -//d:GS XDM Settings plugin -//l:list_single_pane_t1_cp2 -//r:3.1 -#define qtn_xdm_options_edit_set "Edit XDM set" - -//d: Menu Item to use default set template for a new set -//d:GS XDM Settings plugin -//l:list_single_popup_submenu_pane_t1 -//r:3.1 -#define qtn_xdm_options_new_sub_default "Use default set" - -//d:Menu item New XDM set -//d:GS XDM Settings plugin -//l:list_single_pane_t1_cp2/opt3 -//r:3.1 -#define qtn_xdm_options_new_set "New XDM set" - -//d:Compulsory setting item indicator -//d:GS XDM Settings plugin -//l:list_set_graphic_pane_t1 -//r:3.1 -#define qtn_xdm_compulsory_indicator "*" - -//d:XDM sets, empty list primary text -//d:GS XDM Settings plugin -//l:main_pane_empty_t1/opt2 -//r:3.1 -#define qtn_xdm_main_empty_info_text "No XDM settings" - -//d:XDM sets, empty list secondary text -//d:GS XDM Settings plugin -//l:main_list_empty_pane/opt2 -//r:3.1 -#define qtn_xdm_main_empty_info_text_secondary "Create new settings from Options menu" - -//d:Text in main title pane -//d:GS XDM Settings plugin -//l:title_pane_t2/opt12 -//r:3.1 -#define qtn_xdm_title "XDM settings" - -//d:Text in pop up query dialog for reminding compulsory settings -//d:GS XDM Settings plugin -//l:popup_note_window -//r:3.1 -#define qtn_xdm_compulsory_query_info_text "Incomplete XDM setting set. Delete set?" - -//d:Text in info note that a given xdm set name is already exist -//d:GS XDM Settings plugin -//l:popup_note_window -//r:3.1 -#define qtn_xdm_set_already_exist_info "Name already in use: %U" - -//End of file diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/rom/GSXDMPlugin.iby --- a/XDMSettingsUI/rom/GSXDMPlugin.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* -* Copyright (c) 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: GS XDM Plugin UI -* -*/ - - -#ifndef __GS_XDM_Plugin_IBY__ -#define __GS_XDM_Plugin_IBY__ - -#include -#ifdef __XDM - -//GS plugin in use -#ifdef RD_GS_RENOVATION - -// GS XDM Plugin UI -ECOM_PLUGIN(GSXDMPlugin.dll,10207428.rsc) // this publishes the DLL and the - // resource file to the correct location -data=DATAZ_/BITMAP_DIR/GSXDMplugin.mif BITMAP_DIR/GSXDMplugin.mif - -#endif //RD_GS_RENOVATION - -#endif //__XDM - -#endif //__GS_XDM_Plugin_IBY__ diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/rom/GSXDMPluginResources.iby --- a/XDMSettingsUI/rom/GSXDMPluginResources.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* -* Copyright (c) 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: GS XDM Plugin UI Resources -* -*/ - - -#ifndef __GS_XDM_Plugin_Resources_IBY__ -#define __GS_XDM_Plugin_Resources_IBY__ - -#include -#ifdef __XDM - -//GS plugin in use -#ifdef RD_GS_RENOVATION - -// GS XDM Plugin UI - -data=DATAZ_/RESOURCE_FILES_DIR/XDMPluginRsc.RSC RESOURCE_FILES_DIR/XDMPluginRsc.RSC - -#endif //RD_GS_RENOVATION - -#endif //__XDM - -#endif //__GS_XDM_Plugin_Resources_IBY__ diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/src/SettingsData.cpp --- a/XDMSettingsUI/src/SettingsData.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: XDM GS plugin data holding class for XDM setting list -* -*/ - - - - -// INCLUDE FILES -#include "SettingsData.h" - -// ----------------------------------------------------------------------------- -// CSettingsData::NewL -// ----------------------------------------------------------------------------- -// -CSettingsData *CSettingsData::NewL() - { - CSettingsData *self = CSettingsData::NewLC(); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CSettingsData::NewLC() -// ----------------------------------------------------------------------------- -// -CSettingsData *CSettingsData::NewLC() - { - CSettingsData *self = new (ELeave) CSettingsData(); - CleanupStack::PushL(self); - - self->ConstructL(); - - return self; - } - -// ----------------------------------------------------------------------------- -// CSettingsData::~CSettingsData() -// ----------------------------------------------------------------------------- -// -CSettingsData::~CSettingsData() - { - } - -// ----------------------------------------------------------------------------- -// CSettingsData::CSettingsData() -// ----------------------------------------------------------------------------- -// -CSettingsData::CSettingsData() - { - // initialise local data - Reset(); - } - -// ----------------------------------------------------------------------------- -// CSettingsData::ConstructL() -// ----------------------------------------------------------------------------- -// -void CSettingsData::ConstructL() - { - } - -// ----------------------------------------------------------------------------- -// CSettingsData::Reset() -// ----------------------------------------------------------------------------- -// -void CSettingsData::Reset() - { - iSettingName = KNullDesC; - iSettingNameDisp = KNullDesC; - iServerAddress = KNullDesC; - iAccessPoint = -1; - iAccessPointDes = KNullDesC; - iSipURL = KNullDesC; - iUserID= KNullDesC; - iPassword = KNullDesC; - iAccessPointName = KNullDesC; - iSettingId = -1; - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/src/XDMPlugin.cpp --- a/XDMSettingsUI/src/XDMPlugin.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,510 +0,0 @@ -/* -* Copyright (c) 2005-2010 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: XDMPlugin Implementation -* -*/ - - - - -// Includes -#include "XDMExternalInterface.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "XDMPlugin.h" -#include "XDMPluginContainer.h" -#include "XDMPluginSLContainer.h" -#include "XDMPlugin.hrh" - - -// Constants - -const TInt KMaxNameLength = 255; - -_LIT( KGSXDMPluginResourceFileName, "z:\\resource\\XDMPluginRsc.rsc" ); - -#ifdef __SCALABLE_ICONS -// bitmap -_LIT( KGSXDMPluginIconFileName, "\\resource\\apps\\GSXDMplugin.mif"); -#else //__SCALABLE_ICONS -// svg file -_LIT( KGSXDMPluginIconFileName, "\\resource\\apps\\GSXDMplugin.mbm"); -#endif //__SCALABLE_ICONS - - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CXDMPlugin::CXDMPlugin() -// Constructor -// -// --------------------------------------------------------------------------- -// -CXDMPlugin::CXDMPlugin( ) - : iAppUi( CAknView::AppUi() ), iResources( *CCoeEnv::Static() ) - { - - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::~CXDMPlugin() -// Destructor -// --------------------------------------------------------------------------- -// -CXDMPlugin::~CXDMPlugin() - { - if (iCurrentContainer) - { - if(iAppUi) - iAppUi->RemoveFromViewStack( *this, iCurrentContainer ); - iCurrentContainer = NULL; - } - - if( iMainListContainer ) - { - delete iMainListContainer; - iMainListContainer=NULL; - } - - if (iSettingListContainer) - { - delete iSettingListContainer; - iSettingListContainer=NULL; - } - - iResources.Close(); - /** Nice to know when the plugin is cleaned up */ - #ifdef _DEBUG - RDebug::Print( _L( "[CXDMPlugin] ~CXDMPlugin()" ) ); - #endif - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::ConstructL() -// Symbian OS two-phased constructor -// --------------------------------------------------------------------------- -// -void CXDMPlugin::ConstructL() - { - // To know if the plugin is loaded (for debugging) - #ifdef _DEBUG - RDebug::Print(_L("[CXDMPlugin] ConstructL()" )); - RDebug::Print( _L( "[CXDMPlugin] Loading resource from :" ) ); - RDebug::Print( KGSXDMPluginResourceFileName ); - #endif - - TFileName fileName( KGSXDMPluginResourceFileName ); - BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName ); - iResources.OpenL( fileName ); - BaseConstructL( R_GS_XDM_MAIN_VIEW ); - - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::NewL() -// Static constructor -// --------------------------------------------------------------------------- -// -CXDMPlugin* CXDMPlugin::NewL( TAny* /*aInitParams*/ ) - { - CXDMPlugin* self = new(ELeave) CXDMPlugin( ); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::Id() const -// --------------------------------------------------------------------------- -// -TUid CXDMPlugin::Id() const - { - return KGSXDMPluginUid; - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::HandleClientRectChange() -// --------------------------------------------------------------------------- -void CXDMPlugin::HandleViewRectChange() - { - if ( iMainListContainer->IsVisible() ) - { - iMainListContainer->SetRect( ClientRect() ); - } - - if ( iSettingListContainer->IsVisible() ) - { - iSettingListContainer->SetRect( ClientRect() ); - } - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::DoActivateL() -// --------------------------------------------------------------------------- -// -void CXDMPlugin::DoActivateL( const TVwsViewId& aPrevViewId, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - iPrevViewId = aPrevViewId; - if (iCurrentContainer) - { - iAppUi->RemoveFromViewStack( *this, iCurrentContainer ); - iCurrentContainer = NULL; - } - - - if( iMainListContainer ) - { - delete iMainListContainer; - iMainListContainer=NULL; - } - - if( iSettingListContainer ) - { - delete iSettingListContainer; - iSettingListContainer = NULL; - } - - iMainListContainer = new( ELeave ) CXDMPluginContainer(this); - iMainListContainer->SetMopParent(this); - TRAPD( error, iMainListContainer->ConstructL( ClientRect() ) ); - if (error) - { - delete iMainListContainer; - iMainListContainer = NULL; - User::Leave( error ); - } - - iSettingListContainer = new( ELeave ) CXDMPluginSLContainer(this); - iSettingListContainer->SetMopParent(this); - TRAPD( error1, iSettingListContainer->ConstructL( ClientRect())); - if (error1) - { - delete iSettingListContainer; - iSettingListContainer = NULL; - User::Leave( error1 ); - } - - // switching control - iSettingListContainer->MakeVisible(EFalse); - iCurrentContainer = iMainListContainer; - iAppUi->AddToViewStackL( *this, iCurrentContainer ); - UpdateMskL(); - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::DoDeactivate() -// --------------------------------------------------------------------------- -// -void CXDMPlugin::DoDeactivate() - { - // try to save settings if in settings list container - TInt err; - if (iCurrentContainer == iSettingListContainer) - TRAP(err, iSettingListContainer->SaveSettingsIfPossibleL()); - if (iCurrentContainer) - iAppUi->RemoveFromViewStack( *this, iCurrentContainer ); - iCurrentContainer = NULL; - - if( iMainListContainer ) - { - delete iMainListContainer; - iMainListContainer = NULL; - } - - if( iSettingListContainer ) - { - delete iSettingListContainer; - iSettingListContainer = NULL; - } - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::HandleCommandL() -// --------------------------------------------------------------------------- -// -void CXDMPlugin::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case EAknSoftkeyBack: - if (iCurrentContainer == iSettingListContainer) - { - if (iSettingListContainer->IsExitProcessingOKL()) - LoadMainViewL(); - } - else - iAppUi->ActivateLocalViewL( iPrevViewId.iViewUid ); - break; - case EGSXDMPluginCmdChange: - iSettingListContainer->EditCurrentItemL(); - break; - case EGSXDMPluginCmdEdit: - iMainListContainer->EditCurrentItemL(); - break; - case EGSXDMPluginCmdNewExisting: - if(iSettingListContainer->DisplayNewXDMSetOptionsL()) // if user ok - LoadSettingsViewL(ENewFromExisting, iSettingListContainer->GetCurrentSetName()); - break; - case EGSXDMPluginCmdNewDefault: - LoadSettingsViewL(ENewDefault, iSettingListContainer->GetCurrentSetName()); - break; - case EGSXDMPluginCmdDelete: - iMainListContainer->DeleteSetProcedureL(); - UpdateMskL(); - break; - case EAknCmdHelp: - HlpLauncher::LaunchHelpApplicationL(iEikonEnv->WsSession(), AppUi()->AppHelpContextL ()); - break; - case EGSXDMPluginCmdExitFromSL: - if (iCurrentContainer == iSettingListContainer) - { - if (iSettingListContainer->IsExitProcessingOKL()) - iAppUi->HandleCommandL( EAknCmdExit ); - } - break; - case EAknCmdExit: - case EEikCmdExit: - if (iCurrentContainer == iSettingListContainer) - iSettingListContainer->SaveSettingsIfPossibleL(); - iAppUi->HandleCommandL( EAknCmdExit ); - break; - default: - iAppUi->HandleCommandL( aCommand ); - break; - } - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::GetCaptionL() -// --------------------------------------------------------------------------- -// -void CXDMPlugin::GetCaptionL( TDes& aCaption ) const - { - StringLoader::Load( aCaption, R_STR_XDM_SETTINGS ); - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::PluginProviderCategory() -// --------------------------------------------------------------------------- -// -TInt CXDMPlugin::PluginProviderCategory() const - { - return KGSPluginProviderInternal; - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::LoadSettingsViewL() -// --------------------------------------------------------------------------- -// -void CXDMPlugin::LoadSettingsViewL(TXDMSettingsViewType aType, TDesC& aXDMSetName) - { - switch(aType) - { - case EEditExisting: - iSettingListContainer->PrepareXDMSetForEditingL(aXDMSetName); - break; - case ENewDefault: - iSettingListContainer->PrepareXDMSetNewDefaultL(); - break; - case ENewFromExisting: - iSettingListContainer->PrepareNewXDMSetFromExistingL(aXDMSetName); - break; - default: - break; - } - if (iCurrentContainer) - iAppUi->RemoveFromViewStack( *this, iCurrentContainer ); - iCurrentContainer = iSettingListContainer; - iAppUi->AddToViewStackL( *this, iCurrentContainer ); - iMainListContainer->MakeVisible(EFalse); - iSettingListContainer->MakeVisible(ETrue); - UpdateMskL(); - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::LoadMainViewL() -// --------------------------------------------------------------------------- -// -void CXDMPlugin::LoadMainViewL() - { - TInt err(KErrNone); - TRAP(err,iMainListContainer->LoadSettingsListArrayL()); // update main container - if (iCurrentContainer) - iAppUi->RemoveFromViewStack( *this, iCurrentContainer ); - iCurrentContainer = iMainListContainer; - iAppUi->AddToViewStackL( *this, iCurrentContainer ); - - iMainListContainer->SetFocusIfExist(iSettingListContainer->GetCurrentSetName()); - - iSettingListContainer->MakeVisible(EFalse); - iMainListContainer->MakeVisible(ETrue); - UpdateMskL(); - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::DynInitMenuPaneL() -// --------------------------------------------------------------------------- -// -void CXDMPlugin::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) - { - if (!FeatureManager::FeatureSupported(KFeatureIdHelp)) - { - aMenuPane->SetItemDimmed(EAknCmdHelp, ETrue); - } - - if (aResourceId == R_GS_XDM_SETTINGS_MAIN_MENU) - { - if (iCurrentContainer == iMainListContainer) - { - aMenuPane->SetItemDimmed(EGSXDMPluginCmdChange, ETrue); - aMenuPane->SetItemDimmed(EGSXDMPluginCmdExitFromSL, ETrue); - if (iMainListContainer->IsListEmpty()) - { - aMenuPane->SetItemDimmed(EGSXDMPluginCmdEdit, ETrue); - aMenuPane->SetItemDimmed(EGSXDMPluginCmdDelete, ETrue); - } - } - else - { - aMenuPane->SetItemDimmed(EGSXDMPluginCmdEdit, ETrue); - aMenuPane->SetItemDimmed(EGSXDMPluginCmdDelete, ETrue); - aMenuPane->SetItemDimmed(EGSXDMPluginCmdNewSettings, ETrue); - aMenuPane->SetItemDimmed(EAknCmdExit, ETrue); - } - } - - if (aResourceId == R_GS_XDM_NEW_SETTINGS_MENU) - { - if (iMainListContainer->IsListEmpty()) - { - aMenuPane->SetItemDimmed(EGSXDMPluginCmdNewExisting, ETrue); - } - } - - if ( iSettingListContainer && !iMainListContainer->IsListEmpty() ) - { - TBool inUse( EFalse ); - HBufC* currentSetName = iMainListContainer->GetCurrentSetNameLC(); - TBuf setName; - setName.Copy( currentSetName->Des() ); - TRAP_IGNORE( inUse = iSettingListContainer->SettingsApInUseL( setName ) ); - CleanupStack::PopAndDestroy( currentSetName ); - - if ( inUse ) - { - TInt pos( KErrNotFound ); - if ( aMenuPane->MenuItemExists( EGSXDMPluginCmdDelete, pos ) ) - { - aMenuPane->SetItemSpecific( EGSXDMPluginCmdDelete, EFalse ); - aMenuPane->SetItemDimmed(EGSXDMPluginCmdDelete, ETrue); - } - } - else - { - TInt pos( KErrNotFound ); - if ( aMenuPane->MenuItemExists( EGSXDMPluginCmdDelete, pos ) ) - { - aMenuPane->SetItemSpecific( EGSXDMPluginCmdDelete, ETrue ); - aMenuPane->SetItemDimmed(EGSXDMPluginCmdDelete, EFalse); - } - } - } - } - -// --------------------------------------------------------- -// CXDMPlugin::HandleResourceChangeManual() -// --------------------------------------------------------- -// -void CXDMPlugin::HandleResourceChangeManual(TInt aType) - { - if ( iSettingListContainer ) - iSettingListContainer->HandleResourceChangeManual(aType); - if ( iMainListContainer ) - iMainListContainer->HandleResourceChangeManual(aType); - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::CreateIconL -// --------------------------------------------------------------------------- -// -CGulIcon* CXDMPlugin::CreateIconL( const TUid aIconType ) - { - CGulIcon* icon; - - if( aIconType == KGSIconTypeLbxItem ) - { - icon = AknsUtils::CreateGulIconL( - AknsUtils::SkinInstance(), - KAknsIIDQgnPropSetConnXdm, - KGSXDMPluginIconFileName, - EMbmGsxdmpluginQgn_prop_set_conn_xdm, - EMbmGsxdmpluginQgn_prop_set_conn_xdm_mask); - } - else - { - icon = CGSPluginInterface::CreateIconL( aIconType ); - } - - return icon; - } - -// --------------------------------------------------------------------------- -// CXDMPlugin::UpdateMskL() -// --------------------------------------------------------------------------- -// -void CXDMPlugin::UpdateMskL() - { - if ( !Cba() ) - { - return; - } - - CEikCba* cba = static_cast< CEikCba* >( Cba()->ButtonGroup() ); - if(iCurrentContainer==iMainListContainer) - { - TBool showEdit = !(iMainListContainer->IsListEmpty()); - cba->SetCommandSetL(R_XDMUI_MAINVIEW_SOFTKEYS); - cba->MakeCommandVisible( EGSXDMPluginCmdEdit, showEdit ); - } - else if(iCurrentContainer==iSettingListContainer) - { - cba->SetCommandSetL(R_XDMUI_MAINVIEW_SOFTKEYS_SL); - cba->MakeCommandVisible( EGSXDMPluginCmdChange, ETrue); - if ( iSettingListContainer->IsVisible() ) - { - iCurrentContainer->DrawNow(); - } - } - cba->DrawNow(); - } - -// End of file - - diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/src/XDMPluginContainer.cpp --- a/XDMSettingsUI/src/XDMPluginContainer.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,462 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: XDM GS plugin main list container. -* -*/ - - - - -// INCLUDE FILES -#include "XDMExternalInterface.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "SettingsData.h" -#include "XDMPluginContainer.h" - -#include - - - - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::CXDMPluginContainer() -// --------------------------------------------------------------------------- -// -CXDMPluginContainer::CXDMPluginContainer(CAknView* aView) : iView(aView) - { - SetComponentsToInheritVisibility( ETrue ); - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::ConstructL(const TRect& aRect) -// Symbian OS two phased constructor -// -// --------------------------------------------------------------------------- -// -void CXDMPluginContainer::ConstructL( const TRect& aRect ) - { - #ifdef _DEBUG - RDebug::Print( _L( "[CXDMPluginContainer] ConstructL()" ) ); - #endif - - CEikStatusPane* sp = static_cast - ( CEikonEnv::Static()->EikAppUi() )->StatusPane(); - iTitlePane = static_cast - ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - - // Set title - - StringLoader::Load ( iTitle, R_STR_XDM_TITLE_PANE_TEXT ); - iTitlePane->SetTextL(iTitle);// FromResourceL( rReader ); - CreateWindowL(); // Makes the control a window-owning control - - // Main List creation and initialization - iMainList = new(ELeave) CAknSingleStyleListBox(); - iMainList->SetContainerWindowL(*this); - iMainList->ConstructL(this, EAknListBoxLoopScrolling); - - // Main list scroll bar issues - iMainList->CreateScrollBarFrameL(EFalse); - iMainList->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); - - // Empty text processing - _LIT (KStringHeader, "%S\n%S"); - HBufC* emptyText = iEikonEnv->AllocReadResourceLC( R_STR_XDM_EMPTY_TEXT ); - HBufC* emptyText2 = iEikonEnv->AllocReadResourceLC( R_STR_XDM_EMPTY_TEXT_SEC); - HBufC* emptyFinal = HBufC::NewLC( - emptyText->Length() + emptyText2->Length() + 2 );// 2 is length of "\n" - emptyFinal->Des().Format(KStringHeader, emptyText, emptyText2); - - iMainList->SetListBoxObserver(this); - iMainList->View()->SetListEmptyTextL(*emptyFinal); - CleanupStack::PopAndDestroy(3, emptyText);//emptyText, emptyText2, emptyFinal - - // This call fails if Problems in XDM API, so leave if error - TRAPD(err,SetupListL()); - User::LeaveIfError(err); - - SetRect( aRect ); - ActivateL(); - - iEikMenuBar = new ( ELeave ) CEikMenuBar(); - iEikMenuBar->ConstructL( this, NULL, R_GS_XDM_SETTINGS_MAIN_MENUBAR ); - - #ifdef _DEBUG - RDebug::Print( _L( "[CXDMPluginContainer] Construct done" ) ); - #endif - - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::~CXDMPluginContainer() -// Destructor -// -// --------------------------------------------------------------------------- -// -CXDMPluginContainer::~CXDMPluginContainer() - { - if (iMainList) - { - delete iMainList; - } - - delete iEikMenuBar; - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::SizeChanged() -// --------------------------------------------------------------------------- -// -void CXDMPluginContainer::SizeChanged() - { - iMainList->SetRect(Rect()); - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::CountComponentControls() const -// --------------------------------------------------------------------------- -// -TInt CXDMPluginContainer::CountComponentControls() const - { - return 1; - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::ComponentControl() const -// --------------------------------------------------------------------------- -// -CCoeControl* CXDMPluginContainer::ComponentControl( TInt aIndex ) const - { - switch ( aIndex ) - { - case 0: - return iMainList; - default: - return NULL; - } - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::EditCurrentItemL() -// --------------------------------------------------------------------------- -// -void CXDMPluginContainer::EditCurrentItemL() - { - TPtrC16 xDMSetName; - TPtrC16 xDMSetNameClipped; - xDMSetName.Set(iSettingListArray->MdcaPoint(iMainList->CurrentItemIndex())); - xDMSetNameClipped.Set(xDMSetName.Mid(1)); // remove '/t' from the begining - CXDMPlugin* iTempView = static_cast (iView); - iTempView->LoadSettingsViewL(EEditExisting, xDMSetNameClipped); - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::GetCurrentSetNameLC() -// --------------------------------------------------------------------------- -// -HBufC* CXDMPluginContainer::GetCurrentSetNameLC() - { - TPtrC16 xDMSetName; - TPtrC16 xDMSetNameClipped; - xDMSetName.Set(iSettingListArray->MdcaPoint(iMainList->CurrentItemIndex())); - xDMSetNameClipped.Set(xDMSetName.Mid(1)); // remove '/t' from the begining - - HBufC* name = xDMSetNameClipped.AllocLC(); - TPtr ptr(name->Des()); - AknTextUtils::ConvertDigitsTo(ptr, EDigitTypeWestern ); - - return name; - } - - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::OfferKeyEventL() -// --------------------------------------------------------------------------- -// -TKeyResponse CXDMPluginContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - if (iMainList) - { - // if cancel key is pressed and list is not empty, invoke deletion - if ((aKeyEvent.iCode == EKeyBackspace ) && (aType == EEventKey) && - iEikMenuBar->ItemSpecificCommandsEnabled() ) - { - if(!IsListEmpty()) - DeleteSetProcedureL(); - CXDMPlugin* iTempView = static_cast (iView); - iTempView->UpdateMskL(); - return EKeyWasConsumed; - } - else - { - return iMainList->OfferKeyEventL (aKeyEvent, aType); - } - } - return EKeyWasNotConsumed; - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::HandleListBoxEventL() -// --------------------------------------------------------------------------- -// -void CXDMPluginContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aListBoxEvent) - { - // if the Select Key has been pressed - if ((aListBoxEvent == MEikListBoxObserver::EEventEnterKeyPressed) || - (aListBoxEvent == MEikListBoxObserver::EEventItemSingleClicked)) - { - EditCurrentItemL(); - } - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::SetupListL() -// --------------------------------------------------------------------------- -// -void CXDMPluginContainer::SetupListL() - { - CTextListBoxModel* model = iMainList->Model(); - model->SetOwnershipType(ELbmOwnsItemArray); - - iSettingListArray = STATIC_CAST(CDesCArray*,model->ItemTextArray()); - LoadSettingsListArrayL(); - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::LoadSettingsListArrayL() -// --------------------------------------------------------------------------- -// -void CXDMPluginContainer::LoadSettingsListArrayL() - { - iTitlePane->SetTextL(iTitle); - _LIT (KStringHeader, "\t%S"); - TBuf myString; // maximum name + \t - RArray settingIds; - CleanupClosePushL(settingIds); - CDesCArray* xdmSetList = NULL; - TRAPD(err, xdmSetList = LoadCollectionNamesL(settingIds)); - if(err!=KErrNone) - { - CleanupStack::PopAndDestroy(1); //settingIds - return; - } - CleanupStack::PushL(xdmSetList); - TInt xdmSetListCount = xdmSetList->Count(); - iSettingListArray->Reset(); - for (TInt i = 0; i< xdmSetListCount; i++) - { - myString.Format(KStringHeader, &(xdmSetList->MdcaPoint(i))); - AknTextUtils::LanguageSpecificNumberConversion(myString); - iSettingListArray->AppendL (myString); - } - iSettingListArray->Sort(ECmpCollated); - CleanupStack::PopAndDestroy(2); //xdmSetList,settingIds - iMainList->HandleItemRemovalL(); - iMainList->HandleItemAdditionL(); - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::IsListEmpty() -// --------------------------------------------------------------------------- -// -TBool CXDMPluginContainer::IsListEmpty() - { - if (iSettingListArray->Count()) - return EFalse; - return ETrue; - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::IsLastItem() -// --------------------------------------------------------------------------- -// -TBool CXDMPluginContainer::IsLastItem() - { - if (iSettingListArray->Count() == 1) - return ETrue; - return EFalse; - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::DeleteCurrentSetL() -// --------------------------------------------------------------------------- -// -void CXDMPluginContainer::DeleteCurrentSetL() - { - TXdmSettingsApi::RemoveCollectionL( GetCurrentSetIdL() ); - TInt deletedItemIndex = iMainList->CurrentItemIndex(); - iSettingListArray->Delete( deletedItemIndex ); - - AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( - iMainList, deletedItemIndex, ETrue ); - iMainList->DrawNow(); - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::GetCurrentSetIdL() -// --------------------------------------------------------------------------- -// -TInt CXDMPluginContainer::GetCurrentSetIdL() - { - TInt myId(-1); - RArray settingIds; - CleanupClosePushL(settingIds); - CDesCArray* xdmSetList = NULL; - - TRAPD(err, xdmSetList = LoadCollectionNamesL(settingIds)); - if(err!=KErrNone) - { - CleanupStack::PopAndDestroy(1); //settingIds - return myId; - } - CleanupStack::PushL(xdmSetList); - - TInt xdmSetListCount = xdmSetList->Count(); - HBufC* currentSetName = GetCurrentSetNameLC(); - for (TInt i = 0; i< xdmSetListCount; i++) - { - if (!((xdmSetList->MdcaPoint(i)).Compare(*currentSetName))) // if equal - { - myId = settingIds[i]; - break; - } - } - CleanupStack::PopAndDestroy(3); //xdmSetList,settingIds,currentSetName - return myId; - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::LoadCollectionNamesL() -// --------------------------------------------------------------------------- -// -CDesCArray* CXDMPluginContainer::LoadCollectionNamesL(RArray& aSettingIDs) - { - CDesCArray* myArray = TXdmSettingsApi::CollectionNamesLC(aSettingIDs); - CleanupStack::Pop(1); // will be pop if above doesnt leave - return myArray; - } - -// --------------------------------------------------------- -// CXDMPluginContainer::GetHelpContext -// This function is called when Help application is launched -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CXDMPluginContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - aContext.iMajor = KGSXDMPluginUid; - aContext.iContext = KXDM_HLP_LIST_VIEW; - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::DeleteSetProcedureL() -// --------------------------------------------------------------------------- -// -void CXDMPluginContainer::DeleteSetProcedureL() - { - HBufC* myDisplayMessage = NULL; - HBufC* currentSetName = GetCurrentSetNameLC(); - TPtr myname(currentSetName->Des()); - AknTextUtils::LanguageSpecificNumberConversion(myname); - - CAknQueryDialog* query = CAknQueryDialog::NewL(CAknQueryDialog::EConfirmationTone); - if (IsLastItem()) - myDisplayMessage = StringLoader::LoadLC(R_STR_XDM_CONF_DELETE_LAST, *currentSetName ); - else - myDisplayMessage = StringLoader::LoadLC(R_STR_XDM_CONF_DELETE, *currentSetName ); - - if ( query->ExecuteLD( R_CONFIRMATION_QUERY, *myDisplayMessage ) ) - { - DeleteCurrentSetL(); - } - CleanupStack::PopAndDestroy(2); //currentSetName, myDisplayMessage - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::HandleResourceChange() -// --------------------------------------------------------------------------- -void CXDMPluginContainer::HandleResourceChange( TInt aType ) - { - if ( aType == KAknsMessageSkinChange || - aType == KEikDynamicLayoutVariantSwitch ) - { - CXDMPlugin* iTempView = static_cast (iView); - iTempView->HandleResourceChangeManual(aType); - } - CCoeControl::HandleResourceChange( aType ); - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::HandleResourceChangeManual() -// --------------------------------------------------------------------------- -void CXDMPluginContainer::HandleResourceChangeManual(TInt aType) - { - TRect mainPaneRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, - mainPaneRect); - SetRect( mainPaneRect ); - //DrawNow(); - - iMainList->HandleResourceChange(aType); - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::FocusChanged -// Set focus on the selected listbox. For animated skins feature. -// --------------------------------------------------------------------------- -void CXDMPluginContainer::FocusChanged(TDrawNow aDrawNow) - { - if(iMainList) - { - iMainList->SetFocus( IsFocused(),aDrawNow ); - } - } - -// --------------------------------------------------------------------------- -// CXDMPluginContainer::SetFocusIfExist -// Set focus on the given set name -// --------------------------------------------------------------------------- -void CXDMPluginContainer::SetFocusIfExist(TDes& aSetName) - { - _LIT (KStringHeader, "\t%S"); - TBuf myString; // maximum name + \t - myString.Format(KStringHeader, &aSetName); - AknTextUtils::LanguageSpecificNumberConversion(myString); - - TInt xdmSetListCount = iSettingListArray->Count(); - for (TInt i = 0; i< xdmSetListCount; i++) - { - if (!((iSettingListArray->MdcaPoint(i)).Compare(myString))) // if equal - { - iMainList->SetCurrentItemIndex(i); - break; - } - } - } - -// End of File diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/src/XDMPluginImplementationTable.cpp --- a/XDMSettingsUI/src/XDMPluginImplementationTable.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* 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: ECOM proxy table for this plugin -* -*/ - - - - -// System includes -#include -#include - -// User includes -#include "XDMPlugin.h" - -// Constants -const TImplementationProxy KXDMPluginImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(0x10207429, CXDMPlugin::NewL) - }; - - -// --------------------------------------------------------------------------- -// ImplementationGroupProxy -// Gate/factory function -// -// --------------------------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(KXDMPluginImplementationTable) - / sizeof(TImplementationProxy); - return KXDMPluginImplementationTable; - } diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/src/XDMPluginSLContainer.cpp --- a/XDMSettingsUI/src/XDMPluginSLContainer.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1035 +0,0 @@ -/* -* Copyright (c) 2005-2010 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: XDM GS plugin Settins list container -* -*/ - - - - -// INCLUDE FILES -#include "XDMExternalInterface.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "XDMPluginSLContainer.h" -#include "XDMPluginSettinglist.h" -#include "SettingsData.h" - -#include - -// LOCAL CONSTANTS AND MACROS -_LIT(KFormatPostfix, "%S(%02d)"); -_LIT(KFormatNoPostfix, "%S"); -_LIT(KFormatLargePostfix, "%S(%d)"); -const TInt KMaxPostfixLength = 5; - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::CXDMPluginSLContainer() -// --------------------------------------------------------------------------- -// -CXDMPluginSLContainer::CXDMPluginSLContainer(CAknView* aView) : iView(aView) - { - SetComponentsToInheritVisibility( ETrue ); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::ConstructL(const TRect& aRect) -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::ConstructL( const TRect& aRect) - { - #ifdef _DEBUG - RDebug::Print( _L( "[CXDMPluginSLContainer] ConstructL()" ) ); - #endif - - CEikStatusPane* sp = static_cast - ( CEikonEnv::Static()->EikAppUi() )->StatusPane(); - CAknTitlePane* title = static_cast - ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - - // Set the proper title of this list - TResourceReader rReader; - iCoeEnv->CreateResourceReaderLC( rReader, R_GS_XDM_MAIN_VIEW_TITLE ); - title->SetFromResourceL( rReader ); - CleanupStack::PopAndDestroy(); //rReader - - CreateWindowL(); // Makes the control a window-owning control - - // construct the data object the settings list will use - iData = CSettingsData::NewL(); - // construct control and set parent - iSettingList = CXDMPluginSettinglist::NewL(*iData); - iSettingList->SetContainerWindowL(*this); - - // CreateResourceReaderLC will allocate a buffer to be used by - // the TResourceReader. This buffer is pushed onto the cleanup - // stack - not the TResourceReader itself - CEikonEnv::Static()->CreateResourceReaderLC(rReader, R_SETTINGS); - iSettingList->ConstructFromResourceL(rReader); - - // Clean up the buffer allocated above, NOT the reader itself. - // Cannot use expected item overload of PopAndDestroy() as buffer - // is inaccessible. - CleanupStack::PopAndDestroy(); - iSettingList->ActivateL(); - - SetRect( aRect ); - ActivateL(); - - #ifdef _DEBUG - RDebug::Print( _L( "[CXDMPluginSLContainer] Construct done" ) ); - #endif - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::~CXDMPluginSLContainer() -// --------------------------------------------------------------------------- -// -CXDMPluginSLContainer::~CXDMPluginSLContainer() - { - if (iData) - delete iData; - if(iSettingList) // if setting list has been created - { - delete iSettingList; - iSettingList = NULL; - } - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::SizeChanged() -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::SizeChanged() - { - iSettingList->SetRect(Rect()); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::CountComponentControls() const -// --------------------------------------------------------------------------- -// -TInt CXDMPluginSLContainer::CountComponentControls() const - { - return 1; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::ComponentControl( TInt aIndex ) const -// --------------------------------------------------------------------------- -// -CCoeControl* CXDMPluginSLContainer::ComponentControl( TInt aIndex ) const - { - switch ( aIndex ) - { - case 0: - return iSettingList; - default: - return NULL; - } - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::EditCurrentItemL() -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::EditCurrentItemL() - { - iSettingList->EditCurrentItemL(); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::OfferKeyEventL() -// --------------------------------------------------------------------------- -// -TKeyResponse CXDMPluginSLContainer::OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - if (iSettingList) - return iSettingList->OfferKeyEventL(aKeyEvent, aType); - else - return EKeyWasNotConsumed; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::Draw(const TRect& aRect) const -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::Draw(const TRect& aRect) const - { - CWindowGc& gc = SystemGc(); - gc.Clear(aRect); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::HandleListBoxEventL() -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aListBoxEvent) - { - // if the Select Key has been pressed - if ((aListBoxEvent == MEikListBoxObserver::EEventEnterKeyPressed) || - (aListBoxEvent == MEikListBoxObserver::EEventItemClicked)) - { - iSettingList->EditCurrentItemL(); - } - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::PrepareXDMSetForEditingL(TDesC& aXDMSetName) -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::PrepareXDMSetForEditingL(TDesC& aXDMSetName) - { - TLex16 myLex; - iData->Reset(); - - iData->iSettingName = aXDMSetName; - AknTextUtils::ConvertDigitsTo(iData->iSettingName, EDigitTypeWestern ); - iData->iSettingId = GetSettingIdL(iData->iSettingName); - - CXdmSettingsCollection* xDMSet = NULL; - - // read the source setting - xDMSet = TXdmSettingsApi::SettingsCollectionL(iData->iSettingId); - CleanupStack::PushL(xDMSet); - - iData->iSettingNameDisp = aXDMSetName; - iData->iServerAddress = xDMSet->Property(EXdmPropUri); - - // AccessPoint handling - iData->iAccessPointDes = xDMSet->Property(EXdmPropToNapId); - myLex.Assign(iData->iAccessPointDes); - myLex.Val(iData->iAccessPoint); - - iSettingList->GetAccessPointNameL(iData->iAccessPoint, iData->iAccessPointName); - if ( (iData->iAccessPointName) == KNullDesC) // if name is not found - { - iData->iAccessPoint = -1; - } - - TBuf username = xDMSet->Property( EXdmPropAuthName ); - - // to show special chars in UI correctly - _LIT( KProcent, "%" ); - if ( username.Find( KProcent ) != KErrNotFound ) - { - // convert to 8 bit - HBufC8* tmp = HBufC8::NewLC( username.Length() ); - tmp->Des().Copy( username ); - - // Decode encoded username - HBufC8* decodedUsername = EscapeUtils::EscapeDecodeL( *tmp ); - CleanupStack::PopAndDestroy( tmp ); - CleanupStack::PushL( decodedUsername ); - - // convert to unicode - HBufC* userName16 = - EscapeUtils::ConvertToUnicodeFromUtf8L( decodedUsername->Des() ); - CleanupStack::PopAndDestroy( decodedUsername ); - username = userName16->Des(); - delete userName16; - } - - iData->iUserID = username; - iData->iPassword = xDMSet->Property(EXdmPropAuthSecret); - - CleanupStack::PopAndDestroy(1); //xDMSet - iSettingList->LoadSettingsL(); - SetTitlePaneTextL(iData->iSettingName); - iSettingList->ResetItemIndex(); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::PrepareXDMSetNewDefaultL() -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::PrepareXDMSetNewDefaultL() - { - iData->Reset(); - - HBufC* defName = StringLoader::LoadL( R_STR_XDM_NEW_SET ); - CleanupStack::PushL( defName ); - - TBool changed; - - HBufC* newName = DoMakeValidNameL(defName, changed); - - if ( newName ) - // name converted to unique - { - (iData->iSettingName).Copy(newName->Des()); - delete newName; - } - else - { - (iData->iSettingName).Copy(defName->Des()); - } - CleanupStack::PopAndDestroy( defName ); - - iData->iSettingNameDisp = iData->iSettingName; - AknTextUtils::LanguageSpecificNumberConversion(iData->iSettingNameDisp); - - iSettingList->LoadSettingsL(); - iSettingList->ResetItemIndex(); - iSettingList->DrawNow(); - SetTitlePaneTextL(iData->iSettingName); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::PrepareNewXDMSetFromExistingL(TDesC& aXDMSetName) -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::PrepareNewXDMSetFromExistingL(TDesC& aXDMSetName) - { - TLex16 myLex; - - // iData is already resetted in this case and iSettingId has id of - // existing list from which data to be copied - // we need to find the new name, from given name - HBufC* originalName = aXDMSetName.AllocL(); - CleanupStack::PushL( originalName ); - - // aXDMSetName is in disp format, need to convert to western format - TPtr corrFormat(originalName->Des()); - AknTextUtils::ConvertDigitsTo(corrFormat, EDigitTypeWestern ); - - TBool changed; - - HBufC* newName = DoMakeValidNameL(originalName, changed); - - if ( newName ) - // name converted to unique - { - (iData->iSettingName).Copy(newName->Des()); - delete newName; - } - else - { - (iData->iSettingName).Copy(originalName->Des()); - } - - CleanupStack::PopAndDestroy( originalName ); - - - CXdmSettingsCollection* xDMSet = NULL; - - // Displayable name - iData->iSettingNameDisp = iData->iSettingName; - AknTextUtils::LanguageSpecificNumberConversion(iData->iSettingNameDisp); - - // read the source setting - xDMSet = TXdmSettingsApi::SettingsCollectionL(iData->iSettingId); - CleanupStack::PushL(xDMSet); - - iData->iServerAddress = xDMSet->Property(EXdmPropUri); - - // AccessPoint handling - iData->iAccessPointDes = xDMSet->Property(EXdmPropToNapId); - myLex.Assign(iData->iAccessPointDes); - myLex.Val(iData->iAccessPoint); - - iSettingList->GetAccessPointNameL(iData->iAccessPoint, iData->iAccessPointName); - if ( (iData->iAccessPointName) == KNullDesC) // if name is not found - { - iData->iAccessPoint = -1; - } - - iData->iUserID = xDMSet->Property(EXdmPropAuthName); - iData->iPassword = xDMSet->Property(EXdmPropAuthSecret); - - // also overwrite the setting id now since we dont need it anymore - iData->iSettingId = -1; - CleanupStack::PopAndDestroy(1); //xDMSet - iSettingList->LoadSettingsL(); - SetTitlePaneTextL(iData->iSettingNameDisp); - iSettingList->ResetItemIndex(); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::DisplayNewXDMSetOptions() -// --------------------------------------------------------------------------- -// -TBool CXDMPluginSLContainer::DisplayNewXDMSetOptionsL() - { - // First phase construction of menu list - CAknSinglePopupMenuStyleListBox* newXDMsetMenuList = - new (ELeave) CAknSinglePopupMenuStyleListBox; - CleanupStack::PushL(newXDMsetMenuList); - - // Create a popuplist to show the menu list in - CAknPopupList* popupList = CAknPopupList::NewL( - newXDMsetMenuList, - R_AVKON_SOFTKEYS_OK_CANCEL); - - CleanupStack::PushL(popupList); - - // Second phase construction of menulist - newXDMsetMenuList->ConstructL(popupList,EAknListBoxMenuList); - // Set up scroll bars - newXDMsetMenuList->CreateScrollBarFrameL(ETrue); - newXDMsetMenuList->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); - - // Set up menu items - CTextListBoxModel* model = newXDMsetMenuList->Model(); // not taking ownership - model->SetOwnershipType (ELbmOwnsItemArray); // list'll delete with listbox - RArray settingIDs; - CleanupClosePushL(settingIDs); - CDesCArray* newXDMsetMenuListArray = NULL; - - TRAPD(err, newXDMsetMenuListArray = LoadCollectionNamesL(settingIDs, ETrue)); - if(err!=KErrNone) - { - CleanupStack::PopAndDestroy(3); //newXDMsetMenuList, popupList, settingIDs - return EFalse; - } - CleanupStack::PushL(newXDMsetMenuListArray); - - newXDMsetMenuListArray->Sort(ECmpCollated); - model->SetItemTextArray(newXDMsetMenuListArray); - CleanupStack::Pop(1); // newXDMsetMenuListArray owned by model - CleanupStack::PopAndDestroy(1); //settingIDs - - // Set title - HBufC* title; - title = StringLoader::LoadLC(R_STR_XDM_USE_EXISTING); - popupList->SetTitleL(*title); - CleanupStack::PopAndDestroy(1); //title - - // Show the menu in the popup list - TInt popupOk = popupList->ExecuteLD(); - - CleanupStack::Pop(popupList); - - // if the user selected some set - if (popupOk) - { - iData->Reset(); - TPtrC setName = newXDMsetMenuListArray->MdcaPoint - (newXDMsetMenuList->CurrentItemIndex()); - - iData->iSettingId = GetSettingIdL(setName); - (iData->iSettingNameDisp).Copy(setName); - (iData->iSettingName).Copy(setName); - AknTextUtils::ConvertDigitsTo(iData->iSettingName, EDigitTypeWestern ); - CleanupStack::PopAndDestroy(newXDMsetMenuList); - return ETrue; - } - // otherwise return false - CleanupStack::PopAndDestroy(1); //newXDMsetMenuList - return EFalse; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::IsAccessPointInUseL(TDesC& aXDMSetName) -// --------------------------------------------------------------------------- -// -TBool CXDMPluginSLContainer::SettingsApInUseL(TDesC& aXDMSetName) - { - TBool inUse( EFalse ); - TLex16 myLex; - - iData->iSettingName = aXDMSetName; - AknTextUtils::ConvertDigitsTo(iData->iSettingName, EDigitTypeWestern ); - iData->iSettingId = GetSettingIdL(iData->iSettingName); - - CXdmSettingsCollection* xDMSet = NULL; - - // read the source setting - xDMSet = TXdmSettingsApi::SettingsCollectionL(iData->iSettingId); - CleanupStack::PushL(xDMSet); - iData->iAccessPointDes = xDMSet->Property(EXdmPropToNapId); - myLex.Assign(iData->iAccessPointDes); - myLex.Val(iData->iAccessPoint); - CleanupStack::PopAndDestroy(xDMSet); - - inUse = iSettingList->IsAccessPointInUseL( iData->iAccessPoint ); - - return inUse; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::SetTitlePaneTextL( const TDesC& aTitleText ) const -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::SetTitlePaneTextL( const TDesC& aTitleText ) const - { - CAknTitlePane* title = static_cast< CAknTitlePane* > - ( CEikonEnv::Static()->AppUiFactory()->StatusPane()->ControlL( - TUid::Uid( EEikStatusPaneUidTitle ) ) ); - if ( !title ) - { - User::Leave( KErrNotSupported ); - } - title->SetTextL( aTitleText ); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::AreCompulsoryItemsFilled() -// --------------------------------------------------------------------------- -// -TBool CXDMPluginSLContainer::AreCompulsoryItemsFilled() - { - if ( (iData->iAccessPoint > -1) && ((iData->iServerAddress)!=KNullDesC) && - ((iData->iUserID)!=KNullDesC) ) - { - return ETrue; - } - - return EFalse; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::DisplayDeleteOrDontSaveDialog() -// --------------------------------------------------------------------------- -// -TBool CXDMPluginSLContainer::DisplayDeleteOrDontSaveDialogL() - { - TBuf myDisplayMessage; - CAknQueryDialog* query = CAknQueryDialog::NewL - (CAknQueryDialog::EConfirmationTone); - StringLoader::Load ( myDisplayMessage, R_STR_XDM_CONF_COMPULSORY ); - return (query->ExecuteLD( R_CONFIRMATION_QUERY, myDisplayMessage )); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::DeleteXDMSetIfExistL() -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::DeleteXDMSetIfExistL() - { - TRAPD(err, TXdmSettingsApi::RemoveCollectionL(iData->iSettingId)); - if ( (err!=KErrNone) && (err!=KErrNotFound) ) - { - User::LeaveIfError(err); - } - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::IsExitProcessingOKL() -// --------------------------------------------------------------------------- -// -TBool CXDMPluginSLContainer::IsExitProcessingOKL() - { - if (AreCompulsoryItemsFilled()) - { - return SaveOrCreateAndSaveXDMSetL(ETrue); - } - else - { - if (DisplayDeleteOrDontSaveDialogL()) - { - DeleteXDMSetIfExistL(); - } - else - { - return EFalse; - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::SaveSettingsIfPossibleL() -// --------------------------------------------------------------------------- -// -void CXDMPluginSLContainer::SaveSettingsIfPossibleL() - { - if (AreCompulsoryItemsFilled()) - SaveOrCreateAndSaveXDMSetL(EFalse); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::SaveOrCreateAndSaveXDMSetL() -// --------------------------------------------------------------------------- -// -TBool CXDMPluginSLContainer::SaveOrCreateAndSaveXDMSetL(TBool aShowDialog) - { - TBool ret = ETrue; - CXdmSettingsCollection* myXDMSet(NULL); - TInt err(KErrNotFound); // Initialize such that id not found in settings API - - // take the saveable name - iData->iSettingName = iData->iSettingNameDisp; - AknTextUtils::ConvertDigitsTo(iData->iSettingName, EDigitTypeWestern ); - - // check whether this is a new set or an existing set was edited - if ((iData->iSettingId) > NULL) // is there is valid id - { - TRAP(err, myXDMSet = TXdmSettingsApi::SettingsCollectionL - (iData->iSettingId)); - } - if(myXDMSet) - { - delete myXDMSet; // we dont need it - } - - // check if the setting name is already exist - // ask user to change name - if (IsXDMSetNameExistL(iData->iSettingName, iData->iSettingId)) - { - if (!aShowDialog) // if we cant display dialog than return. - return EFalse; - HBufC* myDisplayMessage = NULL; - CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue ); - note->SetTimeout( CAknNoteDialog::ELongTimeout ); - myDisplayMessage = StringLoader::LoadLC(R_STR_XDM_NAME_ALREADY_EXIST, iData->iSettingNameDisp); - note->ExecuteLD( *myDisplayMessage ); - CleanupStack::PopAndDestroy(1); //myDisplayMessage - iSettingList->EditItemL(ESettingNameIndex,EFalse); - return EFalse; - } - - if(err == KErrNone) // if set exists update it - { - TXdmSettingsApi::UpdatePropertyL(iData->iSettingId, - iData->iSettingName, EXdmPropName); - TXdmSettingsApi::UpdatePropertyL(iData->iSettingId, - iData->iAccessPointDes, EXdmPropToNapId); - TXdmSettingsApi::UpdatePropertyL(iData->iSettingId, - iData->iServerAddress, EXdmPropUri); - TXdmSettingsApi::UpdatePropertyL(iData->iSettingId, - iData->iUserID, EXdmPropAuthName); - TXdmSettingsApi::UpdatePropertyL(iData->iSettingId, - iData->iPassword, EXdmPropAuthSecret); - ret = ETrue; - } - - else if (err == KErrNotFound) // if set doenst exists create and save it - { - myXDMSet = new (ELeave) CXdmSettingsCollection(); - CleanupStack::PushL(myXDMSet); - myXDMSet->AppendL(iData->iSettingName, EXdmPropName); - myXDMSet->AppendL(iData->iServerAddress, EXdmPropUri); - myXDMSet->AppendL(iData->iAccessPointDes, EXdmPropToNapId); - myXDMSet->AppendL(iData->iUserID, EXdmPropAuthName); - myXDMSet->AppendL(iData->iPassword, EXdmPropAuthSecret); - TRAPD(err,TXdmSettingsApi::CreateCollectionL(*myXDMSet)); - err = err; //just to satisfy compiler - CleanupStack::PopAndDestroy(1); // myXDMSet - ret = ETrue; - } - - else - { - User::LeaveIfError(err); - } - - return ret; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::GetSettingIdL(TDesC& aXDMSetName) -// --------------------------------------------------------------------------- -// -TInt CXDMPluginSLContainer::GetSettingIdL(TDesC& aXDMSetName) - { - TInt myId(-1); - RArray settingIds; - CleanupClosePushL(settingIds); - CDesCArray* xdmSetList =NULL; - - TBuf setName = aXDMSetName; - AknTextUtils::ConvertDigitsTo(setName, EDigitTypeWestern ); - - TRAPD(err, xdmSetList = LoadCollectionNamesL(settingIds, EFalse)); - if(err!=KErrNone) - { - CleanupStack::PopAndDestroy(1); //settingIds - return myId; - } - CleanupStack::PushL(xdmSetList); - - TInt xdmSetListCount = xdmSetList->Count(); - for (TInt i = 0; i< xdmSetListCount; i++) - { - if (!((xdmSetList->MdcaPoint(i)).Compare(setName))) // if equal - { - myId = settingIds[i]; - break; - } - } - CleanupStack::PopAndDestroy(2); //xdmSetList,settingIds - return myId; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::IsXDMSetNameExistL(TDesC& aXDMSetName, TInt32& aSettingId) -// --------------------------------------------------------------------------- -// -TBool CXDMPluginSLContainer::IsXDMSetNameExistL(TDesC& aXDMSetName, TInt32& aSettingId) - { - TBool ret(EFalse); - RArray settingIds; - CleanupClosePushL(settingIds); - CDesCArray* xdmSetList = NULL; - - TBuf setName = aXDMSetName; - AknTextUtils::ConvertDigitsTo(setName, EDigitTypeWestern ); - - TRAPD(err, xdmSetList = LoadCollectionNamesL(settingIds, EFalse)); - if(err!=KErrNone) - { - CleanupStack::PopAndDestroy(1); //settingIds - return EFalse; - } - CleanupStack::PushL(xdmSetList); - - TInt xdmSetListCount = xdmSetList->Count(); - for (TInt i = 0; i< xdmSetListCount; i++) - { - if (!((xdmSetList->MdcaPoint(i)).Compare(setName))) // if equal - { - if (settingIds[i] != aSettingId) // if the set is not itself - { - ret = ETrue; - } - } - } - CleanupStack::PopAndDestroy(2); //xdmSetList,settingIds - return ret; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::LoadCollectionNamesL -// --------------------------------------------------------------------------- -// -CDesCArray* CXDMPluginSLContainer::LoadCollectionNamesL(RArray& aSettingIDs - , TBool aDisp) - { - CDesCArray* myArray = TXdmSettingsApi::CollectionNamesLC(aSettingIDs); - TBuf name; - if(aDisp) // convert all names to disp names - { - TInt count = myArray->Count(); - CDesCArray* dispArray = new CDesCArrayFlat(count+1); - CleanupStack::PushL(dispArray); - for(TInt i=0;iMdcaPoint(i)); - AknTextUtils::LanguageSpecificNumberConversion(name); - TPtrC16 ptr = name; - dispArray->AppendL(ptr); - } - CleanupStack::Pop(2); - return dispArray; - } - CleanupStack::Pop(1); // myArray - return myArray; - } - -// --------------------------------------------------------- -// CXDMPluginSLContainer::GetHelpContext -// This function is called when Help application is launched -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CXDMPluginSLContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - aContext.iMajor = KGSXDMPluginUid; - aContext.iContext = KXDM_HLP_EDIT_SET; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::HandleResourceChange() -// --------------------------------------------------------------------------- -void CXDMPluginSLContainer::HandleResourceChange( TInt aType ) - { - CCoeControl::HandleResourceChange( aType ); - if ( aType == KAknsMessageSkinChange || - aType == KEikDynamicLayoutVariantSwitch ) - { - CXDMPlugin* iTempView = static_cast (iView); - iTempView->HandleResourceChangeManual(aType); - } - } - - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::HandleResourceChangeManual() -// --------------------------------------------------------------------------- -void CXDMPluginSLContainer::HandleResourceChangeManual(TInt aType) - { - TRect mainPaneRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, - mainPaneRect); - SetRect( mainPaneRect ); - DrawDeferred(); - - iSettingList->HandleResourceChange(aType); - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::FocusChanged -// Set focus on the selected listbox. For animated skins feature. -// --------------------------------------------------------------------------- -void CXDMPluginSLContainer::FocusChanged(TDrawNow aDrawNow) - { - if(iSettingList) - { - iSettingList->SetFocus( IsFocused(), aDrawNow ); - } - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::GetCurrentSetName() -// See header for details. -// --------------------------------------------------------------------------- -// -TDes& CXDMPluginSLContainer::GetCurrentSetName() - { - return iData->iSettingName; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::DoMakeValidNameL() -// See header for details. -// --------------------------------------------------------------------------- -// -HBufC* CXDMPluginSLContainer::DoMakeValidNameL(HBufC* aName, TBool& aChanged) - { - aChanged = EFalse; - HBufC* temp = HBufC::NewLC( KMaxSettingSetNameLength ); - HBufC* temp2 = HBufC::NewLC( KMaxSettingSetNameLength ); - - HBufC* corrname = EnsureMaxLengthLC( aName, aChanged); - *temp = *corrname; - TInt postfix( 0 ); - TInt pf( 0 ); - TInt i( 0 ); - - - // Load the names - RArray settingIDs; - CleanupClosePushL(settingIDs); - CDesCArray* xdmSetList = NULL; - - TRAPD(err, xdmSetList = LoadCollectionNamesL(settingIDs, EFalse)); - if(err!=KErrNone) - { - CleanupStack::PopAndDestroy(4); //settingIds - return corrname; - } - CleanupStack::PushL(xdmSetList); - - // do the actual checking of name - TInt found(0); - TInt pos(0); - - TPtrC prefix = GetPrefix( *corrname ); - - postfix = GetPostfix( *temp, prefix ); - postfix = -1; - do - { - found = xdmSetList->Find( *temp, pos ); - if ( found == KErrNone ) - { - aChanged = ETrue; - postfix++; - // check the length of postfix, check text length accordingly - pf = postfix; - for (i=1; i<10; i++) - { - pf /= 10; - if ( !pf ) - break; - } - TPtr sgdptr( temp->Des() ); - TPtr sgdptr2( temp2->Des() ); - if ( postfix ) - { - if ( postfix < 10 ) - { - sgdptr2 = prefix.Left( KMaxSettingSetNameLength - i - 3 ); - } - else - { - sgdptr2 = prefix.Left( KMaxSettingSetNameLength - i - 2 ); - } - } - else - { - sgdptr2 = prefix.Left( KMaxSettingSetNameLength ); - } - if ( postfix ) - { - if ( postfix > 9 ) - { - sgdptr.Format( KFormatLargePostfix, &sgdptr2, - postfix ); - } - else - { - sgdptr.Format( KFormatPostfix, &sgdptr2, - postfix ); - } - } - else - { - sgdptr.Format( KFormatNoPostfix, &sgdptr2 ); - } - } - } while (found == KErrNone); - - CleanupStack::PopAndDestroy(xdmSetList); - CleanupStack::PopAndDestroy(1); //settingIds - CleanupStack::PopAndDestroy( corrname ); - CleanupStack::PopAndDestroy( temp2 ); - - if ( aChanged ) - { - CleanupStack::Pop( temp ); - } - else - { - CleanupStack::PopAndDestroy( temp ); - temp = NULL; - } - - return temp; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::EnsureMaxLengthLC() -// See header for details. -// --------------------------------------------------------------------------- -HBufC* CXDMPluginSLContainer::EnsureMaxLengthLC( const TDesC* aName, TBool& aChanged) - { - TInt length = aName->Length(); - - aChanged = EFalse; - - if ( !length ) - { - // Name is required. - User::Leave(KErrArgument); - } - - HBufC* corrname; - if ( KMaxSettingSetNameLength < length ) - { // name too long, truncate. - corrname = aName->Left( KMaxSettingSetNameLength ).AllocLC(); - aChanged = ETrue; - } - else - { - corrname = aName->AllocLC(); - corrname->Des().Trim(); - if ( corrname->Length() == 0 ) - { - User::Leave(KErrArgument); - } - // comes here only if name is valid - if ( corrname->Length() != aName->Length() ) - { - aChanged = ETrue; - } - } - - return corrname; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::GetPrefix() -// See header for details. -// --------------------------------------------------------------------------- -TPtrC CXDMPluginSLContainer::GetPrefix( const TDesC& aName ) - { - TPtrC prefix = aName; - TInt lastBrace = aName.LocateReverse('('); - if ( lastBrace != KErrNotFound ) - { - // aName looks like "". - // See if is an integer number. - TPtrC num = aName.Right( aName.Length() - lastBrace - 1 ); - TInt val; - TLex lex( num ); - if ( lex.Val( val ) == KErrNone ) - { - // Yes, the trailer is an integer. - prefix.Set( aName.Left( lastBrace ) ); - } - } - return prefix; - } - -// --------------------------------------------------------------------------- -// CXDMPluginSLContainer::GetPostfix() -// See header for details. -// --------------------------------------------------------------------------- -TInt CXDMPluginSLContainer::GetPostfix( const TDesC& aName, const TDesC& aPrefix ) - { - TInt postfix( KErrNotFound ); - TInt nameLength = aName.Length(); - TInt prefixLength = aPrefix.Length(); - if ( nameLength >= prefixLength && aName.FindF( aPrefix ) == 0 ) - { - // aName is longer or equal length, and - // aPrefix can be found in the beginning of aName. - if ( nameLength == prefixLength ) - { - // They have the same length; they equal. - postfix = 0; - } - else - { - if ( aName[ prefixLength ] == '(' ) - { - // (Now we know that aName is longer than aPrefix.) - // aName looks like "aPrefix". - // See if is an integer number. - TPtrC num = aName.Right( nameLength - prefixLength - 1 ); - TBuf< KMaxPostfixLength > pf; - if (num.Length() <= pf.Length()) - pf = num; - TInt val; - TLex lex( pf ); - if ( lex.Val( val ) == KErrNone ) - { - // Yes, the trailer is an integer. - if ( val > 0 ) - { - postfix = val; - } - else - { - // signal that it is invalid... - postfix = -1; - } - } - } - } - } - return postfix; - } -// end of file diff -r 2580314736af -r 2669f8761a99 XDMSettingsUI/src/XDMPluginSettinglist.cpp --- a/XDMSettingsUI/src/XDMPluginSettinglist.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,338 +0,0 @@ -/* -* Copyright (c) 2005-2010 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: XDM GS plugin, Setting List class implementation -* -*/ - - - - -// INCLUDE FILES -#include "XDMExternalInterface.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "XDMPlugin.hrh" -#include "XDMPluginSettinglist.h" -#include "SettingsData.h" - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::NewL(CSettingsData &aData) -// ----------------------------------------------------------------------------- -// -CXDMPluginSettinglist *CXDMPluginSettinglist::NewL(CSettingsData &aData) - { - CXDMPluginSettinglist* self = CXDMPluginSettinglist::NewLC(aData); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::NewLC(CSettingsData &aData) -// ----------------------------------------------------------------------------- -// -CXDMPluginSettinglist *CXDMPluginSettinglist::NewLC(CSettingsData &aData) - { - CXDMPluginSettinglist* self = new (ELeave) CXDMPluginSettinglist(aData); - CleanupStack::PushL(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::CXDMPluginSettinglist(CSettingsData &aData) -// ----------------------------------------------------------------------------- -// -CXDMPluginSettinglist::CXDMPluginSettinglist(CSettingsData &aData) : - CAknSettingItemList(), - iSettingsData(aData) - { - SetComponentsToInheritVisibility( ETrue ); - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::~CXDMPluginSettinglist() -// ----------------------------------------------------------------------------- -// -CXDMPluginSettinglist::~CXDMPluginSettinglist() - { - // no specific destruction code required - no owned data - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::SizeChanged() -// ----------------------------------------------------------------------------- -// -void CXDMPluginSettinglist::SizeChanged() - { - // if size changes, make sure component takes whole available space - if (ListBox()) - { - ListBox()->SetRect(Rect()); - } - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::EditCurrentItemL() -// ----------------------------------------------------------------------------- -// -void CXDMPluginSettinglist::EditCurrentItemL() - { - // invoke EditItemL on the current item - TInt index = ListBox()->CurrentItemIndex(); - - //Cause SIP setting is hidden - if(index >= 3) //ESipURLIndex == 3 - index++; - - // if access point need to be edit - if (index == EAccessPointIndex) - { - EditAccessPointL(); - SaveSettingL(index); - } - else - EditItemL(index,ETrue); // invoked from menu - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::EditItemL (TInt aIndex, TBool aCalledFromMenu) -// ----------------------------------------------------------------------------- -// -void CXDMPluginSettinglist::EditItemL (TInt aIndex, TBool aCalledFromMenu) - { - if (aIndex == EAccessPointIndex) - { - EditAccessPointL(); - } - else - { - CAknSettingItemList::EditItemL(aIndex, aCalledFromMenu); - } - (*SettingItemArray())[aIndex]->StoreL(); - SaveSettingL(aIndex); - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::SaveSettingL(TInt aIndex) -// ----------------------------------------------------------------------------- -// -void CXDMPluginSettinglist::SaveSettingL(TInt aIndex) - { - - switch (aIndex) - { - case ESettingNameIndex: - SetTitlePaneTextL(iSettingsData.iSettingNameDisp); - break; - - case EAccessPointIndex: - if (iSettingsData.iAccessPoint > -1) // if Valid AP number - { - (iSettingsData.iAccessPointDes).Num(iSettingsData.iAccessPoint); - GetAccessPointNameL(iSettingsData.iAccessPoint, - iSettingsData.iAccessPointName); - } - LoadSettingsL(); - break; - - case EServerAddressIndex: - break; - - - case ESipURLIndex: - break; - case EUserIDIndex: - break; - - case EPasswordIndex: - break; - - default: - break; - } - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::CreateSettingItemL (TInt aIdentifier) -// ----------------------------------------------------------------------------- -// -CAknSettingItem * CXDMPluginSettinglist::CreateSettingItemL (TInt aIdentifier) - { - // method is used to create specific setting item as required at run-time. - // aIdentifier is used to determine what kind of setting item should be - // created - - CAknSettingItem* settingItem = NULL; - - switch (aIdentifier) - { - case ESettingItemSettingName: - - settingItem = new (ELeave) CAknTextSettingItem ( aIdentifier, - iSettingsData.iSettingNameDisp); - break; - - case ESettingItemAccessPoint: - GetAccessPointNameL(iSettingsData.iAccessPoint, iSettingsData.iAccessPointName); - settingItem = new (ELeave) CAknTextSettingItem ( - aIdentifier, iSettingsData.iAccessPointName); - break; - - case ESettingItemServerAddress: - settingItem = new (ELeave) CAknTextSettingItem ( - aIdentifier, - iSettingsData.iServerAddress); - break; - - - - case ESettingItemSipURL: - settingItem = new (ELeave) CAknTextSettingItem ( - aIdentifier, - iSettingsData.iSipURL); - settingItem->SetHidden(ETrue); - break; - - - case ESettingItemUserID: - settingItem = new (ELeave) CAknTextSettingItem ( - aIdentifier, - iSettingsData.iUserID); - break; - case ESettingItemPassword: - settingItem = new (ELeave) CAknPasswordSettingItem ( - aIdentifier, - CAknPasswordSettingItem::EAlpha, - iSettingsData.iPassword); - break; - default: - break; - } - return settingItem; - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::EditAccessPoint() -// ----------------------------------------------------------------------------- -// -void CXDMPluginSettinglist::EditAccessPointL() - { - // After dialog server for access point selection (RGenConAgentDialogServer) - // has deprecated wins emulator mode needs a different technique to show - // emulator-lan access point. - - CCommsDatabase* commsDb = CCommsDatabase::NewL( EDatabaseTypeIAP ); - CleanupStack::PushL(commsDb); - CApUtils* aPUtils = CApUtils::NewLC( *commsDb ); - - CApSettingsHandler *apUi = CApSettingsHandler::NewLC( - ETrue, - EApSettingsSelListIsPopUp, - EApSettingsSelMenuSelectNormal, - KEApIspTypeAll, - EApBearerTypeAllBearers, - KEApSortNameAscending, - EIPv4 | EIPv6 - ); - TUint32 id; - - TRAP_IGNORE(id = aPUtils->WapIdFromIapIdL(iSettingsData.iAccessPoint)); - - //err can also be in case this is new set, iSettingsData.iAccessPoint = -1 - //so ignoring the error - - if ( apUi->RunSettingsL( id, id ) == KApUiEventSelected) - { - iSettingsData.iAccessPoint = aPUtils->IapIdFromWapIdL(id); - } - CleanupStack::PopAndDestroy(3, commsDb); //commsDb, aPUtils, apUi - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::GetAccessPointNameL(TInt32 aAP, TDes& aAccessPoint) -// ----------------------------------------------------------------------------- -// -void CXDMPluginSettinglist::GetAccessPointNameL(TInt32 aAP, TDes& aAccessPoint) - { -#if defined __WINS__ && defined _DEBUG // handled differently in wins+debug - if (aAP != KErrNotFound) // if access point is defined take a general name - StringLoader::Load ( aAccessPoint, R_STR_XDM_AP_NAME_FOR_DEBUG_ONLY); -#else - CCommsDatabase* commsDb = CCommsDatabase::NewL( EDatabaseTypeIAP ); - CleanupStack::PushL(commsDb); - CApUtils* aPUtils = CApUtils::NewLC( *commsDb ); - TInt err(KErrNone); - // to remove id bug - TRAP(err, aAP = aPUtils->WapIdFromIapIdL(aAP)); - TRAP(err, aPUtils->NameL(aAP, aAccessPoint)); - // dont do anything if name not found or if some error occur - CleanupStack::PopAndDestroy(2); // commsDb, aPUtils -#endif - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::IsAccessPointInUseL(TInt32 aAP) -// ----------------------------------------------------------------------------- -// -TBool CXDMPluginSettinglist::IsAccessPointInUseL(TInt32 aAP) - { - TBool inUse( EFalse ); - - CCommsDatabase* commsDb = CCommsDatabase::NewL( EDatabaseTypeIAP ); - CleanupStack::PushL(commsDb); - CApUtils* aPUtils = CApUtils::NewLC( *commsDb ); - TInt err(KErrNone); - // to remove id bug - TRAP(err, aAP = aPUtils->WapIdFromIapIdL(aAP)); - inUse = aPUtils->IsAPInUseL( aAP ); - // dont do anything if name not found or if some error occur - CleanupStack::PopAndDestroy(2); // commsDb, aPUtils - - return inUse; - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::SetTitlePaneTextL( const TDesC& aTitleText ) const -// ----------------------------------------------------------------------------- -// -void CXDMPluginSettinglist::SetTitlePaneTextL( const TDesC& aTitleText ) const - { - CAknTitlePane* title = static_cast< CAknTitlePane* > - ( CEikonEnv::Static()->AppUiFactory()->StatusPane()->ControlL( - TUid::Uid( EEikStatusPaneUidTitle ) ) ); - if ( !title ) - { - User::Leave( KErrNotSupported ); - } - - title->SetTextL( aTitleText ); - } - -// ----------------------------------------------------------------------------- -// CXDMPluginSettinglist::ResetItemIndex() -// ----------------------------------------------------------------------------- -// -void CXDMPluginSettinglist::ResetItemIndex() - { - ListBox()->SetCurrentItemIndexAndDraw(NULL); - } - -// End of File diff -r 2580314736af -r 2669f8761a99 group/bld.inf --- a/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ b/group/bld.inf Tue Aug 31 15:35:50 2010 +0300 @@ -19,10 +19,4 @@ #include "../pressrv_plat/group/bld.inf" #include "../XDMEngine/group/bld.inf" -#include "../XDMSettingsUI/group/bld.inf" -#include "../xdmprotocols/group/bld.inf" -#include "../msgconnmanager/group/bld.inf" -#include "../presencesettingsui/group/bld.inf" -#include "../simpleengine/group/bld.inf" -#include "../presencefwsimpleadpt/group/bld.inf" -#include "../simpledatamodeladapter/group/bld.inf" +//#include "../simpleengine/group/bld.inf" \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 inc/xcapappusagedef.h --- a/inc/xcapappusagedef.h Thu Aug 19 10:19:02 2010 +0300 +++ b/inc/xcapappusagedef.h Tue Aug 31 15:35:50 2010 +0300 @@ -48,9 +48,6 @@ _LIT8( KXdmPocGroupUsageAUID, "/org.openmobilealliance.poc-groups/" ); // add new AUID definitions here //_LIT8( KXdmTestAppUsageAUID, "/org.foo.bar/" ); -// PRES-CONTENT starts -_LIT8( KXdmPresContentAUID, "/org.openmobilealliance.pres-content/" ); -// PRES-CONTENT ends // ContentTypes _LIT8( KXdmResourceListsUsageContType, "application/resource-lists+xml" ); @@ -66,10 +63,7 @@ _LIT8( KXdmPocGroupUsageContType, "application/vnd.oma.poc.groups+xml" ); // add new content types here //_LIT8( KXdmTestAppUsageContType, "application/test-type+xml" ); -// PRES-CONTENT starts -_LIT8( KXdmPresContentContType, "application/vnd.oma.pres-content+xml" ); -_LIT8( KXdmPresContentContTypeOld, "application/vnd.oma.content+xml" ); -// PRES-CONTENT ends + // Namespaces _LIT8( KXdmResourceListsNamespace, "urn:ietf:params:xml:ns:resource-lists" ); @@ -84,9 +78,6 @@ _LIT8( KXdmPocUserAccessNamespace, "urn:oma:xml:poc:poc-rules" ); _LIT8( KXdmPocGroupNamespace, "urn:oma:xml:poc:list-service" ); // add new namespace definitions here -// PRES-CONTENT starts -_LIT8( KXdmPresContentNamespace, "urn:oma:xml:prs:pres-content" ); -// PRES-CONTENT ends // Namespace prefixes _LIT8( KXdmSharedXDMUriUsageNsPrefix, "ou" ); @@ -240,15 +231,6 @@ _LIT( KXdmPackage, "package" ); _LIT8( KXdmPresence, "presence" ); -// PRES-CONTENT starts -_LIT( KXdmMimeType, "mime-type"); -_LIT( KXdmEncoding, "encoding"); -_LIT( KXdmDescription, "description"); -_LIT( KXdmData, "data"); -_LIT( KXdmSvg, "svg"); -_LIT( KXdmRect, "rect"); -// PRES-CONTENT ends - #endif //__XCAPAPPUSAGEDEF__ // End of File diff -r 2580314736af -r 2669f8761a99 inc/xdmlogwriter.h --- a/inc/xdmlogwriter.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* -* Copyright (c) 2007 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: XDM Engine log writer -* -*/ - - - - -#ifndef __XDMLOGWRITER__ -#define __XDMLOGWRITER__ - -#include - -_LIT( KXdmLogDir, "XDM" ); -_LIT( KXdmLogFileExt, ".txt" ); -_LIT( KXdmLogRoot, "C:\\logs\\" ); - -//Determines how many log file instances are -//retained until the directory is cleaned up -/* E.g. XdmEngine1.txt, XdmEngine2.txt ... XdmEngine10.txt */ -const TInt KMaxLogFiles = 10; - -/* Default size of the log buffer */ -const TInt KLogBufferMaxSize = 2000; - -// CLASS DECLARATION -class CXdmLogWriter : public CBase - { - public: - - /** - * Symbian OS constructor - * - * @param TDesC& The log file name - * @return CXdmLogWriter* A log writer instance - */ - IMPORT_C static CXdmLogWriter* NewL( const TDesC& aLogName ); - - /** - * Write a log string. - * - * @param TDesC& Log string in 16-bit - * @return void - */ - IMPORT_C void WriteToLog( const TDesC& aLogLine ) const; - - /** - * Write a log string. - * - * @param TDesC8& Log string in 8-bit - * @return void - */ - IMPORT_C void WriteToLog( const TDesC8& aLogLine ) const; - - /** - * Destructor - */ - virtual ~CXdmLogWriter(); - - private: - - /** - * C++ constructor is private - */ - CXdmLogWriter(); - - /** - * Symbian OS second-phase constructor - * @param TDesC& Name of the log file to write to - * @return void - */ - void ConstructL( const TDesC& aLogName ); - - private: //Data - - HBufC* iLogFileName; - - }; - -#endif //__XDMLOGWRITER__ - -// End of File diff -r 2580314736af -r 2669f8761a99 layers.sysdef.xml --- a/layers.sysdef.xml Thu Aug 19 10:19:02 2010 +0300 +++ b/layers.sysdef.xml Tue Aug 31 15:35:50 2010 +0300 @@ -1,10 +1,10 @@ - ]> - + diff -r 2580314736af -r 2669f8761a99 msgconnmanager/bwinscw/msgconnmanagerU.DEF --- a/msgconnmanager/bwinscw/msgconnmanagerU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?NewMsgConnManagerL@@YAPAVMMsgConnManager@@H@Z @ 1 NONAME ; class MMsgConnManager * NewMsgConnManagerL(int) - diff -r 2580314736af -r 2669f8761a99 msgconnmanager/eabi/msgconnmanagerU.DEF --- a/msgconnmanager/eabi/msgconnmanagerU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -EXPORTS - _Z18NewMsgConnManagerLi @ 1 NONAME - _ZTI13CMsgConnTimer @ 2 NONAME ; ## - _ZTI15CMsgConnManager @ 3 NONAME ; ## - _ZTV13CMsgConnTimer @ 4 NONAME ; ## - _ZTV15CMsgConnManager @ 5 NONAME ; ## - diff -r 2580314736af -r 2669f8761a99 msgconnmanager/group/bld.inf --- a/msgconnmanager/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* -* Copyright (c) 2005 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: Connection manager build file -* -*/ - - - -#include - -//-------------------- -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_EXPORTS -//-------------------- -// IBYs -../rom/msgconnmanager.iby CORE_MW_LAYER_IBY_EXPORT_PATH(msgconnmanager.iby) - -//-------------------- -PRJ_MMPFILES -//-------------------- -msgconnmanager.mmp diff -r 2580314736af -r 2669f8761a99 msgconnmanager/group/msgconnmanager.mmp --- a/msgconnmanager/group/msgconnmanager.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2005 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: Connection manager -* -*/ - - - -#include - -TARGET msgconnmanager.dll -TARGETTYPE dll -UID 0x1000008d 0x101FB0C2 -CAPABILITY CAP_GENERAL_DLL - -SOURCEPATH ../src - -SOURCE msgconntimer.cpp -SOURCE msgconnmanager.cpp - -USERINCLUDE ../inc - -MW_LAYER_SYSTEMINCLUDE - -DEBUGLIBRARY flogger.lib -LIBRARY efsrv.lib -LIBRARY euser.lib -LIBRARY commdb.lib -LIBRARY esock.lib - -#if defined( ARMCC ) - DEFFILE ../eabi/ -#elif defined ( WINSCW ) - deffile ../bwinscw/ -#elif defined (WINS ) - deffile ../bwins/ -#endif - - diff -r 2580314736af -r 2669f8761a99 msgconnmanager/inc/msgconnmanager.h --- a/msgconnmanager/inc/msgconnmanager.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,365 +0,0 @@ -/* -* Copyright (c) 2005 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: Connection manager -* -*/ - - - - -#ifndef __MSGCONNMANAGER__ -#define __MSGCONNMANAGER__ - -// INCLUDES -#include -#include -#include -#include -#include "msgconntimercallback.h" - - -//CONSTANTS -_LIT( KConnManLogDir, "MsgConnMan" ); -_LIT( KConnManLogFile, "MsgConnManager.txt" ); -const TInt KConnManLogBufferMaxSize = 2000; - -//FORWARD DECLARATIONS -class CMsgConnTimer; -class MMsgBearerObsCallback; - -// CLASS DECLARATION -class CMsgConnManager : public CActive, - public MMsgConnManager, - public MMsgConnTimerCallback - { - public: // Constructors and destructor - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CMsgConnManager* - */ - static CMsgConnManager* NewL( const TInt aAccessPoint ); - - /** - * Destructor. - */ - virtual ~CMsgConnManager(); - - public: //New functions - - /** - * Symbian OS default constructor. - * @param TRequestStatus& Request status of the caller - * @return void - */ - virtual void StartConnection( TRequestStatus& aStatus ); - - /** - * Stop a connection, synchronous version - * @return void - */ - virtual void StopConnection(); - - /** - * Stop a connection, asynchronous version - * @return void - */ - virtual void StopConnection( TRequestStatus& aStatus ); - - /** - * Cancel StartConnection(). The method may leave with - * - KErrAbort if the TRequestStatus object the client - * supplied is not active, hence, there is no pending - * request that would require cancelling. - * In normal cases - when RConnection::Start() or its - * progress notifications are pending - ConnMan completes - * the client's request with the "error" KErrCancel. - */ - virtual void CancelStartL(); - - /** - * Set the ID of the Access Point to connect to. - * @param aAccessPointID - * @return void - */ - virtual void SetAccessPointIDL( const TInt aAccessPointID ); - - /** - * Returns the number of connections presently active - * @return TInt - */ - virtual TInt NumberOfActiveConns(); - - /** - * Read from the Comms Database - * @param const TMsgSupportedCommDbRecords& aParameter - * @return HBufC8* - */ - virtual HBufC* ReadFromCommsDbLC( const TSupportedCommDbRecords aParameter ); - - /** - * Returns a reference to the active socket server. - * @return RConnection& - */ - virtual RConnection& Connection(); - - /** - * Returns a reference to the active socket server. - * @return RSocketServ& - */ - virtual RSocketServ& SocketSession(); - - /** - * Add an object to the queue of listeners. The object to be added - * must inplement the interface MMsgBearerObsCallback in order - * to receive events from the system agent. It is important to note - * that the call to the notification handler (HandleBearerEventL()) - * takes place inside the RunL() method of this Connection Manager, - * so the listening object MUST return the control to the Manager - * AS SOON AS POSSIBLE in order not to clog the scheduler. - * @param MMsgBearerObsCallback* aClient - * @return void - */ - virtual void AddEventSubscriberL( MMsgBearerObsCallback* aClient ); - - /** - * Remove an object from the queue of listeners. It is no necessary - * to call this method at deletion time, as the destructor destroys - * the subscriber queue altogether. If, however, a listener object is - * destroyed before an instance of Connection Manager, it is mandatory - * to remove the listener from the queue prior to deleting the listener. - * @param MMsgBearerObsCallback* aClient - * @return void - */ - virtual void RemoveEventSubscriber( MMsgBearerObsCallback* aClient ); - - /** - * Returns the status of the ConnMan: ETrue if sending is OK, EFalse otherwise - * @return TBool - */ - virtual TBool Status() const; - - /** - * Destructor. - * @return void - */ - virtual void Destroy(); - - public: - - #ifdef _DEBUG - - /** - * A Global logging function - * @param TRefByValue aFmt,... - * @return void - */ - static void WriteToLog( TRefByValue aFmt,... ); - - #endif - - private: - - /** - * Start to keep an eye on the opened connection - * @return void - */ - void StartNetworkObserver(); - - /** - * Determine the state of the connection opening - * @return void - */ - void WatchConnectionOpening(); - - /** - * Determine the state of the (opened) connection - * @return void - */ - void DetermineConnectionStatusL(); - - /** - * Broadcast the bearer event to registered listeners - * @param TMsgBearerEvent aBearerEvent - * @return void - */ - void BroadcastBearerEventL( const TMsgBearerEvent aBearerEvent ); - - /** - * Determine which value is to be fetched from the CommsDb - * @param TPtrC& aDbView - * @param TPtrC& TPtrC& aDbColumn - * @param TMsgSupportedCommDbRecords aParameter - * @return TBool - */ - TInt DetermineRecordTypeLC( TPtrC& aDbColumn, - CCommsDbTableView*& aView, - const TSupportedCommDbRecords aParameter ); - - /** - * Broadcast the bearer event to registered listeners - * @param TMsgBearerEvent aBearerEvent - * @return void - */ - TInt InitCommDbViewLC( TPtrC& aDbRecord, - CCommsDbTableView*& aView, - const TSupportedCommDbRecords aParameter ); - - /** - * Broadcast the bearer event to registered listeners - * @param TMsgBearerEvent aBearerEvent - * @return void - */ - TBool CheckProxyUsageLC( CCommsDbTableView*& aView ); - - /** - * Issue a new asynchronous request - * @return void - */ - void IssueRequest(); - - /** - * Check the availability of GPRS Network - * @return TBool Available or not - */ - TBool IsValidApL( TUint32 aUid ); - - /** - * Handle the opening of a new connection - * @return void - */ - void HandleNewConnection(); - - /** - * Handle an existing connection - * @return void - */ - void HandleExistingConnection(); - - /** - * Symbian OS second-phase constructor - * @param TInt aAccessPoint - * @return void - */ - void ConstructL( const TInt aAccessPoint ); - - /** - * Delete the log files - * @return void - */ - void DeleteLogFileL(); - - /** - * C++ default constructor is private - * @return void - */ - CMsgConnManager(); - - /** - * From CActive - * @return void - */ - void RunL(); - - /** - * From CActive - * @return void - */ - void DoCancel(); - - private: //From MMsgConnectionTimerCallback - - /** - * Catch a timer event - * @param TInt aStatus - * @return void - */ - virtual void HandleTimerEvent( TInt aStatus ); - - private: //Data - - enum TMsgConnManState - { - EMsgConnManIdle = 0, - EMsgConnManWaitingForStartComplete, - EMsgConnManWaitingForNotifications, - EMsgConnManDisconnectingPrevious, - EMsgConnManObservingAccessPoint, - EMsgConnManBearerSuspended, - EMsgConnManBearerLost - }; - - TInt iAccessPointID; - TInt iLastConnectionStage; - TBool iProgressStarted; - TBool iConnectionClosed; - TNifProgressBuf iProgressBuffer; - TMsgConnManState iConnManStatus; - TRequestStatus* iClientStatus; - TRequestStatus* iPingRequestStatus; - TRequestStatus* iTimedCompleteStatus; - CCommsDatabase* iCommsDatabase; - CMsgConnTimer* iConnectionTimer; - RConnection iConnection; - TCommDbConnPref iAccessPointSettings; - RSocketServ iSocketSession; - RPointerArray iEventSubscribers; - }; - -// --------------------------------------------------------- -// CMsgConnManager::StartBearerObserver -// If the status is any other than EMsgConnManObservingAccessPoint -// there is something fishy going on => do not send/receive anything -// --------------------------------------------------------- -// -inline TBool CMsgConnManager::Status() const - { - return iConnManStatus == EMsgConnManObservingAccessPoint; - } - -// --------------------------------------------------------- -// CMsgConnManager::SocketSession -// -// --------------------------------------------------------- -// -inline RSocketServ& CMsgConnManager::SocketSession() - { - return iSocketSession; - } - -// --------------------------------------------------------- -// CMsgConnManager::Connection -// -// --------------------------------------------------------- -// -inline RConnection& CMsgConnManager::Connection() - { - return iConnection; - } - -// --------------------------------------------------------- -// CMsgConnManager::Destroy -// -// --------------------------------------------------------- -// -inline void CMsgConnManager::Destroy() - { - delete this; - } - -#endif - - -// End of File diff -r 2580314736af -r 2669f8761a99 msgconnmanager/inc/msgconntimer.h --- a/msgconnmanager/inc/msgconntimer.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* -* Copyright (c) 2005 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: Connection manager timer -* -*/ - - - - -#ifndef __MSGCONNTIMER__ -#define __MSGCONNTIMER__ - -#include - -class MMsgConnTimerCallback; - -// CLASS DECLARATION -class CMsgConnTimer : public CActive - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - * @return CMsgConnTimer* - */ - static CMsgConnTimer* NewL(); - - /** - * Two-phased constructor. - * @param MMsgConnectionTimerCallback* aClient - * @return CMsgConnTimer* - */ - static CMsgConnTimer* NewL( MMsgConnTimerCallback* aClient ); - - /** - * Destructor. - */ - virtual ~CMsgConnTimer(); - - public: // New functions - - /** - * Request to activate timer - * @param TRequestStatus& aStatus - * @param TTimeIntervalMicroSeconds32 aDelay - * @param TBool aCompleteIfCancel = EFalse - * @return void - */ - void ActivateTimer( TRequestStatus& aStatus, - TTimeIntervalMicroSeconds32 aDelay ); - - /** - * Request to activate timer - * @param TTimeIntervalMicroSeconds32 aDelay - * @param MMsgConnectionTimerCallback* aClient - * @return void - */ - void ActivateTimer( MMsgConnTimerCallback* aClient, - TTimeIntervalMicroSeconds32 aDelay ); - - private: - - /** - * From CActive. - * @return void - */ - void RunL(); - - /** - * From CActive. - * @return void - */ - void DoCancel(); - - /** - * By default Symbian OS constructor is private. - * @return void - */ - void ConstructL(); - - /** - * C++ constructor. - */ - CMsgConnTimer(); - - /** - * C++ constructor. - * @param MMsgConnectionTimerCallback* aClient - */ - CMsgConnTimer( MMsgConnTimerCallback* aClient ); - - private: // Data - - RTimer iTimer; - TRequestStatus* iClientStatus; - TBool iCompleteIfCancel; - MMsgConnTimerCallback* iClient; - }; - -#endif //MSGCONNTIMER_H - -// End of File diff -r 2580314736af -r 2669f8761a99 msgconnmanager/inc/msgconntimercallback.h --- a/msgconnmanager/inc/msgconntimercallback.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2005 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: Connection manager timer callback -* -*/ - - - - -#ifndef __MSGCONNTIMERCALLBACK__ -#define __MSGCONNTIMERCALLBACK__ - -#include - -// CLASS DECLARATION - -class MMsgConnTimerCallback - { - public: - - /** - * Pure virtual callback function to be implemented in the - * derived class. This function is called when timer has - * compeleted. - * @param aStatus The integer value of iStatus of the timer class - * @return void - */ - virtual void HandleTimerEvent( TInt aStatus ) = 0; - }; - -#endif //__MSGCONNTIMERCALLBACK__ - -// End of File diff -r 2580314736af -r 2669f8761a99 msgconnmanager/rom/msgconnmanager.iby --- a/msgconnmanager/rom/msgconnmanager.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -/* -* Copyright (c) 2005 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: Connection manager rom file -* -*/ - - - - -#ifndef __MSGCONNMANAGER_IBY__ -#define __MSGCONNMANAGER_IBY__ - - #ifdef __XDM - #define __INCLUDE_CM__ - #endif //__XDM - - #ifdef __IM - #define __INCLUDE_CM__ - #endif //__IM - - #ifdef __PRESENCE - #define __INCLUDE_CM__ - #endif //__PRESENCE - - #ifdef __INCLUDE_CM__ - file=ABI_DIR/BUILD_DIR/msgconnmanager.dll SHARED_LIB_DIR/msgconnmanager.dll - #endif //__INCLUDE_CM__ - -#endif //__MSGCONNMANAGER_IBY__ - diff -r 2580314736af -r 2669f8761a99 msgconnmanager/src/msgconnmanager.cpp --- a/msgconnmanager/src/msgconnmanager.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1065 +0,0 @@ -/* -* Copyright (c) 2005 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: Connection manager -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include "msgconntimer.h" -#include "msgconnmanager.h" - -// ================= MEMBER FUNCTIONS ======================= -// - - -// ---------------------------------------------------------- -// CMsgConnManager::CMsgConnManager -// -// ---------------------------------------------------------- -// -CMsgConnManager::CMsgConnManager() : CActive( EPriorityUserInput + 2 ), - iProgressStarted( EFalse ), - iConnectionClosed( ETrue ) - - { - - } - -// ---------------------------------------------------------- -// CMsgConnManager::NewL -// -// ---------------------------------------------------------- -// -CMsgConnManager* CMsgConnManager::NewL( const TInt aAccessPoint ) - { - CMsgConnManager* self = new ( ELeave ) CMsgConnManager(); - CleanupStack::PushL( self ); - self->ConstructL( aAccessPoint ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CMsgConnManager::ConstructL -// -// ---------------------------------------------------------- -// -void CMsgConnManager::ConstructL( const TInt aAccessPoint ) - { - DeleteLogFileL(); - iAccessPointID = aAccessPoint; - iConnectionTimer = CMsgConnTimer::NewL(); - iCommsDatabase = CCommsDatabase::NewL( EDatabaseTypeUnspecified ); - User::LeaveIfError( iSocketSession.Connect() ); - User::LeaveIfError( iConnection.Open( iSocketSession ) ); - iConnectionClosed = EFalse; - iAccessPointSettings.SetIapId( aAccessPoint ); - iAccessPointSettings.SetDialogPreference( ECommDbDialogPrefDoNotPrompt ); - #ifdef _DEBUG - WriteToLog( _L8( "CONNMAN: LOGGING ENABLED" ) ); - #endif - CActiveScheduler::Add( this ); - } - -// ---------------------------------------------------- -// CMsgConnManager::~CMsgConnManager -// -// ---------------------------------------------------- -// -CMsgConnManager::~CMsgConnManager() - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::~CMsgConnManager(), Destructor." ) ); - #endif - Cancel(); - delete iCommsDatabase; - delete iConnectionTimer; - iConnection.Close(); - iSocketSession.Close(); - iEventSubscribers.Close(); - } - -// ---------------------------------------------------------- -// CMsgConnManager::DeleteLogFileL -// -// ---------------------------------------------------------- -// -void CMsgConnManager::DeleteLogFileL() - { - RFs session; - User::LeaveIfError( session.Connect() ); - CFileMan* manager = CFileMan::NewL( session ); - manager->Delete( _L("C:\\logs\\MsgConnMan\\*.*") ); - session.Close(); - delete manager; - manager = NULL; - } - -// --------------------------------------------------------- -// CMsgConnManager::StartBearerObserver -// -// --------------------------------------------------------- -// -void CMsgConnManager::StartNetworkObserver() - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::StartNetworkObserver() Closed: %d" ), iConnectionClosed ); - #endif - #ifdef __WINS__ - if( !iConnectionClosed ) - { - iStatus = KRequestPending; - SetActive(); - } - #else - if( !iConnectionClosed ) - { - if( !IsActive() ) - { - iStatus = KRequestPending; - iConnection.ProgressNotification( iProgressBuffer, iStatus ); - SetActive(); - } - } - #endif - } - -// --------------------------------------------------------- -// CMsgConnManager::RunL() -// -// --------------------------------------------------------- -// -void CMsgConnManager::RunL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::RunL(), iConnManStatus: %d iStatus: %d iStage: %d iError: %d" ), - iConnManStatus, iStatus.Int(), iProgressBuffer().iStage, iProgressBuffer().iError ); - #endif - switch( iConnManStatus ) - { - case EMsgConnManWaitingForStartComplete: - #ifdef _DEBUG - WriteToLog( _L8( " Current status is EMsgConnManWaitingForStartComplete." ) ); - #endif - WatchConnectionOpening(); - break; - case EMsgConnManWaitingForNotifications: - #ifdef _DEBUG - WriteToLog( _L8( " Current status is EMsgConnManWaitingForNotifications." ) ); - #endif - WatchConnectionOpening(); - break; - case EMsgConnManObservingAccessPoint: - #ifdef _DEBUG - WriteToLog( _L8( " Current status is EMsgConnManObservingAccessPoint." ) ); - #endif - DetermineConnectionStatusL(); - break; - case EMsgConnManBearerSuspended: - #ifdef _DEBUG - WriteToLog( _L8( " Current status is EMsgConnManBearerSuspended." ) ); - #endif - DetermineConnectionStatusL(); - break; - case EMsgConnManDisconnectingPrevious: - #ifdef _DEBUG - WriteToLog( _L8( " Timer expired, complete client's request." ) ); - #endif - User::RequestComplete( iTimedCompleteStatus, KErrNone ); - iConnManStatus = EMsgConnManIdle; - break; - case EMsgConnManIdle: - #ifdef _DEBUG - WriteToLog( _L8( " Idle, iStatus is %d." ), iStatus.Int() ); - #endif - break; - default: - #ifdef _DEBUG - WriteToLog( _L8( " Default case, should not be here." ) ); - #endif - break; - } - #ifdef _DEBUG - WriteToLog( _L8( " RunL() ends" ) ); - #endif - } - -// ---------------------------------------------------- -// CMsgConnManager::WatchConnectionOpening() -// -// ---------------------------------------------------- -// -void CMsgConnManager::WatchConnectionOpening() - { - #ifdef _DEBUG - WriteToLog( _L8( " CMsgConnManager::WatchConnectionOpening() - iProgressStarted: %d" ), iProgressStarted ); - #endif - //Lets quit right away if it is an error - if( iStatus != KErrNone ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Something wrong, complete with error: %d." ), iStatus.Int() ); - #endif - iConnectionTimer->Cancel(); - if( iConnManStatus == EMsgConnManWaitingForNotifications ) - iConnection.CancelProgressNotification(); - iConnection.Close(); - iConnectionClosed = ETrue; - User::RequestComplete( iClientStatus, iStatus.Int() ); - iConnManStatus = EMsgConnManIdle; - } - else - { - if( iProgressStarted ) - { - iLastConnectionStage = iProgressBuffer().iStage; - if( iLastConnectionStage == KLinkLayerOpen ) //we are done - { - #ifdef _DEBUG - WriteToLog( _L8( " Connected. Completing with KErrNone." ) ); - #endif - iConnectionTimer->Cancel(); - iConnManStatus = EMsgConnManObservingAccessPoint; - StartNetworkObserver(); - User::RequestComplete( iClientStatus, KErrNone ); - iProgressStarted = EFalse; - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " Keep on waiting for progress." ) ); - #endif - IssueRequest(); - } - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " Start complete, watch progress." ) ); - #endif - if( iConnManStatus == EMsgConnManWaitingForStartComplete ) - { - iProgressStarted = ETrue; - iConnManStatus = EMsgConnManWaitingForNotifications; - } - IssueRequest(); - } - } - } - -// ---------------------------------------------------- -// CMsgConnManager::DetermineConnectionStatus() -// -// ---------------------------------------------------- -// -void CMsgConnManager::DetermineConnectionStatusL() - { - #ifdef _DEBUG - WriteToLog( _L8( " CMsgConnManager::DetermineConnectionStatus()" ) ); - #endif - #ifdef __WINS__ - Cancel(); - switch( iStatus.Int() ) - #else - switch( iProgressBuffer().iStage ) - #endif - { - case KLinkLayerClosed: - case KConnectionUninitialised: - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( " KLinkLayerClosed, notify clients of EMsgBearerLost" ) ); - #endif - Cancel(); - iConnManStatus = EMsgConnManBearerLost; - BroadcastBearerEventL( EMsgBearerLost ); - iConnection.Close(); - iConnectionClosed = ETrue; - iEventSubscribers.Reset(); - iConnManStatus = EMsgConnManIdle; - break; - case KLinkLayerOpen: - #ifdef _DEBUG - WriteToLog( _L8( " KLinkLayerOpen -> GPRS Context Active." ) ); - #endif - if( iConnManStatus == EMsgConnManBearerSuspended ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Moving to active state." ) ); - #endif - iConnManStatus = EMsgConnManObservingAccessPoint; - BroadcastBearerEventL( EMsgBearerActive ); - StartNetworkObserver(); - } - break; - case KDataTransferTemporarilyBlocked: - #ifdef _DEBUG - WriteToLog( _L8( " KDataTransferTemporarilyBlocked -> GPRS Context Suspended." ) ); - #endif - if( iConnManStatus != EMsgConnManBearerSuspended ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Moving to suspended state." ) ); - #endif - iConnManStatus = EMsgConnManBearerSuspended; - BroadcastBearerEventL( EMsgBearerSuspended ); - } - StartNetworkObserver(); - break; - default: - #ifdef _DEBUG - #ifdef __WINS__ - if( iStatus.Int() == KErrCancel ) - WriteToLog( _L8( " Bearer event generation cancelled" ) ); - else - WriteToLog( _L8( " Some weird status: %d" ), iStatus.Int() ); - #else - WriteToLog( _L8( " Default case! WTF?!?" ) ); - #endif - #endif - StartNetworkObserver(); - break; - } - } - -// --------------------------------------------------------- -// CMsgConnManager::CancelStartL -// -// --------------------------------------------------------- -// -void CMsgConnManager::CancelStartL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::CancelStartL()" ) ); - #endif - if( iClientStatus != NULL && iClientStatus->Int() == KRequestPending ) - { - if( iConnManStatus == EMsgConnManWaitingForStartComplete || - iConnManStatus == EMsgConnManWaitingForNotifications ) - { - Cancel(); - iEventSubscribers.Reset(); - User::RequestComplete( iClientStatus, KErrCancel ); - iConnManStatus = EMsgConnManIdle; - iConnectionClosed = ETrue; - } - else User::Leave( KErrAbort ); - } - else User::Leave( KErrAbort ); - } - -// --------------------------------------------------------- -// CMsgConnManager::StopConnection -// -// --------------------------------------------------------- -// -void CMsgConnManager::StopConnection() - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::StopConnection()" ) ); - #endif - if( iConnManStatus == EMsgConnManWaitingForStartComplete || - iConnManStatus == EMsgConnManWaitingForNotifications || - iConnManStatus == EMsgConnManIdle ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Status is %d, wrong state for this operation. Abort." ), iConnManStatus ); - #endif - } - else - { - //If bearer has been lost, we're already closed - if( iConnManStatus != EMsgConnManBearerLost ) - { - Cancel(); - iConnection.Close(); - iConnectionClosed = ETrue; - iEventSubscribers.Reset(); - iConnManStatus = EMsgConnManIdle; - } - } - #ifdef _DEBUG - WriteToLog( _L8( " StopConnection() ends." ) ); - #endif - } - -// --------------------------------------------------------- -// CMsgConnManager::StopConnection -// -// --------------------------------------------------------- -// -void CMsgConnManager::StopConnection( TRequestStatus& aStatus ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CImpsConnectionManager::StopConnectionL()" ) ); - #endif - aStatus = KRequestPending; - iClientStatus = &aStatus; - iTimedCompleteStatus = &aStatus; - if( iConnManStatus == EMsgConnManWaitingForStartComplete || - iConnManStatus == EMsgConnManWaitingForNotifications || - iConnManStatus == EMsgConnManDisconnectingPrevious || - iConnManStatus == EMsgConnManIdle ) - { - #ifdef _DEBUG - WriteToLog( _L8( " Status is %d, wrong state for this operation. Abort." ), - iConnManStatus ); - #endif - User::RequestComplete( iClientStatus, KErrAbort ); - } - else - { - //If bearer has been lost, we're already closed - if( iConnManStatus != EMsgConnManBearerLost ) - { - Cancel(); - iConnection.Close(); - iConnectionClosed = ETrue; - iEventSubscribers.Reset(); - iConnectionTimer->ActivateTimer( iStatus, 4000000 ); - iConnManStatus = EMsgConnManDisconnectingPrevious; - SetActive(); - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " Bearer lost, nothing to do. Complete with KErrNone" ) ); - #endif - User::RequestComplete( iClientStatus, KErrNone ); - } - } - #ifdef _DEBUG - WriteToLog( _L8( " StopConnectionL() ends" ) ); - #endif - } - -// ---------------------------------------------------- -// CMsgConnManager::BroadcastBearerEvent -// -// ---------------------------------------------------- -// -void CMsgConnManager::BroadcastBearerEventL( const TMsgBearerEvent aBearerEvent ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::BroadcastBearerEvent" ) ); - #endif - TInt subs = iEventSubscribers.Count(); - #ifdef _DEBUG - WriteToLog( _L8( " %d clients subscribed." ), subs ); - #endif - if( subs > 0 ) - { - TBool empty = EFalse; - MMsgBearerObsCallback* client = NULL; - for( TInt i = 0;i < subs && !empty;i++ ) - { - //Just in case: - //If a client has managed to remove a listener from the queue - //in the previous callback, "i" will index a bad handle. - subs = iEventSubscribers.Count(); - if( subs > 0 && i < subs ) - { - client = iEventSubscribers[i]; - __ASSERT_ALWAYS( client != NULL, User::Panic( _L( "ObserverNULL!" ), 1 ) ); - TInt error = iProgressBuffer().iError; - if( aBearerEvent == EMsgBearerLost ) - { - #ifdef _DEBUG - TInt stage = iProgressBuffer().iStage; - WriteToLog( _L8( " Event is EMsgBearerLost" ) ); - WriteToLog( _L8( " Stage: %d" ), stage ); - WriteToLog( _L8( " Error: %d" ), error ); - #endif - } - TBool authClose = error == KErrConnectionTerminated; - client->HandleBearerEventL( authClose, aBearerEvent ); - #ifdef _DEBUG - WriteToLog( _L8(" Client no. %d serviced" ), i ); - #endif - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( - " An event listener was removed inside the callback!" ) ); - #endif - //Leave the for loop - empty = ETrue; - } - } - } - #ifdef _DEBUG - WriteToLog( _L8( " BroadcastBearerEvent() ends" ) ); - #endif - } - -// ---------------------------------------------------- -// CMsgConnManager::IssueRequest -// -// ---------------------------------------------------- -// -void CMsgConnManager::IssueRequest() - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::IssueRequest(), status: %d" ), IsActive() ); - #endif - iStatus = KRequestPending; - iConnection.ProgressNotification( iProgressBuffer, iStatus ); - SetActive(); - } - -// --------------------------------------------------------- -// CMsgConnManager::StartConnection -// -// --------------------------------------------------------- -// -void CMsgConnManager::StartConnection( TRequestStatus& aStatus ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::StartConnection() iConnManStatus: %d" ), iConnManStatus ); - #endif - TInt error = 0; - aStatus = KRequestPending; - iClientStatus = &aStatus; - if( iConnectionClosed ) - { - error = iConnection.Open( iSocketSession ); - iConnectionClosed = EFalse; - } - TBool exists = EFalse; - TNifProgress progress; - error = iConnection.Progress( progress ); - #ifdef _DEBUG - WriteToLog( _L8( " Connection stage: %d error: %d" ), progress.iStage, error ); - #endif - TRAPD( err, exists = IsValidApL( iAccessPointID ) ); - if( ( error == KErrNone && err == KErrNone ) && exists ) - { - if( progress.iStage == KConnectionUninitialised ) - HandleNewConnection(); - else - HandleExistingConnection(); - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " Something's wrong, complete with KErrUnknown. IAP exists: %d Error: %d Err: %d" ), exists, error, err ); - #endif - User::RequestComplete( iClientStatus, KErrUnknown ); - iConnectionClosed = ETrue; - } - } - -// --------------------------------------------------------- -// CMsgConnManager::HandleNewConnection -// -// --------------------------------------------------------- -// -void CMsgConnManager::HandleNewConnection() - { - #ifdef _DEBUG - WriteToLog( _L8( " CMsgConnManager::HandleNewConnection()" ) ); - #endif - switch( iConnManStatus ) - { - case EMsgConnManIdle: - #ifdef _DEBUG - WriteToLog( _L8( " Current status is EMsgConnManIdle," ) ); - WriteToLog( _L8( " starting to connect IAP: %d" ), iAccessPointSettings.IapId() ); - #endif - iLastConnectionStage = KConnectionUninitialised; - iConnection.Start( iAccessPointSettings, iStatus ); - iConnManStatus = EMsgConnManWaitingForStartComplete; - iConnectionTimer->ActivateTimer( this, 20000000 ); - SetActive(); - break; - case EMsgConnManDisconnectingPrevious: - #ifdef _DEBUG - WriteToLog( _L8( " Current status is EMsgConnManDisconnectingPrevious," ) ); - WriteToLog( _L8( " new connection cannot be started, ignore." ) ); - #endif - User::RequestComplete( iClientStatus, KErrNotReady ); - break; - default: - #ifdef _DEBUG - WriteToLog( _L8( " We're in some weird state, complete with KErrUnknown" ) ); - #endif - User::RequestComplete( iClientStatus, KErrUnknown ); - iConnManStatus = EMsgConnManIdle; - break; - } - } - -// --------------------------------------------------------- -// CMsgConnManager::HandleExistingConnection -// -// --------------------------------------------------------- -// -void CMsgConnManager::HandleExistingConnection() - { - #ifdef _DEBUG - WriteToLog( _L8( " CMsgConnManager::HandleOldConnection()" ) ); - #endif - switch( iConnManStatus ) - { - case EMsgConnManDisconnectingPrevious: - #ifdef _DEBUG - WriteToLog( _L8( " Current status is EMsgConnManDisconnectingPrevious," ) ); - WriteToLog( _L8( " attempting to open a connection while previous one is still disconnecting. Complete with KErrNotReady." ) ); - #endif - User::RequestComplete( iClientStatus, KErrNotReady ); - break; - case EMsgConnManObservingAccessPoint: - #ifdef _DEBUG - WriteToLog( _L8( " Current status is EMsgConnManObservingAccessPoint," ) ); - WriteToLog( _L8( " already connected" ) ); - #endif - User::RequestComplete( iClientStatus, KErrNone ); - break; - case EMsgConnManWaitingForStartComplete: - case EMsgConnManWaitingForNotifications: - #ifdef _DEBUG - WriteToLog( _L8( " Already connecting, ignore" ) ); - #endif - User::RequestComplete( iClientStatus, KErrAlreadyExists ); - break; - default: - #ifdef _DEBUG - WriteToLog( _L8( " Unknown state, complete with KErrUnknown." ) ); - #endif - User::RequestComplete( iClientStatus, KErrUnknown ); - } - } - -// --------------------------------------------------------- -// CMsgConnManager::HandleTimerEventL -// -// --------------------------------------------------------- -// -void CMsgConnManager::HandleTimerEvent( TInt /*aStatus*/ ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::HandleTimerEventL()" ) ); - #endif - switch( iConnManStatus ) - { - case EMsgConnManWaitingForNotifications: - case EMsgConnManWaitingForStartComplete: - Cancel(); - #ifdef _DEBUG - WriteToLog( _L8( " Connection initiation timed out, complete with error KErrTimedOut" ) ); - #endif - User::RequestComplete( iClientStatus, KErrTimedOut ); - iConnection.Close(); - iConnectionClosed = ETrue; - iConnManStatus = EMsgConnManIdle; - break; - default: - #ifdef _DEBUG - WriteToLog( _L8( " Default case, problems..." ) ); - #endif - break; - } - } - -// --------------------------------------------------------- -// CMsgConnManager::AddEventSubscriberL -// -// --------------------------------------------------------- -// -void CMsgConnManager::AddEventSubscriberL( MMsgBearerObsCallback* aClient ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::AddEventSubscriberL()" ) ); - #endif - if( iEventSubscribers.Count() < KMaxNumberOfSubscribers ) - User::LeaveIfError( iEventSubscribers.Append( aClient ) ); - else - { - #ifdef _DEBUG - WriteToLog( _L8( " Not allowed to have more than %d clients" ), KMaxNumberOfSubscribers ); - #endif - User::Leave( KErrAlreadyExists ); - } - } - -// --------------------------------------------------------- -// CMsgConnManager::RemoveEventSubscriber -// -// --------------------------------------------------------- -// -void CMsgConnManager::RemoveEventSubscriber( MMsgBearerObsCallback* aClient ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::RemoveEventSubscriber()" ) ); - #endif - TInt index = iEventSubscribers.Find( aClient ); - if( index >= 0 ) - { - iEventSubscribers.Remove( index ); - } - } - -#ifdef _DEBUG -// ---------------------------------------------------- -// CMsgConnManager::WriteToLog -// -// ---------------------------------------------------- -// -void CMsgConnManager::WriteToLog( TRefByValue aFmt,... ) - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - RDebug::RawPrint( buf ); - RFileLogger::Write( KConnManLogDir, KConnManLogFile, EFileLoggingModeAppend, buf ); - } -#endif - -// ---------------------------------------------------- -// CMsgConnManager::SetAccessPointIDL -// -// ---------------------------------------------------- -// -void CMsgConnManager::SetAccessPointIDL( const TInt aAccessPointID ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::SetAccessPointIDL: %d" ), aAccessPointID ); - #endif - if( IsValidApL( aAccessPointID ) ) - { - iAccessPointID = aAccessPointID; - iAccessPointSettings.SetIapId( iAccessPointID ); - iAccessPointSettings.SetDialogPreference( ECommDbDialogPrefDoNotPrompt ); - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " The specified AP does not exist, leaves with KErrNotFound" ) ); - #endif - User::Leave( KErrNotFound ); - } - } - -// ---------------------------------------------------- -// CMsgConnManager::NumberOfActiveConns -// -// ---------------------------------------------------- -// -TInt CMsgConnManager::NumberOfActiveConns() - { - TUint count = 0; - TInt error = KErrNone; - if( !iConnectionClosed ) - { - error = iConnection.EnumerateConnections( count ); - } - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::NumberOfActiveConns() Conns: %d Error: %d" ), count, error ); - #endif - return KErrNone == error ? count : error; - } - -// --------------------------------------------------------- -// CMsgConnManager::ReadFromCommsDbLC -// -// --------------------------------------------------------- -// -HBufC* CMsgConnManager::ReadFromCommsDbLC( const TSupportedCommDbRecords aParameter ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::ReadFromCommsDbLC()" ) ); - #endif - TPtrC dbRecord; - HBufC* value = NULL; - CCommsDbTableView* view = NULL; - TInt error = InitCommDbViewLC( dbRecord, view, aParameter ); - if( error == KErrNone ) - { - TDbColType colType; - TUint32 attribute = 0; - view->ReadTypeAttribL( dbRecord, colType, attribute ); - switch( colType ) - { - case EDbColBit: - break; - case EDbColUint32: - { - TUint32 intValue = 0; - _LIT( KProxyPort,"%d" ); - view->ReadUintL( dbRecord, intValue ); - value = HBufC::NewLC( sizeof( KProxyPort ) ); - TPtr portPtr( value->Des() ); - portPtr.Format( KProxyPort, intValue ); - value->Des().Copy( portPtr ); - } - break; - case EDbColText8: - break; - case EDbColText16: - break; - case EDbColLongText16: - value = view->ReadLongTextLC( dbRecord ); - break; - default: - break; - } - if( value != NULL ) - { - #ifdef _DEBUG - HBufC8* temp = HBufC8::NewL( value->Des().Length() ); - TPtr8 ptr( temp->Des() ); - ptr.Copy( *value ); - WriteToLog( _L8( " Value was found: %S" ), &ptr ); - delete temp; - temp = NULL; - #endif - CleanupStack::Pop(); //value - CleanupStack::PopAndDestroy(); //view - CleanupStack::PushL( value ); //Put it back in - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " No proxy address defined in CommDb" ) ); - #endif - CleanupStack::PopAndDestroy(); //view - } - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " Error: %d" ), error ); - #endif - } - return value; - } - -// --------------------------------------------------------- -// CMsgConnManager::InitCommDbViewLC -// -// --------------------------------------------------------- -// -TInt CMsgConnManager::InitCommDbViewLC( TPtrC& aDbRecord, - CCommsDbTableView*& aView, - const TSupportedCommDbRecords aParameter ) - { - #ifdef _DEBUG - WriteToLog( _L8( " CMsgConnManager::InitCommDbViewLC" ) ); - #endif - aView = iCommsDatabase->OpenViewMatchingUintLC - ( TPtrC( IAP ), TPtrC( COMMDB_ID ), iAccessPointID ); - TInt error = aView->GotoFirstRecord(); - if( error == KErrNone ) - { - error = DetermineRecordTypeLC( aDbRecord, aView, aParameter ); - #ifdef _DEBUG - if( error != KErrNone ) - WriteToLog( _L8( " DetermineRecordType() failed - Error: %d" ), error ); - #endif - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " No matching view found - Error: %d" ), error ); - #endif - CleanupStack::PopAndDestroy(); //aView - aView = NULL; - } - return error; - } - -// --------------------------------------------------------- -// CMsgConnManager::DetermineRecordType -// -// --------------------------------------------------------- -// -TInt CMsgConnManager::DetermineRecordTypeLC( TPtrC& aDbColumn, - CCommsDbTableView*& aView, - const TSupportedCommDbRecords aParameter ) - { - #ifdef _DEBUG - WriteToLog( _L8( " CMsgConnManager::DetermineRecordType()" ) ); - #endif - TInt error = KErrNotFound; - switch( aParameter ) - { - case EMsgProxyAddress: - #ifdef _DEBUG - WriteToLog( _L8( " Type is EImpsProxyAddress" ) ); - #endif - if( CheckProxyUsageLC( aView ) ) - { - error = KErrNone; - aDbColumn.Set( TPtrC( PROXY_SERVER_NAME ) ); - } - break; - case EMsgProxyPort: - #ifdef _DEBUG - WriteToLog( _L8( " Type is EImpsProxyPort" ) ); - #endif - if( CheckProxyUsageLC( aView ) ) - { - error = KErrNone; - aDbColumn.Set( TPtrC( PROXY_PORT_NUMBER ) ); - } - break; - default: - #ifdef _DEBUG - WriteToLog( _L8( " Default case, problems..." ) ); - #endif - error = KErrNotSupported; - break; - } - return error; - } - -// --------------------------------------------------------- -// CMsgConnManager::CheckProxyUsageLC -// -// --------------------------------------------------------- -// -TBool CMsgConnManager::CheckProxyUsageLC( CCommsDbTableView*& aView ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::CheckProxyUsageL()" ) ); - #endif - TBool useProxy = EFalse; - TUint32 serviceIdNumber = 0; - TBuf serviceIdText; - aView->ReadTextL( TPtrC( IAP_SERVICE_TYPE ), serviceIdText ); - aView->ReadUintL( TPtrC( IAP_SERVICE ), serviceIdNumber ); - CleanupStack::PopAndDestroy(); //aView - aView = NULL; - aView = iCommsDatabase->OpenViewOnProxyRecordLC( serviceIdNumber, serviceIdText ); - TInt error = aView->GotoFirstRecord(); - if( error == KErrNone ) - { - aView->ReadBoolL( TPtrC( PROXY_USE_PROXY_SERVER ), useProxy ); - if( !useProxy ) - { - CleanupStack::PopAndDestroy(); //aView - aView = NULL; - } - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " The AP does not use a proxy server." ) ); - #endif - CleanupStack::PopAndDestroy(); //aView - aView = NULL; - } - return useProxy; - } - -// --------------------------------------------------------- -// CMsgConnManager::IsValidApL -// -// --------------------------------------------------------- -// -TBool CMsgConnManager::IsValidApL( TUint32 aUid ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::IsValidApL()" ) ); - #endif - CCommsDbTableView* table = iCommsDatabase->OpenViewMatchingUintLC( TPtrC( IAP ), - TPtrC( COMMDB_ID ), - aUid ); - TInt res = table->GotoFirstRecord(); - CleanupStack::PopAndDestroy(); // table - return res == KErrNone; - } - -// --------------------------------------------------------- -// CMsgConnManager::DoCancel -// -// --------------------------------------------------------- -// -void CMsgConnManager::DoCancel() - { - #ifdef _DEBUG - WriteToLog( _L8( "CMsgConnManager::DoCancel()" ) ); - #endif - switch( iConnManStatus ) - { - case EMsgConnManWaitingForStartComplete: - #ifdef _DEBUG - WriteToLog( _L8( " Status is EMsgConnManWaitingForStartComplete" ) ); - #endif - iConnection.Close(); - iConnectionTimer->Cancel(); - break; - case EMsgConnManWaitingForNotifications: - #ifdef _DEBUG - WriteToLog( _L8( " Status is EMsgConnManWaitingForNotifications" ) ); - #endif - iConnection.CancelProgressNotification(); - iConnectionTimer->Cancel(); - iConnection.Close(); - break; - case EMsgConnManDisconnectingPrevious: - #ifdef _DEBUG - WriteToLog( _L8( " Status is EMsgConnManDisconnectingPrevious" ) ); - #endif - iConnectionTimer->Cancel(); - User::RequestComplete( iClientStatus, KErrCancel ); - #ifdef _DEBUG - WriteToLog( _L8( " StopConnection() terminated, client's request completed." ) ); - #endif - break; - case EMsgConnManObservingAccessPoint: - case EMsgConnManBearerSuspended: - { - #ifdef _DEBUG - WriteToLog( _L8( " Status is %d" ), iConnManStatus ); - #endif - iConnection.CancelProgressNotification(); - #ifdef __WINS__ - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrCancel ); - #endif - } - break; - case EMsgConnManIdle: - #ifdef _DEBUG - WriteToLog( _L8( " Status is EMsgConnManIdle" ) ); - #endif - break; - default: - #ifdef _DEBUG - WriteToLog( _L8( " Default case" ) ); - #endif - break; - } - } - -// ---------------------------------------------------- -// NewImpsConnManL -// Returns a ConnManager instance -// ---------------------------------------------------- -// -EXPORT_C MMsgConnManager* NewMsgConnManagerL( const TInt aDefaultAccessPoint ) - { - return CMsgConnManager::NewL( aDefaultAccessPoint ); - } - - diff -r 2580314736af -r 2669f8761a99 msgconnmanager/src/msgconntimer.cpp --- a/msgconnmanager/src/msgconntimer.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,193 +0,0 @@ -/* -* Copyright (c) 2005 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: Connection manager timer -* -*/ - - - - -// INCLUDES -#include "msgconntimer.h" -#include "msgconnmanager.h" - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CMsgConnTimer::CMsgConnTimer() : CActive( EPriorityStandard ), - iCompleteIfCancel( EFalse ) - - { - } - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CMsgConnTimer::CMsgConnTimer( MMsgConnTimerCallback* aClient ) : - CActive( EPriorityStandard ), - iClient( aClient ) - - - { - } - -// --------------------------------------------------------- -// Symbian OS default constructor may leave. -// -// --------------------------------------------------------- -// -void CMsgConnTimer::ConstructL() - { - User::LeaveIfError( iTimer.CreateLocal() ); - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------- -// Two-phased constructor. -// -// --------------------------------------------------------- -// -CMsgConnTimer* CMsgConnTimer::NewL() - { - CMsgConnTimer* self = new ( ELeave ) CMsgConnTimer(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// Two-phased constructor. -// -// --------------------------------------------------------- -// -CMsgConnTimer* CMsgConnTimer::NewL( MMsgConnTimerCallback* aClient ) - { - CMsgConnTimer* self = new ( ELeave ) CMsgConnTimer( aClient ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CMsgConnTimer::~CMsgConnTimer() - { - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( "CMsgConnTimer::~CMsgConnTimer(), destructor called." ) ); - #endif - Cancel(); - iTimer.Close(); - } - -// --------------------------------------------------------- -// CMsgConnTimer::ActivateTimer -// -// --------------------------------------------------------- -// -void CMsgConnTimer::ActivateTimer( TRequestStatus& aStatus, - TTimeIntervalMicroSeconds32 aDelay ) - { - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( "CMsgConnTimer::ActivateTimer()." ) ); - #endif - __ASSERT_ALWAYS( !IsActive(), User::Panic( _L("ConnectionTimer"), 1 ) ); - iClient = NULL; - aStatus = KRequestPending; - iClientStatus = &aStatus; - iTimer.After( iStatus, aDelay ); - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( " Timer activated." ) ); - #endif - SetActive(); - } - -// --------------------------------------------------------- -// CMsgConnTimer::ActivateTimer -// -// --------------------------------------------------------- -// -void CMsgConnTimer::ActivateTimer( MMsgConnTimerCallback* aClient, - TTimeIntervalMicroSeconds32 aDelay ) - { - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( "CMsgConnTimer::ActivateTimer()" ) ); - #endif - __ASSERT_ALWAYS( !IsActive(), User::Panic( _L("ConnectionTimer"), 1 ) ); - iClient = aClient; - iClientStatus = NULL; - iTimer.After( iStatus, aDelay ); - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( " Timer activated (with client)" ) ); - #endif - SetActive(); - } - -// --------------------------------------------------------- -// CMsgConnTimer::RunL -// -// --------------------------------------------------------- -// -void CMsgConnTimer::RunL() - { - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( "CMsgConnTimer::RunL()." ) ); - #endif - if( iClient != NULL ) - { - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( " iClient != NULL, Callback interface in use." ) ); - #endif - iClient->HandleTimerEvent( iStatus.Int() ); - iClient = NULL; - } - else - { - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( " iClient == NULL, completing request." ) ); - #endif - User::RequestComplete( iClientStatus, iStatus.Int() ); - } - } - -// --------------------------------------------------------- -// CMsgConnTimer::DoCancel -// -// --------------------------------------------------------- -// -void CMsgConnTimer::DoCancel() - { - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( "CMsgConnTimer::DoCancel()" ) ); - #endif - iTimer.Cancel(); - if( iClientStatus != NULL ) - User::RequestComplete( iClientStatus, KErrCancel ); - #ifdef _DEBUG - CMsgConnManager::WriteToLog( _L8( " DoCancel() ends" ) ); - #endif - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 package_definition.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/package_definition.xml Tue Aug 31 15:35:50 2010 +0300 @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 2580314736af -r 2669f8761a99 package_map.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/package_map.xml Tue Aug 31 15:35:50 2010 +0300 @@ -0,0 +1,1 @@ + diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/Conf/presencefwsimpleadpt.confml Binary file presencefwsimpleadpt/Conf/presencefwsimpleadpt.confml has changed diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/Conf/presencefwsimpleadpt_10282C84.crml Binary file presencefwsimpleadpt/Conf/presencefwsimpleadpt_10282C84.crml has changed diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/cenrep/backup_registration.xml --- a/presencefwsimpleadpt/cenrep/backup_registration.xml Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ - - - - - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/cenrep/keys_presencefwsimpleadpt.xls Binary file presencefwsimpleadpt/cenrep/keys_presencefwsimpleadpt.xls has changed diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/group/bld.inf --- a/presencefwsimpleadpt/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2007-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: Build information file for SIP/Simple Protocol Plugin -* -*/ - - - - -#include - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS - -// CenRep config files -../Conf/presencefwsimpleadpt.confml MW_LAYER_CONFML(presencefwsimpleadpt.confml) -../Conf/presencefwsimpleadpt_10282C84.crml MW_LAYER_CRML(presencefwsimpleadpt_10282c84.crml) - - -// backup registry file -../cenrep/backup_registration.xml z:/private/10282c84/backup_registration.xml - -//ROM SIS stub -presencefwsimpleadptstub.SIS /epoc32/data/z/system/install/presencefwsimpleadptstub.sis - -// IBYs -../rom/presencefwsimpleadpt.iby CORE_MW_LAYER_IBY_EXPORT_PATH(presencefwsimpleadpt.iby) - -PRJ_MMPFILES -simpleplugin.mmp - -PRJ_TESTMMPFILES - -PRJ_TESTEXPORTS diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/group/make_StubSis.bat --- a/presencefwsimpleadpt/group/make_StubSis.bat Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -rem -rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: SIMPLE Protocol implementation for Presence Framework -rem - -if exist presencefwsimpleadptstub.sis (del presencefwsimpleadptstub.sis) -makesis -s presencefwsimpleadptstub.pkg presencefwsimpleadptstub.sis diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/group/presencefwsimpleadptstub.SIS Binary file presencefwsimpleadpt/group/presencefwsimpleadptstub.SIS has changed diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/group/presencefwsimpleadptstub.pkg --- a/presencefwsimpleadpt/group/presencefwsimpleadptstub.pkg Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -; -; Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -; -&EN - -;Header -#{"PresenceFwSimpleAdpt"}, (0x10282C84), 1, 0, 0, TYPE=SA - -;Localised VendorID -%{"Nokia"} - -;VendorID -:"Nokia" - -;Supports Series 60 v 3.0 -;This line indicates that this installation is for the Series 60 platform v3.0 -;This line must appear _exactly_ as shown below in the sis file -;If this line is missing or incorrect, the sis file will not be able -;to be installed on Series 60 v3.0 platforms -[0x101F7961], 0, 0, 0, {"Series60ProductID"} - -;Files -""-"z:\sys\bin\simpleplugin.dll" - -;resources -""-"z:\resource\plugins\simpleplugin.rsc" diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/group/prfwsimpleplugin.hrh --- a/presencefwsimpleadpt/group/prfwsimpleplugin.hrh Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2007 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: resource definitions -* -*/ - - - -#ifndef SIMPLEPLUGIN_RESOURCE_HRH -#define SIMPLEPLUGIN_RESOURCE_HRH - -/** - * System wide UID 2:s for ECom plugin dlls. - */ -#define SIMPLEPLUGIN_DLL_UID_ECOM_PLUGIN 0x10009D8D - -/** - * SIMPLE protocol dll. - */ -#define SIMPLEPLUGIN_DLL_UID_SIMPLE_PROTOCOL 0x10282C84 - -/** - * Resource file compatible defintions for PrFw test protocols. - */ -#define SIMPLEPLUGIN_1_IMPLEMENTATION_UID 0x10282C86 - -#endif // SIMPLEPLUGIN_RESOURCE_HRH - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/group/simpleplugin.mmp --- a/presencefwsimpleadpt/group/simpleplugin.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -/* -* Copyright (c) 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: Project definition file for SIP/Simple Protocol Plugin -* -*/ - - - -// To get the MW_LAYER_SYSTEMINCLUDE-definition -#include - -#include "prfwsimpleplugin.hrh" - -TARGET simpleplugin.dll -TARGETTYPE plugin -UID SIMPLEPLUGIN_DLL_UID_ECOM_PLUGIN SIMPLEPLUGIN_DLL_UID_SIMPLE_PROTOCOL -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -// ECOM RESOURCE -START RESOURCE simpleplugin.rss -TARGET simpleplugin.rsc -END - - -SOURCEPATH ../src -SOURCE simpleplugin.cpp -SOURCE simplepluginauthorization.cpp -SOURCE simplepluginconnection.cpp -SOURCE simpleplugindata.cpp -SOURCE simplepluginentitywatcher.cpp -SOURCE simpleplugingroups.cpp -SOURCE simplepluginpublisher.cpp -SOURCE simplepluginsession.cpp -SOURCE simplepluginvariation.cpp -SOURCE simplepluginwatcher.cpp -SOURCE simplepluginwinfo.cpp -SOURCE simplepluginxdmutils.cpp -SOURCE simpleplugindebugutils.cpp - -USERINCLUDE . -USERINCLUDE ../inc - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom - -LIBRARY euser.lib // Base -LIBRARY ecom.lib -LIBRARY bafl.lib -LIBRARY xmlparser.lib -LIBRARY xmldom.lib -LIBRARY charconv.lib - -LIBRARY simpleengine.lib -LIBRARY rlspresxdm.lib -LIBRARY xdmengine.lib -LIBRARY xdmsettingsapi.lib -LIBRARY presencesettingsapi.lib -LIBRARY centralrepository.lib - -DEBUGLIBRARY flogger.lib // Sending trace data to log file -DEBUGLIBRARY efsrv.lib // file server -DEBUGLIBRARY apparc.lib - -// End of file diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/group/simpleplugin.rss --- a/presencefwsimpleadpt/group/simpleplugin.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* -* Copyright (c) 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: ECOM registery info for SIP/Simple Protocol Plugin -* -*/ - - - - -#include -#include -#include "prfwsimpleplugin.hrh" - -// --------------------------------------------------------------------------- -// ECOM registery info for Presence Framework ECOM hook -// --------------------------------------------------------------------------- -// -RESOURCE REGISTRY_INFO theInfo - { - resource_format_version = RESOURCE_FORMAT_VERSION_2; - dll_uid = SIMPLEPLUGIN_DLL_UID_SIMPLE_PROTOCOL; - - interfaces = - { - INTERFACE_INFO - { - // implemented interface - interface_uid = XIMP_ECOM_IF_UID_PROTOCOL_PLUGIN_BASE_INTERFACE; - - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = SIMPLEPLUGIN_1_IMPLEMENTATION_UID; - version_no = 1; - display_name = "SIMPLE Protocol"; - default_data = "SIMPLE"; - - // Protocol capabilities: "valuevalue..." - // - //

Provider - // Feature id - // Supported schema - // - // Example: - // "

Nokiafeat/pres/foofeat/pres/barsip" - // - opaque_data = "

Nokiafeat/pres/pubfeat/pres/fetchfeat/pres/subssip"; - } - }; - } - }; - } - - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/msimplepluginconnectionobs.h --- a/presencefwsimpleadpt/inc/msimplepluginconnectionobs.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -/* -* Copyright (c) 2007 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: Presence FW SIMPLE plugin engine connection observer -* -*/ - - - - -#ifndef MSIMPLEPLUGINCONNECTIONOBSERVER_H -#define MSIMPLEPLUGINCONNECTIONOBSERVER_H - -#include - -class TXIMPRequestId; -class MXIMPObjectFactory; -class MPresenceObjectFactory; -class MXIMPProtocolConnectionHost; - -class CSimplePluginWinfo; -class MSimpleWinfo; -class CSimplePluginXdmUtils; - - -/** - * MSimplePluginConnectionObs - * - * SIMPLE engine connection - * - * @lib simpleengine - * @since s60 v5.0 - */ - -class MSimplePluginConnectionObs - { - -public: - -enum TReqType - { - /** undefined */ - ENoReq = 0, - /** Connection initializing */ - EOpenSess - }; - - /** - * Coplete the request - * - * @since S60 3.2 - * @param aType request type - * @param aStatus status - */ - virtual void CompleteReq( TReqType aType, TInt aStatus ) = 0; - - /** - * Coplete the request - * - * @since S60 3.2 - * @param aReqId PrFw request id - * @param aStatus status - */ - virtual void CompleteReq( TXIMPRequestId aReqId, TInt aStatus ) = 0; - - /** - * Coplete the SIP watcher info request - * - * @since S60 3.2 - * @param aReqId PrFw request id - * @param aStatus status - */ - virtual void CompleteWinfoReq( TXIMPRequestId aReqId, TInt aStatus ) = 0; - - /** - * PrFw Object Factory accessor - * @since S60 3.2 - * @return PrFw Object Factory - */ - virtual MXIMPObjectFactory& ObjectFactory()=0; - - /** - * PrFw Object Factory accessor - * @since S60 3.2 - * @return PrFw Object Factory - */ - virtual MPresenceObjectFactory& PresenceObjectFactory()=0; - - /** - * CSimplePluginWinfo accessor - * @since S60 3.2 - * @return CSimplePluginWinfo, ownership is not transferred. - */ - virtual CSimplePluginWinfo* WinfoHandlerL()=0; - - /** - * CSimplePluginWinfoObserver is terminated - * @since S60 3.2 - * @param aReason reason code - */ - virtual void WinfoTerminatedL( TInt aReason )=0; - - /** - * Watcher info subscription notification is received - * @aWinfo notification content - */ - virtual void WinfoNotification( MSimpleWinfo& aWinfo ) = 0; - - /** - * Access CSimplePluginXdmUtils - * @return CSimplePluginXdmUtils entity - */ - virtual CSimplePluginXdmUtils* XdmUtilsL() = 0; - - /** - * Access connection host - * @return MXIMPProtocolConnectionHost - */ - virtual MXIMPProtocolConnectionHost* Host() = 0; - - }; - -#endif - -// End of File \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/msimplepluginsettings.h --- a/presencefwsimpleadpt/inc/msimplepluginsettings.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* -* Copyright (c) 2007 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: Presence FW SIMPLE plugin engine settings -* -*/ - - - - -#ifndef MSIMPLEPLUGINCONNECTIONSETTINGS_H -#define MSIMPLEPLUGINCONNECTIONSETTINGS_H - -#include - -class CSimplePluginVariation; - -/** - * MSimplePluginConnectionObs - * - * SIMPLE engine connection - * - * @lib simpleengine - * @since s60 v5.0 - */ - -class MSimplePluginSettings - { - -public: - - /** - * Current registered SIP entity - */ - virtual TPtrC16 CurrentSipPresentity() = 0; - - /** - * Current registered SIP entity - */ - virtual TPtrC8 CurrentSipPresentity8() = 0; - - /** - * Current domain syntax accessor - */ - virtual TPtrC16 CurrentDomain() = 0; - - /** - * Variation - */ - virtual CSimplePluginVariation& Variation() = 0; - - }; - -#endif - -// End of File \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/msimpleplugintestobs.h --- a/presencefwsimpleadpt/inc/msimpleplugintestobs.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* -* Copyright (c) 2007 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: Presence FW SIMPLE plugin test suite -* -*/ - - - - -#ifndef MSIMPLEPLUGINTESTOBS_H -#define MSIMPLEPLUGINTESTOBS_H - -#include - - -/** - * MSimplePluginTestObs - * - * SIMPLE plugin tester observer for active object testing - * - * @lib simpleplugin - * @since s60 v5.0 - */ - -class MSimplePluginTestObs - { - -public: - - /** - * Test callback in the begin of RunL or callback - */ - virtual void TestCallbackInRunL( - TInt aStatus, TInt aState, TInt aAuxInt, const TDesC& aAuxStr) = 0; - - /** - * Test callback before new asynch request - */ - virtual void TestCallbackAsynchL( - TInt aStatus, TInt aState, TInt aAuxInt, const TDesC& aAuxStr) = 0; - - - }; - -#endif - -// End of File \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/msimpleplugtestobs.h --- a/presencefwsimpleadpt/inc/msimpleplugtestobs.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2007 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: Presence FW SIMPLE plugin test suite -* -*/ - - - - -#ifndef MSIMPLEPLUGINTESTOBS_H -#define MSIMPLEPLUGINTESTOBS_H - -#include - - -/** - * MSimplePluginTestObs - * - * SIMPLE plugin tester observer for active object testing - * - * @lib simpleplugin - * @since S60 v3.2 - */ - -class MSimplePluginTestObs - { - -public: - - /** - * Current registered SIP entity - */ - virtual void TestCallback( - TInt aStatus, TInt aState, TInt aAuxInt, const TDesC& aAuxStr) = 0; - - }; - -#endif - -// End of File \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/presencefwsimpleadptprivatecrkeys.h --- a/presencefwsimpleadpt/inc/presencefwsimpleadptprivatecrkeys.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - -#ifndef PRESENCEFWSIMPLEADPTPRIVATECRKEYS_H -#define PRESENCEFWSIMPLEADPTPRIVATECRKEYS_H - -#include - -const TUid KCRUIDPresencefwSimpleadptVariation = {0x10282C84}; - -// Id for rule to grant all elements -const TUint32 KPrFwSimpleGrantAllRuleName = 0x00000001; -// Id for rule to grant own data -const TUint32 KPrFwSimpleGrantOwnRuleName = 0x00000002; -// Id for default rule -const TUint32 KPrFwSimpleDefaultRuleName = 0x00000003; -// Id for block rule -const TUint32 KPrFwSimpleBlockRuleName = 0x00000004; -// Default rule action, allow/confirm/block -const TUint32 KPrFwSimpleDefaultRuleAction = 0x00000005; -// Block rule action, block/polit -const TUint32 KPrFwSimpleBlockRuleAction = 0x00000006; -// Template for RLS service URI for a user group -const TUint32 KPrFwSimpleRlsGroupUriTemplate = 0x00000007; -// Top level for lists in shared XDM index document -const TUint32 KPrFwSimpleSharedXdmTop = 0x00000008; -// Name of the Shared XDM list for granted users -const TUint32 KPrFwSimpleGrantListName = 0x00000009; - -#endif // PRESENCEFWSIMPLEADPTPRIVATECRKEYS_H - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simpleplugin.h --- a/presencefwsimpleadpt/inc/simpleplugin.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -/* -* Copyright (c) 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: Simple Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef CSIMPLEPLUGIN_H -#define CSIMPLEPLUGIN_H - -#include - -#include -#include - -class MXIMPProtocolConnection; -class MXIMPServiceInfo; -class MXIMPClientContextInfo; -class CSimplePluginConnection; - - -/** - * CSimplePlugin - * - * Implementation of CPrFwProtocolPluginBase - * - * @lib ?library - * @since s60 v5.0 - */ -class CSimplePlugin: public CXIMPProtocolPluginBase - { -public: - - static CSimplePlugin* NewL(); - static CSimplePlugin* NewLC(); - - virtual ~CSimplePlugin(); - -private: - - CSimplePlugin(); - void ConstructL(); - - -public: - -// from base class MXIMPProtocolPlugin - - /** - * Defined in a base class - */ - void PrimeHost( MXIMPProtocolPluginHost& aHost ); - - /** - * Defined in a base class - */ - MXIMPProtocolConnection& AcquireConnectionL( - const MXIMPServiceInfo& aService, - const MXIMPContextClientInfo& aContextClient ); - - /** - * Defined in a base class - */ - void ReleaseConnection( - MXIMPProtocolConnection& aConnection ); - -// from base class MXIMPBase - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - -private: // Data - - /* - * Prime host - * Not own. - */ - MXIMPProtocolPluginHost* iHost; - - /** - * Simple plugin connections - */ - RPointerArray< CSimplePluginConnection > iConnections; - - }; - -#endif // CSIMPLEPLUGIN_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simplepluginauthorization.h --- a/presencefwsimpleadpt/inc/simplepluginauthorization.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,450 +0,0 @@ -/* -* Copyright (c) 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: Simple Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef CSIMPLEPLUGINAUTHORIZATION_H -#define CSIMPLEPLUGINAUTHORIZATION_H - -#include - -#include -#include - -#include "simpleplugincommon.h" -#include "msimplepluginconnectionobs.h" - -class TXIMPRequestId; -class MXIMPIdentity; -class MPresenceInfoFilter; -class MProtocolPresenceAuthorizationDataHost; - -class MSimpleWinfo; -class CPresenceXDM; -class CRLSXDM; -class CXdmEngine; -class CXdmDocument; - - -/** - * CSimplePluginAuthorization - * - * Simple Engine Connection - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS( CSimplePluginAuthorization ) : public CActive, - public MProtocolPresenceAuthorization - { -public: - - - /** - * Current operation - */ - enum TPluginAuthOperation - { - ENoOperation, - // XDM operations - EGrantPresenceForPresentity, - EGrantPresenceForPresentityGroupMembers, - EWithdrawFromPresentity, - EWithdrawFromGroupMembers, - EGrantForEveryone, - EWithdrawFromEveryone, - ESubscribeBlockList, - EUnsubscribeBlockList, - EBlockPresentity, - EUnblockPresentity, - // SIP and XDM operations - ESubscribePresenceGrantRequestList, - EUnsubscribePresenceGrantRequestList - }; - - /** - * Current default rule - */ - enum TPluginAuthDefRule - { - ERuleDef, - ERuleConfirm, - ERuleAllow - }; - - /** - * Constructor. - * @param aObs callback for complete requests - */ - static CSimplePluginAuthorization* NewL( - MSimplePluginConnectionObs& aObs ); - - virtual ~CSimplePluginAuthorization(); - - /** - * SetDataHost - * - * Set Data Host - * - * @lib ?library - * @since s60 v5.0 - */ - void SetDataHost( MProtocolPresenceAuthorizationDataHost& aDataHost ); - - /** - * WinfoTerminatedL - * - * SIMPLE Winfo watcher subscription is terminated - * @param aReason reason code - */ - void WinfoTerminatedL( TInt aReason ); - - /** - * WINFO received from SIMPLE - * @param aWinfo WINFO - */ - void WinfoNotificationL( MSimpleWinfo& aWinfo ); - - /** - * This is to ensure that WINFO watchers responses are detected. - * @param aPrFwId framework request id to be completed - * @param sStatus error code - */ - TBool HandleIfMine( TXIMPRequestId aPrFwId, TInt aStatus ); - - -private: - - CSimplePluginAuthorization( - MSimplePluginConnectionObs& aObs ); - - void ConstructL( ); - - -// from base class MXIMPBase -public: - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - -// from base class MProtocolPresenceAuthorization - - /** - * Defined in a base class - */ - void DoSubscribePresenceGrantRequestListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresenceGrantRequestListL( - TXIMPRequestId aReqId ); - -// Granting presence information access to single presentities - - /** - * Defined in a base class - */ - void DoGrantPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresenceGrantPifForPresentityL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoWithdrawPresenceGrantFromPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - -// Granting presence information access to presentity group members - - /** - * Defined in a base class - */ - void DoGrantPresenceForPresentityGroupMembersL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresenceGrantPifForPresentityGroupMembersL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoWithdrawPresenceGrantFromPresentityGroupMembersL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - -// Granting presence information access to everyone - - /** - * Defined in a base class - */ - void DoGrantPresenceForEveryoneL( - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresenceGrantPifForEveryoneL( - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoWithdrawPresenceGrantFromEveryoneL( - TXIMPRequestId aReqId ); - -// Subscribe presence block list - - /** - * Defined in a base class - */ - void DoSubscribePresenceBlockListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresenceBlockListL( - TXIMPRequestId aReqId ); - -// Blocking presence information access from single presentities - - /** - * Defined in a base class - */ - void DoBlockPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoCancelPresenceBlockFromPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - - - -protected: - -// from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - -private: - - /** - * Save presentity id - * @param aPresentityId presentity id - */ - void SetPresIdentityL( - const MXIMPIdentity& aPresentityId ); - - /** - * Calls MXIMPProtocolConnectionHost callback - * @param aStatus error status - */ - void CompletePrFwReq( TInt aStatus ); - - - /** - * Start XDM operation - */ - void StartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginAuthOperation aOperation ); - - /** - * Start XDM operation. StartXdmOperationL calls this. - */ - void DoStartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginAuthOperation aOperation ); - - /** - * Start XDM operation. HandleIfMine calls this. - */ - void DoStartXdmOperationL( - TXIMPRequestId aReqId, - TPluginAuthOperation aOperation ); - - /** - * Call CSimpleXdmUtils operation - */ - void CallActualXdmOperationL(); - - /** - * Copy data from aBlockers to aBlockedSouls - * @param aBlockers user ids - * @param aBlockedSouls user PrFwIdentities - * - */ - void CopyBlockersToArrayL( - CPtrCArray& aBlockers, RPointerArray& aBlockedSouls ); - - /** - * Handle full Winfo notification - * @param aWinfo WINFO - */ - void HandleFullWinfoNotificationL( MSimpleWinfo& aWinfo ); - - /** - * Handle partial Winfo notification - * @param aWinfo WINFO - */ - void HandlePartialWinfoNotificationL( MSimpleWinfo& aWinfo ); - - /** - * Call HandlePresenceGrantRequestReceivedL - * @param aUserId user id - */ - void CallHandlePresenceGrantRequestReceivedL( const TDesC& aUserId ); - - /** - * Call HandlePresenceGrantRequestObsoletedL( - * @param aUserId user id - */ - void CallHandlePresenceGrantRequestObsoletedL( const TDesC& aUserId ); - - /** - * Handle block list subscription routines - */ - void HandleSubscribeBlockListL(); - - -private: // Data - - /** - * PrFw Plugin connection observer - */ - MSimplePluginConnectionObs& iConnObs; - - /** - * PrFw Plugin Authorization Data Host - * Not own. - */ - MProtocolPresenceAuthorizationDataHost* iDataHost; - - /** - * XDM Settings id - */ - TInt iSettingsId; - - /** - * PrFW request id - */ - TXIMPRequestId iPrFwId; - - /** - * PrFW request id for own requests - */ - TXIMPRequestId iPrFwIdOwn; - - /** - * Simple Engine request id - */ - TInt iSimpleId; - - /** - * Current operation - */ - TPluginAuthOperation iOperation; - - /** - * Current presentity in progress - * Own. - */ - HBufC16* iPresIdentity; - - /** - * Whether XDM utility is initialized - */ - TBool iXdmOk; - - /** - * XDM Utils - * Not own. - */ - CSimplePluginXdmUtils* iXdmUtils; - - /** - * Current default rule - */ - TPluginAuthDefRule iDefRule; - - /** - * Active WINFO subscription - */ - TBool iWinfoSubs; - - - }; - -#endif // CSimplePluginAuthorization_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simpleplugincommon.h --- a/presencefwsimpleadpt/inc/simpleplugincommon.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,168 +0,0 @@ -/* -* Copyright (c) 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: C++ compatible definitions for PrFw SIMPLE protocol -* -*/ - - - -#ifndef SIMPLEPLUGINCOMMON_H -#define SIMPLEPLUGINCOMMON_H - -#include -#include - - -/** - * common definitions for SIMPLE Plugin - */ - -// Simple Plugin specifications - -/** Nothing subscribed */ -const TUint KSimplePluginSubsNone = 0x00000000; -/** Grant list subscribed */ -const TUint KSimplePluginSubsGrant = 0x00000001; - -/** max length of auth rule id in auth rules document */ -const TUint KSimplePluginMaxRuleLength = 100; - -/** the last general error code in e32err.h */ -const TInt KSimplePluginGeneralErrorLow = KErrCommsBreak; - -// OMA specifications - -/** OMA buddy list id */ -_LIT( KSimpleOMABuddyList, "oma_buddylist"); -/** OMA blocked list id */ -_LIT( KSimpleOMABlockedList, "oma_blockedcontacts"); - - -namespace NSimplePlugin - { - namespace NSimpleRls - { - _LIT( KOne, "http://"); // 7 - _LIT( KThree, "/resource-lists/users/"); // 22 - _LIT( KFive, "/index/~~/resource-lists/list%5b@name=%22"); // 41 - _LIT( KSeven, "%22%5d"); // 6 - const TInt totalSize = 76; - } - namespace NSimpleRlsBuddy - { - _LIT( KOne, "http://"); // 7 - _LIT( KThree, "/resource-lists/users/"); // 22 - _LIT( KFive, "/index/~~/resource-lists/list%5b@name=%22oma_buddylist%22%5d/list%5b@name=%22"); // 77 - _LIT( KSeven, "%22%5d"); // 6 - const TInt totalSize = 112; - } - namespace NSimpleOma - { - _LIT( KSimpleIndex, "index"); - _LIT( KSimpleResourceLists, "resource-lists"); - _LIT( KSimpleList, "list"); - _LIT( KSimpleName, "name"); - _LIT( KSimpleDisplayName, "display-name"); - _LIT( KSimpleEntry, "entry"); - _LIT( KSimpleExternal, "external"); - _LIT( KSimpleAnchor, "anchor"); - _LIT( KSimplePerson, "person"); - _LIT( KSimpleBlock, "block"); - _LIT( KSimplePoliteBlock, "polite-block"); - _LIT( KSimpleConfirm, "confirm"); - _LIT( KSimpleAllow, "allow"); - _LIT( KSimpleOpen, "open"); - _LIT( KSimpleClosed, "closed"); - _LIT( KSimpleUri, "uri"); - _LIT8( KSimplePerson8, "person"); - _LIT8( KSimpleWatcher8, "watcher"); - _LIT8( KSimpleWatherInfo8, "watcherinfo"); - _LIT8( KSimpleWatcherList8, "watcher-list"); - _LIT8( KSimpleStatus8, "status"); - _LIT8( KSimpleActive8, "active"); - _LIT8( KSimpleEvent8, "event"); - _LIT8( KSimplePending8, "pending"); - _LIT8( KSimpleOverridingwillingness8, "overriding-willingness"); - _LIT8( KSimpleBasic8, "basic"); - _LIT8( KSimpleStatusicon8, "status-icon"); - _LIT8( KSimpleNote8, "note"); - _LIT8( KSimpleSubscribe8, "subscribe"); - _LIT8( KSimpleList8, "list"); - _LIT8( KSimpleResource8, "resource"); - _LIT8( KSimpleInstance8, "instance"); - _LIT8( KSimpleState8, "state"); - _LIT8( KSimpleTerminated8, "terminated"); - _LIT8( KSimpleUri8, "uri"); - _LIT8( KSimpleFull8, "full"); - _LIT8( KSimpleFullState8, "fullState"); - _LIT8( KSimpleTrue8, "true"); - _LIT8( KSimpleId8, "id"); - _LIT8( KSimpleTimestamp8, "timestamp"); - } - } - - -// S60 specifications - -/** Presence XDM block rule id */ -_LIT( KSimpleXdmBlockRule, "blockall"); -/** Presence XDM grant rule id */ -_LIT( KSimpleXdmGrantRule, "allowall"); -/** Presence XDM grant rule id for own sbscribe*/ -_LIT( KSimpleXdmOwnGrantRule, "grantown"); -/** Presence XDM default rule id */ -_LIT( KSimpleXdmDefaultRule, "default"); - -/** S60 Shared XDM list for granted entities */ -_LIT( KSimpleS60GrantedList, "oma_grantlist"); - -/** S60 default RLS URI template */ -_LIT( KSimpleRlsGroupUriTemplate, "_@"); -_LIT16( KSimpleGroupTag, ""); -_LIT16( KSimpleUserTag, ""); -_LIT16( KSimpleDomainTag, ""); - -/** - example: - - - http://EXAMPLE.COM/resource-lists/users/ - sip:USER@EXAMPLE.COM/index/~~/resource-lists/list%5b@name=%22oma_buddylist%22%5d/list%5b@name=%22my_friends%22%5d - - - presence - - - - http://EXAMPLE.COM/resource-lists/users/ - sip:USER@EXAMPLE.COM/index/~~/resource-lists/list%5b@name=%22oma_buddylist%22%5d/list%5b@name=%22my_colleques%22%5d - - - presence - - - -#include -#include "msimplepluginconnectionobs.h" -#include "msimplepluginsettings.h" - -class MXIMPObjectFactory; -class MXIMPServiceInfo; -class CSimplePluginAuthorization; -class CSimplePluginSession; -class CSimplePluginPublisher; -class CSimplePluginWatcher; -class CSimplePluginGroups; -class CSimplePluginVariation; - -/** - * CSimplePluginConnection - * - * Implementation of MXIMPProtocolConnection - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS(CSimplePluginConnection) : public CBase, - public MXIMPProtocolConnection, - public MProtocolPresenceFeatures, - public MSimplePluginConnectionObs, - public MSimplePluginSettings - { - -public: - - static CSimplePluginConnection* NewL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aClientCtxInfo ); - - ~CSimplePluginConnection(); - -private: - - CSimplePluginConnection(); - - - void ConstructL( const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aClientCtxInfo ); - -public: - - /** - * Convert error code into PrFW errors - * @param aStatus error code [IN] - * @return harmonized error code - */ - static TInt HarmonizeErrorCode( TInt aStatus ); - -// from base class MXIMPBase -public: - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - -// from base class MXIMPProtocolConnection -public: - - /** - * Defined in a base class - */ - void PrimeHost( MXIMPProtocolConnectionHost& aHost ); - - /** - * Defined in a base class - */ - void OpenSessionL( - const MXIMPContextClientInfo& aContextClient, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void OpenSessionL( - const TInt& aSettingsId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void CloseSession( - const MXIMPContextClientInfo& aContextClient, - TXIMPRequestId aOpId ); - - /** - * Defined in a base class - */ - void GetSupportedFeaturesL( CDesC8Array& aFeatures ) const; - - /** - * Defined in a base class - */ - MProtocolPresenceFeatures& ProtocolPresenceFeatures(); - -/* - -*/ -// BRANCH 08-06-06 : gronoff - TAny* GetProtocolInterface( TInt aInterfaceId ); -// BRANCH_END 08-06-06 : gronoff - - -// from base class MProtocolPresenceFeatures - - MProtocolPresenceWatching& PresenceWatching(); - - - MProtocolPresencePublishing& PresencePublishing(); - - - MProtocolPresentityGroups& PresentityGroups(); - - - MProtocolPresenceAuthorization& PresenceAuthorization(); - - - -// from base class MSimplePluginConnectionObs - - /** - * Defined in a base class - */ - void CompleteReq( TReqType aType, TInt aStatus ); - - /** - * Defined in a base class - */ - void CompleteReq( TXIMPRequestId aReqId, TInt aStatus ); - - /** - * Defined in a base class - */ - void CompleteWinfoReq( TXIMPRequestId aReqId, TInt aStatus ); - - /** - * Defined in a base class - */ - MXIMPObjectFactory& ObjectFactory(); - - /** - * Defined in a base class - */ - MPresenceObjectFactory& PresenceObjectFactory(); - - /** - * Defined in a base class - */ - CSimplePluginWinfo* WinfoHandlerL(); - - /** - * Defined in a base class - */ - void WinfoTerminatedL( TInt aReason ); - - /** - * Defined in a base class - */ - void WinfoNotification( MSimpleWinfo& aWinfo ); - - /** - * Defined in a base class - */ - CSimplePluginXdmUtils* XdmUtilsL(); - - /** - * Defined in a base class - */ - MXIMPProtocolConnectionHost* Host(); - - -// from base class MSimplePluginSettings - - /** - * Defined in a base class - */ - TPtrC16 CurrentSipPresentity(); - - /** - * Defined in a base class - */ - TPtrC8 CurrentSipPresentity8(); - - /** - * Defined in a base class - */ - TPtrC16 CurrentDomain(); - - /** - * Variation - */ - CSimplePluginVariation& Variation(); - -private: - - - -private: // data members - - /** - * Host for connection. - * Not own. - */ - MXIMPProtocolConnectionHost* iConnectionHost; - - /** - * Simple Engine session - * Own. - */ - CSimplePluginSession* iSession; - - /** - * current request id - */ - TXIMPRequestId iPrFwId; - - /** - * MProtocolPresenceAuthorization implementation. - * Own. - */ - CSimplePluginAuthorization* iAuth; - - /** - * CSimplePluginWinfo - * Own. - */ - CSimplePluginWinfo* iPluginWinfo; - - /** - * CSimplePluginPublisher - * Own. - */ - CSimplePluginPublisher* iPublisher; - - /** - * CSimplePluginWatcher - * Own. - */ - CSimplePluginWatcher* iWatcher; - - /** - * CSimplePluginGroups - * Own. - */ - CSimplePluginGroups* iGroups; - - /** - * Current user SIP identity - * Own. - */ - HBufC16* iSipPresentity; - - /** - * XDM utils - * Own. - */ - CSimplePluginXdmUtils* iXdmUtils; - - - /** - * Run time variation - * Own - */ - CSimplePluginVariation* iVariation; - - }; - - -#endif // CSIMPLEPLUGIN_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simpleplugindata.h --- a/presencefwsimpleadpt/inc/simpleplugindata.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +0,0 @@ -/* -* Copyright (c) 2007 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef C_SIMPLEPLUGINDATA_H -#define C_SIMPLEPLUGINDATA_H - - -// Includes -#include - -class MXIMPObjectFactory; -class MXIMPIdentity; - -class MPresenceObjectFactory; -class MSimpleDocument; -class MPresenceInfo; -class MSimplePresenceList; -class MPresenceInfoFieldCollection; -class MPersonPresenceInfo; -class MPresenceInfoFieldValueEnum; -class MSimpleElement; -class MPresenceInfoFieldValueText; - - -/** - * CSimplePluginData - * - * This provides data conversion between SIMPLE Engine and PrFw data strcutres. - * - * @lib simplexmlutils - * @since s60 v5.0 - */ -NONSHARABLE_CLASS(CSimplePluginData) : public CBase - { -public: - - static CSimplePluginData* NewL( ); - - static CSimplePluginData* NewLC(); - - virtual ~CSimplePluginData(); - - /** - * Convert to engine notification to MPresenceInfo - * @param aPresenceFactory PrFw Presence Factory - * @param aDocument notification - * @param aPrInfo PrFW info structure [out] - */ - static void NotifyToPrInfoL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleDocument& aDocument, - MPresenceInfo& aPrInfo ); - - /** - * Convert to engine list notification to MPresenceInfo elements - * @param aFactory PrFw Factory - * @param aPresenceFactory PrFw Presence Factory - * @param aList notification - * @param aEntities array of PrFW info structure [out] - * @param aTerminated array of PrFW info structure for terminated entities [out] - * @param aFullList ETrue if full state list [out] - */ - static void NotifyListToPrInfoL( - MXIMPObjectFactory& aFactory, - MPresenceObjectFactory& aPresenceFactory, - MSimplePresenceList& aList, - RPointerArray& aEntities, - RPointerArray& aActives, - RPointerArray& aTerminated, - TBool& aFullList ); - - /** - * Converts MPersonPresenceInfo to MSimpleDocument elements - * @param aInfo Person's presence info [in] - * @param aDocument PIDF document containing Person's presence info [out] - * @param aSipId Person's SIP indetity - */ - static void AddPrPersToSimpleDocumentL( - const MPersonPresenceInfo* aInfo, - MSimpleDocument& aDocument, - const TDesC8& aSipId ); - - -private: - - CSimplePluginData(); - - void ConstructL( ); - - static void UserOverridingWillingnessToPrFwL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aElement, - MPresenceInfoFieldCollection& aCollection ); - - static void UserStatusIconToPrFwL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aElement, - MPresenceInfoFieldCollection& aCollection, - MSimpleDocument& aDocument ); - - static void UserNoteToPrFwL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aElement, - MPresenceInfoFieldCollection& aCollection ); - - static void CollectAllPresentitiesL( - RPointerArray& aEntities, - RPointerArray& aActives, - RPointerArray& aDocs, - MXIMPObjectFactory& aFactory, - MPresenceObjectFactory& aPresenceFactory ); - - /** - * Add terminated instances into array - * @param aTerminated list of PrFw indetities [OUT] - * @param aElems RLS meta data list entry elements - * @param aFactory PrFw Factory - */ - static void CollectTerminatedPresentitiesL( - RPointerArray& aTerminated, - RPointerArray& aElems, - MXIMPObjectFactory& aFactory ); - - /** - * Search the latest timestamp in the elements - * @param aElems element array - * @retun position of the latest element in the element array. KErrNotFound if not found. - */ - static TInt SearchLatestTimestampL( - RPointerArray& aElems ); - - /** - * Add availability info into SIMPLE document - * @param aText new value [IN] - * @param aPersElem personal data to be modified [OUT] - */ - static void AddPrPersAvailabilityToDocL( - const MPresenceInfoFieldValueText* aText, - MSimpleElement* aPersElem ); - - /** - * Check if the current element is terminated instance. - * If yes then add the aUri into aTerminated - * @param aTerminated list of PrFw indetities [OUT] - * @param aElem current element - * @param aUri8 corresponding sip entity URI - * @param aFactory PrFw Factory - */ - static void SearchTerminatedInstanceL( - RPointerArray& aTerminated, - MSimpleElement* aElem, - const TDesC8* aUri8, - MXIMPObjectFactory& aFactory ); - - - -}; - - - -#endif // C_SIMPLEPLUGINDATA_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simpleplugindebugutils.h --- a/presencefwsimpleadpt/inc/simpleplugindebugutils.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 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: DEBUG utilities, for DEBUG version only -* -*/ - - - - -#ifndef SIMPLEPLUGINDEBUGUTILS_H -#define SIMPLEPLUGINDEBUGUTILS_H - -#ifdef _DEBUG - -#include -#include - -// FORWARD DECLARATION -class RFs; -class RFileReadStream; - - -//********************************** -// PluginLogger -//********************************** -NONSHARABLE_CLASS( PluginLogger ) - { -public: - static void Log(TRefByValue aFmt,...); - }; - -#endif // _DEBUG - -#endif // simpledebugutils_H - -// End of File diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simpleplugindef.h --- a/presencefwsimpleadpt/inc/simpleplugindef.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -/* -* Copyright (c) 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: C++ compatible definitions for PrFw SIMPLE protocol -* -*/ - - - -#ifndef SIMPLEPLUGINDEF_H -#define SIMPLEPLUGINDEF_H - -#include -#include "prfwsimpleplugin.hrh" - - -/** - * C++ compatible definitions for PrFw SIMPLE protocol. - * - * This must be kept in-sync with definitions in - * "simpleplugin_resource.hrh" - */ - -//PrFw primary test protocol -const TInt K_SIMPLEPLUGIN_1_IMPLEMENTATION_UID = SIMPLEPLUGIN_1_IMPLEMENTATION_UID; -const TInt K_SIMPLEPLUGIN_1_VERSION_NO = 1; -_LIT( K_SIMPLEPLUGIN_1_DISPLAY_NAME, "PrFw SIMPLE protocol" ); -_LIT( K_SIMPLEPLUGIN_1_DEFAULT_DATA, "SIMPLE" ); -_LIT( K_SIMPLEPLUGIN_1_OPAQUE_DATA , " " ); - -#endif // SIMPLEPLUGINDEF_H - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simplepluginentitywatcher.h --- a/presencefwsimpleadpt/inc/simplepluginentitywatcher.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,225 +0,0 @@ -/* -* Copyright (c) 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: Simple Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef CSIMPLEPLUGINENTITYWATCHER_H -#define CSIMPLEPLUGINENTITYWATCHER_H - -#include - -#include - -#include - -#include "simpleplugincommon.h" -#include "msimplepluginconnectionobs.h" - - -class TXIMPRequestId; -class MXIMPIdentity; -class MXIMPProtocolConnectionHost; -class MPersonPresenceInfo; - -class MSimpleDocument; -class MSimpleWatcher; - -class CSimplePluginWatcher; - -/** - * CSimplePluginEntityWatcher - * - * Simple Engine Connection - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS( CSimplePluginEntityWatcher ): public CBase, - public MSimpleWatcherObserver - { - -private: - /** - * Current operation - */ - enum TPluginEntityWatcherOperation - { - EPluginIdle, - EPluginStop, - EPluginStart - }; - -public: - - /** - * Constructor. - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - * @param aHost PrFw connection host - */ - static CSimplePluginEntityWatcher* NewL( - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CSimplePluginWatcher& aWatcher ); - - virtual ~CSimplePluginEntityWatcher(); - - - /** - * Access Request id - * @return PrFw request id - */ - TXIMPRequestId PrFwRequestId(); - - /** - * Access Presentity id - * @return Presentity id - */ - TPtrC8 PresentityId(); - - /** - * Start subscribe - * @param aPresentityId presentity id - */ - void StartSubscribeL( - const TDesC8& aPresentityId ); - - /** - * Start subscribe - * @param aPresentityId presentity id - */ - void StartSubscribeListL( - const TDesC8& aPresentityId ); - - /** - * Set simple name - * @param aPresentityId presentity id - */ - void SetSimpleNameL( - const TDesC8& aPresentityId ); - - void StopSubscribeL( ); - -private: - - CSimplePluginEntityWatcher( - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CSimplePluginWatcher& aWatcher ); - - void ConstructL( ); - -public: - -// from base class MSimpleWatcherObserver - - /** - * Defined in a base class - */ - void WatcherReqCompleteL( TInt aOpId, TInt aStatus ); - - /** - * Defined in a base class - */ - void WatcherNotificationL( MSimpleDocument& aDocument ); - - /** - * Defined in a base class - */ - void WatcherListNotificationL( MSimplePresenceList& aList ); - - /** - * Defined in a base class - */ - void WatcherTerminatedL( - TInt aOpId, TInt aReason ); - -private: - - /** - * Calls caller active object - * @param aStatus error status - */ - void CompleteClientReq( TInt aStatus ); - - - -private: // Data - - /** - * host class - */ - CSimplePluginWatcher& iPluginWatcher; - - /** - * PrFw Plugin connection observer - */ - MSimplePluginConnectionObs& iConnObs; - - /** - * SIMPLE engine connection - */ - MSimpleConnection& iConnection; - - /** - * SIMPLE engine watcher - * Own. - */ - MSimpleWatcher* iWatcher; - - /** - * PrFW request id - */ - TXIMPRequestId iPrFwId; - - /** - * Simple Engine request id - */ - TInt iSimpleId; - - /** - * client statutus. - * Not own. - */ - TRequestStatus* iClientStatus; - - /** - * Subscribed entity id - * Own. - */ - HBufC8* iEntityId; - - /** - * Subscribed entity id, pure group name - * Own. - */ - HBufC8* iSimpleEntityId; - - /** - * current pending operation - */ - TPluginEntityWatcherOperation iOperation; - - /** - * Whether subscription of list is pending - */ - TBool iListSubsActive; - - }; - -#endif // CSimplePluginEntityWatcher_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simpleplugingroups.h --- a/presencefwsimpleadpt/inc/simpleplugingroups.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,441 +0,0 @@ -/* -* Copyright (c) 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: Simple Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef CSIMPLEPLUGINGROUPS_H -#define CSIMPLEPLUGINGROUPS_H - -#include - -#include -#include - -#include - -#include "simpleplugincommon.h" -#include "msimplepluginconnectionobs.h" - - -class TXIMPRequestId; -class MXIMPIdentity; -class MPresenceInfoFilter; -class MProtocolPresentityGroupsDataHost; -class MXIMPObjectCollection; - -class MSimpleWinfo; -class CPresenceXDM; -class CRLSXDM; -class CXdmEngine; -class CXdmDocument; - - -/** - * CSimplePluginGroups - * - * Simple Engine Connection - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS( CSimplePluginGroups ) : public CActive, - public MProtocolPresentityGroups - { -private: - - - /** - * Current operation - */ - enum TPluginGroupsOperation - { - ENoOperation, - ECreatePresentityGroup, - EDeletePresentityGroup, - EAddPresentityGroupMember, - ERemovePresentityGroupMember, - EGetListOfLists, - EGetListContent - }; - - /** - * Current actibe object state - */ - enum TPluginGroupsState - { - EPluginIdle, - EPluginInitXdm, - EPluginFetchRls, - EPluginAddGroupMember, - EPluginRemoveGroupMember, - EPluginCommitRls, - EPluginCommitXdm, - ERemoveGroupFromGranted - }; - -public: - /** - * Constructor. - * @param aObs callback for complete requests - */ - static CSimplePluginGroups* NewL( - MSimplePluginConnectionObs& aObs ); - - virtual ~CSimplePluginGroups(); - - - -private: - - CSimplePluginGroups( - MSimplePluginConnectionObs& aObs ); - - void ConstructL( ); - - -// from base class MXIMPBase -public: - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - -// from base class MProtocolPresentityGroups - - /** - * Defined in a base class - */ - void DoSubscribePresentityGroupListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresentityGroupListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoCreatePresentityGroupL( - const MXIMPIdentity& aGroupId, - const TDesC16& aDisplayName, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoDeletePresentityGroupL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresentityGroupDisplayNameL( - const MXIMPIdentity& aGroupId, - const TDesC16& aDisplayName, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoSubscribePresentityGroupContentL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresentityGroupContentL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoAddPresentityGroupMemberL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - const TDesC16& aMemberDisplayName, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoRemovePresentityGroupMemberL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresentityGroupMemberDisplayNameL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - const TDesC16& aMemberDisplayName, - TXIMPRequestId aReqId ); - -protected: - -// from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - -private: - - /** - * Save presentity id - * @param aPresentityId presentity id - */ - void SetPresIdentityL( - const MXIMPIdentity& aPresentityId ); - - /** - * Save presentity id - * @param aPresentityId presentity id - */ - void SetPresIdentity2L( - const MXIMPIdentity& aPresentityId ); - - /** - * Calls MXIMPProtocolConnectionHost callback - * @param aStatus error status - */ - void CompletePrFwReq( TInt aStatus ); - - /** - * Start XDM operation - */ - void StartXdmOperationL( - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ); - - /** - * Start XDM operation - */ - void StartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ); - - /** - * Start XDM operation - */ - void StartXdmOperationL( - const MXIMPIdentity& aId, - const TDesC16& aDisplayName, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ); - - /** - * Start XDM operation - */ - void StartXdmOperationL( - const MXIMPIdentity& aId, - const MXIMPIdentity& aMemberId, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ); - - /** - * Start XDM operation - */ - void StartXdmOperationL( - const MXIMPIdentity& aId, - const MXIMPIdentity& aMemberId, - const TDesC16& aDisplayName, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ); - - /** - * Start XDM operation - */ - void StartXdmOperationL(); - - /** - * Start XDM operation, StartXdmOperationL calls this. - */ - void DoStartXdmOperationL( ); - - /** - * Call CSimpleXdmUtils operation - */ - void CallActualXdmOperationL(); - - /** - * Get list of the entity lists - */ - void GetListOfListsL(); - - /** - * Get content of the entity list - */ - void GetListContentL(); - - /** - * Yields to active scheduler and runs next RunL loop - * @param aStatus error status - */ - void CompleteMe( TInt aStatus ); - - /** - * Copy data from aLists and from aNames into aCollection - * @param aNames group names [IN] - * @param aNames group display names [IN] - * @param aCollection collection of MPresentityGroupInfo [OUT] - */ - void CopyGroupArraysToCollectionL( - CDesCArrayFlat& aLists, CDesCArrayFlat& aNames, MXIMPObjectCollection& aCollection ); - - /** - * Copy data from aIds and from aNames into aCollection - * @param aNames group member names [IN] - * @param aNames group member display names [IN] - * @param aCollection collection of MPresentityGroupMemberInfo [OUT] - */ - void CopyGroupMembersToCollectionL( - CPtrCArray& aIds, CPtrCArray& aNames, MXIMPObjectCollection& aCollection); - - - /** - * Add presentity group - * @param aGroupId group id - * @param adispName display name - */ - void HandleCreatePresentityGroupL( - const TDesC& aGroupId, const TDesC& aDispName ); - - /** - * Delete presentity group - * @param aGroupId group id - */ - void HandleDeletePresentityGroupL( const TDesC& aGroupId ); - - /** - * Add presentity group member - */ - void HandleAddPresentityGroupMemberL(); - - /** - * Remove group member - */ - void HandleRemovePresentityGroupMemberL(); - - - -private: // Data - - /** - * PrFw Plugin connection observer - */ - MSimplePluginConnectionObs& iConnObs; - - /** - * XDM Settings id - */ - TInt iSettingsId; - - /** - * PrFW request id - */ - TXIMPRequestId iPrFwId; - - /** - * PrFW request id for own requests - */ - TXIMPRequestId iPrFwIdOwn; - - /** - * Simple Engine request id - */ - TInt iSimpleId; - - /** - * Subscribed items. Bitmask. - */ - TUint iSubscribed; - - /** - * Current operation - */ - TPluginGroupsOperation iOperation; - - /** - * Current presentity in progress - * Own. - */ - HBufC16* iPresIdentity; - - /** - * Current presentity in progress - * Own. - */ - HBufC16* iPresIdentity2; - - /** - * XDM Utils - * Not own. - */ - CSimplePluginXdmUtils* iXdmUtils; - - /** - * Display name - * Own - */ - HBufC* iDisplayName; - - /** - * Active object state - */ - TPluginGroupsState iState; - - TBool iCompleted; - - }; - -#endif // CSimplePluginGroups_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simplepluginpublisher.h --- a/presencefwsimpleadpt/inc/simplepluginpublisher.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,450 +0,0 @@ -/* -* Copyright (c) 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: Simple Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef CSIMPLEPLUGINPUBLISHER_H -#define CSIMPLEPLUGINPUBLISHER_H - -#include - -#include -#include - -#include -#include - -#include "simpleplugincommon.h" -#include "msimplepluginconnectionobs.h" -#include "msimplepluginsettings.h" - -class TXIMPRequestId; -class MXIMPIdentity; -class MXIMPProtocolConnectionHost; - -class MPersonPresenceInfo; -class MServicePresenceInfo; -class MDevicePresenceInfo; - -class MSimplePublisher; -class MSimpleDocument; -class MSimpleWinfo; -class MSimpleWatcher; -class MSimpleElement; - - -/** - * CSimplePluginWatcherInfo - * - * watcher info. - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS( CSimplePluginWatcherInfo ): public CBase - { -public: - - /** - * Constructor. - * @param aId watcher id - * @param aSipId watcher SIP identity - */ - static CSimplePluginWatcherInfo* NewL( - const TDesC8& aId, - const TDesC& aSipId ); - - virtual ~CSimplePluginWatcherInfo(); - - /** - * Destructor - */ - void Destroy(); - - /** - * Match to given info - * @param aId watcher id - * @param aSipId watcher SIP identity - * @return ETrue if current entity matches to the parameters - */ - TBool Match( const TDesC8& aId, - const TDesC& aSipId ); - - TPtrC SipId(); - - inline static TInt LinkOffset(); - -private: - - CSimplePluginWatcherInfo( ); - - /** - * Constructor - * @param aId watcher id - * @param aSipId watcher SIP identity - */ - void ConstructL( - const TDesC8& aId, - const TDesC& aSipId ); - -public: // data - - TDblQueLink iLink; - -private: // data - - HBufC8* iId; - HBufC* iSipId; - - }; - -/** - * CSimplePluginPublisher - * - * publisher. - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS( CSimplePluginPublisher ): public CActive, - public MSimplePublishObserver, - public MSimpleWatcherObserver, - public MProtocolPresencePublishing - { -public: - - /** - * Current operation - */ - enum TPluginPublishOperation - { - ENoOperation, - EPublishOwn, - ESubscribeOwn, - EUnsubscribeOwn, - ESubscribeWinfo, - EUnsubscribeWinfo - }; - - /** - * Constructor. - * @param aConnSetts current settings - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - */ - static CSimplePluginPublisher* NewL( - MSimplePluginSettings& aConnSetts, - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ); - - virtual ~CSimplePluginPublisher(); - - /** - * WinfoTerminatedL - * - * SIMPLE Winfo watcher sunscription is terminated - * @param aReason reason code - */ - void WinfoTerminatedL( TInt aReason ); - - /** - * WINFO received from SIMPLE - * @param aWinfo WINFO - */ - void WinfoNotificationL( MSimpleWinfo& aWinfo ); - -private: - - CSimplePluginPublisher( - MSimplePluginSettings& aConnSetts, - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ); - - void ConstructL( ); - - -public: - -// from base class MSimplePublishObserver - - /** - * Defined in a base class - */ - void PublishReqCompleteL( TInt aOpid, TInt aStatus); - - /** - * Defined in a base class - */ - void PublishTerminatedL( TInt aOpid ); - -// from base class MSimpleWatcherObserver - - /** - * Defined in a base class - */ - void WatcherReqCompleteL( TInt aOpId, TInt aStatus ); - - /** - * Defined in a base class - */ - void WatcherNotificationL( MSimpleDocument& aDocument ); - - /** - * Defined in a base class - */ - void WatcherListNotificationL( MSimplePresenceList& aList ); - - /** - * Defined in a base class - */ - void WatcherTerminatedL( - TInt aOpId, TInt aReason ); - - -// from base class MXIMPBase -public: - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - -// from base class MProtocolPresencePublishing -public: - - /** - * Defined in a base class - */ - void DoPublishOwnPresenceL( - const MPresenceInfo& aOwnPresence, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoSubscribeOwnPresenceL( - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdateOwnPresenceSubscriptionPifL( - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribeOwnPresenceL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoSubscribePresenceWatcherListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresenceWatcherListL( - TXIMPRequestId aReqId ); - - -protected: - -// from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - -private: - - - /** - * Calls MXIMPProtocolConnectionHost callback - * @param aStatus error status - */ - void CompletePrFwReq( TInt aStatus ); - - /** - * Initialize a document - */ - void InitializeSimpleDocumentL( ); - - /** - * Add person information to the document. - * @param aPersInfo personal information - */ - void AddSimpleDocumentPersL( - const MPersonPresenceInfo* aInfo ); - - void AddSimpleDocumentServiceL( - const MServicePresenceInfo& aInfo ); - - void AddSimpleDocumentDeviceL( - const MDevicePresenceInfo& aInfo ); - - /** - * Make a publish request - */ - void MakePublishReqL(); - - /** - * Start XDM initialization - */ - void StartXdmOperationL( TXIMPRequestId aReqId ); - - /** - * Start XDM initialization. StartXdmOperationL calls this. - */ - void DoStartXdmOperationL( TXIMPRequestId aReqId ); - - /** - * Delete watcher information - */ - void DeleteWatchers(); - - void AddWatcherIfNotExistsL( const TDesC8& aId, const TDesC& aSipId ); - - void RemoveWatcherIfExistsL( const TDesC8& aId, const TDesC& aSipId ); - - CDesCArrayFlat* MakeCurrentWatcherListLC(); - - - /** - * Update private data member of active watchers list - * @param aElems SIMPLE elements [IN] - */ - void UpdateActiveWatchersListL( - RPointerArray& aElems ); - - -private: // Data - - /** - * PrFw Plugin connection observer - */ - MSimplePluginConnectionObs& iConnObs; - - /** - * Current settings - */ - MSimplePluginSettings& iConnSets; - - /** - * SIMPLE engine connection - */ - MSimpleConnection& iConnection; - - /** - * SIMPLE engine publisher - * Own. - */ - MSimplePublisher* iPublisher; - - /** - * SIMPLE engine watcher - * Own. - */ - MSimpleWatcher* iWatcher; - - /** - * PrFW request id - */ - TXIMPRequestId iPrFwId; - - /** - * Simple Engine request id - */ - TInt iSimpleId; - - /** - * Subscribed winfo - */ - TBool iSubscribed; - - /** - * Subscribed own data - */ - TBool iSubscribedOwn; - - /** - * Published own data - */ - TBool iPublished; - - /** - * Current operation - */ - TPluginPublishOperation iOperation; - - /** - * Simple publish document - * Own. - */ - MSimpleDocument* iDocument; - - /** - * XDM Utils - * Not own. - */ - CSimplePluginXdmUtils* iXdmUtils; - - /** - * WINFO watchers - * Own. - */ - TDblQue iWatcherList; - - }; - - TInt CSimplePluginWatcherInfo::LinkOffset() - { - return _FOFF(CSimplePluginWatcherInfo, iLink); - } - -#endif // CSimplePluginPublisher_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simplepluginsession.h --- a/presencefwsimpleadpt/inc/simplepluginsession.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,173 +0,0 @@ -/* -* Copyright (c) 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: Simple Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef CSIMPLEPLUGINSESSION_H -#define CSIMPLEPLUGINSESSION_H - - -#include -#include -#include "msimplepluginconnectionobs.h" - -class MXIMPContextClientInfo; -class MXIMPProtocolConnection; -class MXIMPServiceInfo; - - -class MSimpleConnection; - -/** - * CSimplePluginSession - * - * Simple Engine Connection - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS( CSimplePluginSession ) : public CBase, - public MSimpleConnectionObserver - { -public: - - static CSimplePluginSession* NewL( - const MXIMPServiceInfo& aService, - MSimplePluginConnectionObs& aObs ); - - virtual ~CSimplePluginSession(); - - /** - * OpenSessionL - * - * Opens the SIP connection (registers when needed) - * - */ - void OpenSessionL(); - - /** - * OpenSessionL - * - * Opens the SIP connection (registers when needed) - * @param aSettingsId settings id - * - */ - void OpenSessionL( TInt aSettingsId ); - - /** - * MSimpleConnection accessor - * @return MSImpleConnection instance - */ - MSimpleConnection* SimpleConnection(); - - /** - * XDMSettings accessor - * @return XDM Settings ID - */ - TInt XdmSettingsId(); - - /** - * Current registered SIP entity - */ - TPtrC8 CurrentSipPresentity(); - - /** - * Domain syntax for current settings - */ - TPtrC16 CurrentDomain(); - -private: - - CSimplePluginSession( MSimplePluginConnectionObs& aObs ); - - void ConstructL( - const MXIMPServiceInfo& aService ); - - -public: - -// from base class MSimpleConnectionObserver - - /** - * Defined in a base class - */ - void ConnectionStatusL( MSimpleConnection::TSimpleState aState ); - - /** - * Defined in a base class - */ - void RequestCompleteL( TInt aOpId, TInt aStatus ); - -// from base class CActive - -protected: - - -private: // Data - - /** - * PrFw Plugin connection observer - */ - MSimplePluginConnectionObs& iObs; - - /** - * Simple Engine connection. - * Own. - */ - MSimpleConnection* iConnection; - - /** - * Current Simple Engine operation id - */ - TInt iOpId; - - /** - * IAP Id - */ - TInt32 iIap; - - /** - * XDM Settings id - */ - TInt iXdmSetting; - - /** - * Request type - */ - MSimplePluginConnectionObs::TReqType iType; - - /** - * Current User ID, User's SIP identity - * Own. - */ - HBufC8* iUserId8; - - /** - * Domain syntax for current settings - * Own, - */ - HBufC16* iDomain; - - /** - * Whether conncted to network - */ - TBool iConnected; - - }; - -#endif // CSIMPLEPLUGINSESSION_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simplepluginvariation.h --- a/presencefwsimpleadpt/inc/simplepluginvariation.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -/* -* Copyright (c) 2007 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: CSimplePluginVariation implementation. -* -*/ - - - - -#ifndef CSIMPLEPLUGINVARIATION_H -#define CSIMPLEPLUGINVARIATION_H - -#include - -class CRepository; - -/** - * CSimplePluginVariation - * - * Implementation of MXIMPProtocolConnection - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS(CSimplePluginVariation) : public CBase - { - -public: - - enum TSimplePluginAuthRule - { - ERuleNone, - ERulePoliteBlock, - ERuleBlock, - ERuleConfirm, - ERuleAllow - }; - - static CSimplePluginVariation* NewL( ); - - ~CSimplePluginVariation(); - -private: - - CSimplePluginVariation(); - - - void ConstructL( ); - - -public: - - /** - * Get data from CenRep - */ - void InitL(); - - /** - * Grant rule name - * @return rule name - */ - TPtrC GrantRuleName(); - - /** - * Grant own rule name - * @return rule name - */ - TPtrC GrantOwnRuleName(); - - /** - * Default rule name - * @return rule name - */ - TPtrC DefaultRuleName(); - - /** - * Block rule name - * @return rule name - */ - TPtrC BlockRuleName(); - - /** - * Default rule action - * @return action - */ - TSimplePluginAuthRule DefaultRuleAction(); - - /** - * Block rule action - * @return action - */ - TSimplePluginAuthRule BlockRuleAction(); - - /** - * RlsGroupUriTemplate - * @return RlsGroupUriTemplate - */ - TPtrC RlsGroupUriTemplate(); - - /** - * SharedXdmTop - * @return SharedXdmTop - */ - TPtrC SharedXdmTop(); - - /** - * GrantListName - * @return GrantListName - */ - TPtrC GrantListName(); - -private: - - void InitGrantRuleNameL( CRepository* aRepository ); - - void InitGrantOwnRuleNameL( CRepository* aRepository ); - - void InitDefaultRuleNameL( CRepository* aRepository ); - - void InitBlockRuleNameL( CRepository* aRepository ); - - void InitDefaultRuleActionL( CRepository* aRepository ); - - void InitBlockRuleActionL( CRepository* aRepository ); - - void InitRlsGroupUriTemplateL( CRepository* aRepository ); - - void InitSharedXdmTopL( CRepository* aRepository ); - - void InitGrantListNameL( CRepository* aRepository ); - - -private: // data members - - /** - * Id for rule to grant all elements - * Own - */ - HBufC* iGrantAllRuleName; - - /** - * Id for rule to grant own data - * Own - */ - HBufC* iGrantOwnRuleName; - - /** - * Id for default rule - * Own - */ - HBufC* iDefaultRuleName; - - /** - * Id for block rule - * Own - */ - HBufC* iBlockRuleName; - - /** - * Default rule action, allow/confirm/block/polite-block - */ - TSimplePluginAuthRule iDefaultRuleAction; - - /** - * Block rule action, block/polite-block - */ - TSimplePluginAuthRule iBlockRuleAction; - - /** - * Template for RLS service URI for a user group - * Own - */ - HBufC* iRlsGroupUriTemplate; - - /** - * Top level for lists in shared XDM index document - * Own - */ - HBufC* iSharedXdmTop; - - /** - * Name of list for granted users in XDM list - * Own - */ - HBufC* iGrantListName; - - }; - - -#endif // CSIMPLEPLUGINVARIATION_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simplepluginwatcher.h --- a/presencefwsimpleadpt/inc/simplepluginwatcher.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,366 +0,0 @@ -/* -* Copyright (c) 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: Simple Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef CSIMPLEPLUGINWATCHER_H -#define CSIMPLEPLUGINWATCHER_H - -#include - -#include - -#include - -#include "simpleplugincommon.h" -#include "msimplepluginconnectionobs.h" -#include "msimplepluginsettings.h" - - -class TXIMPRequestId; -class MXIMPIdentity; -class MXIMPProtocolConnectionHost; -class MPersonPresenceInfo; -class MXIMPObjectCollection; - -class MSimpleDocument; -class MSimpleWatcher; - -class CSimplePluginEntityWatcher; -class CSimplePluginXdmUtils; - -/** - * CSimplePluginWatcher - * - * Simple Engine Connection - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS( CSimplePluginWatcher ): public CActive, - public MProtocolPresenceWatching - { - -private: - - /** - * Current operation - */ - enum TPluginWatcherOperation - { - EPluginUndef, - EPluginSubscribeGroup, - EPluginUnsubscribeGroup - }; - - /** - * Current actibe object state - */ - enum TPluginXdmState - { - EPluginIdle, - EPluginInitXdm, - EPluginFetchRls, - EPluginAddGroupMember, - EPluginRemoveGroupMember - // EPluginCommitRls, - // EPluginCommitXdm - }; - -public: - - /** - * Constructor. - * @param aconnSets current settings - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - */ - static CSimplePluginWatcher* NewL( - MSimplePluginSettings& aConnSets, - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ); - - virtual ~CSimplePluginWatcher(); - - /** - * SetHost - * - * Set PrFw Host - * - * @lib ?library - * @since s60 v5.0 - * @patam aHost PrFW Host - */ - void SetHost( MXIMPProtocolConnectionHost* aHost ); - - /** - * SIP Watcher is complets it's task. - * @param aStatus error status - */ - void CompleteWatcher( TInt aStatus ); - - /** - * Delete a single entity watcher - * @param aPresentityid presentity id - */ - void DeleteWatcher( - const TDesC8& aPresentityid ); - - /** - * Get Block list - * @param aList list name - * @param aMembers blocked users [OUT] - */ - void GetEntitiesInListL( - const TDesC& aList, - MXIMPObjectCollection& aMembers ); - - -private: - - CSimplePluginWatcher( - MSimplePluginSettings& aConnSets, - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ); - - void ConstructL( ); - - /** - * Calls MXIMPProtocolConnectionHost callback - * @param aStatus error status - */ - void CompletePrFwReq( TInt aStatus ); - - /** - * Handles RunL routines for subscription - */ - void DoRunForSubscriptionL(); - - /** - * Handles RunL routines for unsubscription - */ - void DoRunForUnsubscriptionL(); - - -public: - - -// from base class MXIMPBase -public: - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - -// from base class MProtocolPresenceWatching -public: - - /** - * Defined in a base class - */ - void DoSubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresentityPresenceSubscriptionPifL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoSubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresentityGroupMembersPresenceSubscriptionPifL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - -protected: - -// from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - -private: - - /** - * Match existing watcher - * @param aPresentityId presentity id - * @return watcher or NULL when not found - */ - CSimplePluginEntityWatcher* MatchWatcher2L( - const TDesC8& aPresentityId, TBool aCreate ); - - /** - * Save presentity id - * @param aPresentityId presentity id - */ - void SetPresIdentityL( - const MXIMPIdentity& aPresentityId ); - - /** - * Start watching service in RLS - */ - void StartWatchingRlsL(); - - void StartXdmOperationL(); - - /** - * StartXdmoperationL calls this - */ - void DoStartXdmOperationL(); - - void GetListContentL(); - - /** - * Copy data from aIds and from aNames into aCollection - * @param aNames group member names [IN] - * @param aNames group member display names [IN] - * @param aCollection collection of MPresentityGroupMemberInfo [OUT] - */ - void CopyGroupMembersToCollectionL( - CPtrCArray& aIds, CPtrCArray& aNames, MXIMPObjectCollection& aCollection); - - /** - * DoSubscribePresentityPresenceL calls this. - */ - void DoDoSubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - - /** - * DoUnsubscribePresentityPresenceL calls this. - */ - void DoDoUnsubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - - /** - * DoDoUnsubscribePresentityGroupMembersPresenceL calls this - */ - void DoDoUnsubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - - -private: // Data - - /** - * Current settings - */ - MSimplePluginSettings& iConnSets; - - /** - * PrFw Plugin connection observer - */ - MSimplePluginConnectionObs& iConnObs; - - /** - * SIMPLE engine connection - */ - MSimpleConnection& iConnection; - - /** - * SIMPLE engine watchers - */ - RPointerArray iWatchers; - - /** - * Current PrFW request id - */ - TXIMPRequestId iPrFwId; - - /** - * Current presentity in progress - * Own. - */ - HBufC16* iPresIdentity; - - /** - * XDM Utils - * Not own. - */ - CSimplePluginXdmUtils* iXdmUtils; - - /** - * Whether the request is completed - */ - TBool iCompleted; - - TPluginWatcherOperation iOperation; - - TPluginXdmState iXdmState; - - }; - -#endif // CSimplePluginWatcher_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simplepluginwinfo.h --- a/presencefwsimpleadpt/inc/simplepluginwinfo.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -/* -* Copyright (c) 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: Simple Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef CSIMPLEPLUGINWINFO_H -#define CSIMPLEPLUGINWINFO_H - -#include - -#include - -#include "simpleplugincommon.h" -#include "msimplepluginconnectionobs.h" - -#include - -class MSimpleWinfo; -class MXIMPIdentity; -class MPresenceInfoFilter; -class MSimpleWinfoWatcher; -class MXIMPProtocolConnectionHost; -class MSimpleConnection; - - - - -/** - * CSimplePluginWinfo - * - * Simple Engine Connection - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS( CSimplePluginWinfo ) : public CBase, - public MSimpleWinfoObserver - { -public: - - /** - * Constructor. - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - */ - static CSimplePluginWinfo* NewL( - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ); - - virtual ~CSimplePluginWinfo(); - - /** - * SetHost - * - * Set PrFw Host - * - * @lib ?library - * @since s60 v5.0 - * @patam aHost PrFW Host - */ - void SetHost( MXIMPProtocolConnectionHost* aHost ); - - /** - * SubscribeWinfoListL - * - * - * @lib ?library - * @since s60 v5.0 - * @param aReqId PrFw req id - */ - void SubscribeWinfoListL( TXIMPRequestId aReqId ); - - /** - * UnsubscribeWinfoListL - * - * - * @lib ?library - * @since s60 v5.0 - * @param aReqId PrFw req id - */ - void UnsubscribeWinfoListL( TXIMPRequestId aReqId ); - -private: - - CSimplePluginWinfo( - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ); - - void ConstructL( ); - - -public: - -// from base class MSimpleWinfoObserver - -// Subscribe presence grant request list - - /** - * Defined in a base class - */ - void WinfoReqCompleteL( TInt aOpid, TInt aStatus ); - - /** - * Defined in a base class - */ - void WinfoTerminatedL( - TInt aOpid, TInt aReason ); - - /** - * Defined in a base class - */ - void WinfoNotificationL( MSimpleWinfo& aWinfo ); - - -private: // Data - - /** - * PrFw Plugin connection observer - */ - MSimplePluginConnectionObs& iConnObs; - - /** - * PrFw Host. - * Not Own. - */ - MXIMPProtocolConnectionHost* iHost; - - /** - * SIMPLE engine connection - */ - MSimpleConnection& iConnection; - - /** - * SIMPLE engine winfo watcher. - * Own. - */ - MSimpleWinfoWatcher* iWinfoWatcher; - - /** - * PrFW request id - */ - TXIMPRequestId iPrFwId; - - /** - * Simple Engine request id - */ - TInt iSimpleId; - - /** - * Subscribed - */ - TInt iSubscribed; - - /** - * Winfo subscribe completed - */ - TBool iWinfoCompleted; - - - }; - -#endif // CSimplePluginWinfo_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/inc/simplepluginxdmutils.h --- a/presencefwsimpleadpt/inc/simplepluginxdmutils.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,747 +0,0 @@ -/* -* Copyright (c) 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: Simple Protocol implementation for Presence Framework -* -*/ - - - - -#ifndef CSIMPLEPLUGINXDMUTILS_H -#define CSIMPLEPLUGINXDMUTILS_H - -#include - -#include - -#include - -#include "simpleplugincommon.h" - -// Test suite -class MSimplePluginTestObs; - -class MSimplePluginSettings; - -class CPresenceXDM; -class CRLSXDM; -class CXdmEngine; -class CXdmDocument; -class CXdmDocumentNode; - -class TPresenceActionXDM; -class TPresenceTransformXDM; -class TPresCondMisc; - - -// notice: class CPtrCArray; after PrFw headers fixed. - -class TRequestStatus; - - -/** - * CSimplePluginXdmUtils - * - * Simple Engine Connection - * - * @lib ?library - * @since s60 v5.0 - */ -NONSHARABLE_CLASS( CSimplePluginXdmUtils ) : public CActive, - public MRLSPresXDMAsyncHandler - { -public: - - - /** - * Active object asynch states - */ - enum TPluginXdmState - { - EStateIdle, - /** Get OMA XDM lists */ - EGetXdmOMALists, - /** Create OMA XDM lists */ - ECreateXdmOMALists, - /** Get OMA XDM lists only, no rules later */ - EGetXdmOMAListsOnly, - /** Create OMA XDM lists only, no rules later */ - ECreateXdmOMAListsOnly, - /** Get RLS service */ - EGetRlsServices, - /** Update RLS service */ - EUpdateRlsServices, - /** Get rules from server for GrantPresenceForPresentity */ - EGetXdmRules, - /** Update rules to server for GrantPresenceForPresentity */ - EUpdateXdmRules, - /** Update XDM OMA List */ - EUpdateXdmOMAList, - /** Cancel XDM document operation */ - ECancelDocument, - /** Re-Update RLS service - 409 HTTP error handling*/ - EReUpdateRlsServices - }; - - /** - * Current operation - */ - enum TPluginXdmOperation - { - ENoOperation, - EXdmInit, - EXdmInitXdmsOnly, - EXdmDeleteAll, - EXdmCancel, - EXdmAddUserToGroup, - EXdmAddGroupToGroup, - EXdmRemoveUserFromGroup, - EXdmRemoveGroupFromGroup, - EXdmGrantForAll, - EXdmWithdrawFromAll, - EXdmGetBlockedList, - EXdmCreateGroup, - EXdmDeleteGroup, - EXdmRlsFetch, - EXdmRlsAdd, - EXdmRlsRemove, - EXdmGrantGroup, - EXdmWithdrawGroup, - EXdmSetReactiveAuth, - EXdmSetProactiveAuth - }; - - - /** - * Constructor. - * @param aConnSets connection settings - * @param aXdmId XDm settings id - */ - static CSimplePluginXdmUtils* NewL( - MSimplePluginSettings& aConnSets, - TInt aXdmId); - - virtual ~CSimplePluginXdmUtils(); - - /** - * Cancel non active wrappers - */ - void CancelWrappers(); - - /** - * Initialize XDMS and Presence XDM structures in network. - * @param aStatus Request status of the caller - */ - void InitializeXdmL( TRequestStatus& aStatus ); - - /** - * Initialize XDMS in network - * @param aStatus Request status of the caller - */ - void InitializeXdmsOnlyL( TRequestStatus& aStatus ); - - /** - * Add resource-list into RLS document, overwrite old document - * @param aStatus Request status of the caller - */ - void FetchRlsL( TRequestStatus& aStatus ); - - /** - * Add resource-list into RLS document. - * FetchRlsL must be called before this method. - * @param aName list name - */ - void AddRlsGroupL( - const TDesC& aName ); - - /** - * Remove resource-list in RLS document - * FetchRlsL must be called before this method. - * Use RemoveRlsServiceByResourceListL instead when possible. - * @param aName list name - */ - void RemoveRlsGroupL( const TDesC& aName ); - - /** - * Remove service URI in RLS document by corresponding shared XDM document entry. - * The document in the server is updated when needed. - * FetchRlsL must be called before this method. - * This completes without error if the service was not found. - * @param aGroup user's group name, that's converted to resource-list value and used - * to match the service resource-list in the rls-services document. - * @param aStatus Request status of the caller. - */ - void RemoveRlsServiceByResourceListL( const TDesC& aGroup, TRequestStatus& aStatus ); - - - /** - * Access service URI in RLS document by corresponding shared XDM document entry. - * FetchRlsL must be called before this method. - * Leaves with KErrNotFound if RLS service is not found. - * @param aGroup user's group name, that's converted to resource-list value and used - * to match the service resource-list in the rls-services document. - * @return Access service URI in RLS document, ownership is transferred. May be NULL. - */ - HBufC* RlsServiceByResourceListLC( const TDesC& aGroup ); - - /** - * Add entity to granted list. - * InitializeXdmL must be called before this method. - * @param aUri entity URI to be granted - * @param aStatus Request status of the caller - */ - void AddEntityToGrantedL( const TDesC& aUri, TRequestStatus& aStatus ); - - /** - * Remove entity from granted list. - * InitializeXdmL must be called before this method. - * @param aUri entity URI to be removed - * @param aStatus Request status of the caller - */ - void RemoveEntityFromGrantedL( - const TDesC& aUri, TRequestStatus& aStatus ); - - /** - * Add entity to blocked list. - * InitializeXdmL must be called before this method. - * @param aUri entity URI to be blocked - * @param aStatus Request status of the caller - */ - void AddEntityToBlockedL( const TDesC& aUri, TRequestStatus& aStatus ); - - /** - * Remove entity from blocked list. - * InitializeXdmL must be called before this method. - * @param aUri entity URI to be removed - * @param aStatus Request status of the caller - */ - void RemoveEntityFromBlockedL( - const TDesC& aUri, TRequestStatus& aStatus ); - - /** - * Add group to granted. - * InitializeXdmL must be called before this method. - * @param aName a group to be granted - * @param aStatus Request status of the caller - */ - void AddGroupToGrantedL( const TDesC& aName, TRequestStatus& aStatus ); - - /** - * Remove group from granted list. - * InitializeXdmL must be called before this method. - * @param aName a group to be removed from granted list - * @param aStatus Request status of the caller - */ - void RemoveGroupFromGrantedL( - const TDesC& aName, TRequestStatus& aStatus ); - - /** - * Grant right for everyone, proactive authorization is set on. - * InitializeXdmL must be called before this method. - * @param aStatus Request status of the caller - */ - void GrantForEveryoneL( TRequestStatus& aStatus ); - - /** - * Withdraw right from eveyone, reactive authorization is set on. - * InitializeXdmL must be called before this method. - * @param aStatus Request status of the caller - */ - void WithdrawFromEveryoneL( TRequestStatus& aStatus ); - - /** - * Set reactive authorization policy. - * Default rule is set to CONFIRM. - */ - void SetReactiveAuthL( TRequestStatus& aStatus ); - - /** - * Set proactive authorization policy. - * Default rule is set to ALLOW if it was CONFIRM. - */ - void SetProactiveAuthL( TRequestStatus& aStatus ); - - /** - * Get (subscribe) Block List. - * InitializeXdmL must be called before this method. - * @param aMembers blocked users [OUT]. - */ - void SubscribeBlockListL( CPtrCArray& aMembers ); - - /** - * Unsubscribe Block List. - * @param aStatus Request status of the caller - */ - void UnsubscribeBlockListL( TRequestStatus& aStatus ); - - /** - * Create entity's own group - * InitializeXdmL or InitilaizeXdmsOnlyL must be called before this method. - * @param aName group name - * @param aDisplayName group's display name - */ - void CreateEntityGroupL( - const TDesC& aName, - const TDesC& aDisplayName ); - - /** - * Delete entity's own group - * InitializeXdmL or InitilaizeXdmsOnlyL must be called before this method. - */ - void DeleteEntityGroupL( const TDesC& aName ); - - /** - * Add group member - * InitializeXdmL or InitilaizeXdmsOnlyL must be called before this method. - * @param aGroup group name - * @param aUser member - * @param aDispName display name - * @param aStatus Request status of the caller - */ - void AddPresentityGroupMemberL( - const TDesC& aGroup, - const TDesC& aUser, - const TDesC& aDispName, - TRequestStatus& aStatus ); - - /** - * Remove group member - * InitializeXdmL or InitilaizeXdmsOnlyL must be called before this method. - * @param aGroup group name - * @param aUser member - * @param aStatus Request status of the caller - */ - void RemovePresentityGroupMemberL( - const TDesC& aGroup, - const TDesC& aUser, - TRequestStatus& aStatus ); - - /** - * GetUserListsL - * InitializeXdmL or InitilaizeXdmsOnlyL must be called before this method. - * The size of the parameter arrays are same. - * @param aIds sip id array [OUT] - * @param aDispNames display name array [OUT] - */ - void GetUserListsL( CDesCArrayFlat& aIds, CDesCArrayFlat& aDispNames ); - - /** - * GetEntitiesInListL - * InitializeXdmL or InitilaizeXdmsOnlyL must be called before this method. - * The size of the parameter arrays are same. - * @param aList naem of the user's list [IN] - * @param aIds sip id array [OUT] - * @param aDispNames display name array [OUT] - */ - void GetEntitiesInListL( - const TDesC& aList, CPtrCArray& aIds, CPtrCArray& aDispNames); - - /** - * Updates XDM reource lists into server - * @param aStatus Request status of the caller - */ - void CommitXdmL( TRequestStatus& aStatus ); - - /** - * Updates RLS reource lists into server - * @param aStatus Request status of the caller - */ - void CommitRlsL( TRequestStatus& aStatus ); - - /** - * Test Suite setter - * @param aObs test observer, may be NULL - */ - void SetTestObserver( MSimplePluginTestObs* aObs ); - - /** - * Generate RLS document URI based on URI template located in CentRep variation definition. - * @param aGroup grouup name - * @param aPresentityUri presntity's URI, may be SIP or TEL URI. Domain part is stripped from SIP URI. - * @param aDomain domain part of the URI, - Leading '@' is stripped off and it must be hard coded in a template when needed. - * @return RLS document URI - */ - HBufC16* CreateRlsDocumentUri16LC( - const TDesC16& aGroup, - const TDesC16& aPresentityUri, - const TDesC16& aDomain ); - -private: - - CSimplePluginXdmUtils( - MSimplePluginSettings& aObs, TInt aXdmId ); - - void ConstructL( ); - - TBool DoesUserListExistsL( const TDesC& aName ); - - -public: - -// from base class MRLSPresXDMAsyncHandler - - /** - * Defined in a base class - */ - void HandleRLSUpdateDocumentL(TInt aErrorCode); - - /** - * Defined in a base class - */ - void HandleRLSUpdateCancelL(TInt aErrorCode); - - /** - * Defined in a base class - */ - void HandleRLSDeleteAllEmptyListsL(TInt aErrorCode); - - /** - * Defined in a base class - */ - void HandlePresUpdateDocumentL(TInt aErrorCode); - - /** - * Defined in a base class - */ - void HandlePresUpdateCancelL(TInt aErrorCode); - - - -protected: - -// from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - -private: - - /** - * Complete client request - * @param aStatus return code - */ - void CompleteClientReq( TInt aStatus ); - - /** - * Get XDm OMA lists from a server - */ - void GetXdmOMAListsL(); - - /** - * Create OMA Shared Xdm Lists when needed. - * @return true if a list is created. - */ - TBool CreateXdmOMAListsIfNeededL( ); - - /** - * Create a specified OMA Shared Xdm List when needed. - * - * @param aRoot parent for the new list - * @param aName name for the new list - * Leave with KErrAlreadyExists if all the lists already exist. - * @return true is list was added into root node. - */ - TBool CreateXdmOMAListIfNeededL( CXdmDocumentNode* aRoot, const TDesC& aName ); - - /** - * Create Resource List in shared xdm document - * @param aParent parent for the new list - * @param aName name for the new list - */ - void CreateResourceListL( - CXdmDocumentNode* aParent, const TDesC& aName ); - - /** - * Search List under a parent list, one level only - * @param aParent parent list node - * @param aName list to be searched for - * @return child node found or NULL if not found. - */ - CXdmDocumentNode* SearchListUnderParentL( - CXdmDocumentNode* aParent, const TDesC& aName ); - - void GetXdmRulesL(); - - /** - * Make Rls list URI - * @param aXCapUri XCAP URI - * @param aListName a list to be referred - * @return URI, ownerhisp is transferred - */ - HBufC* MakeRlsUriL( - const TDesC& aXcapUri, const TDesC& aListName ); - - /** - * Make Rls list URI - * @param aXCapUri XCAP URI - * @param aListName a list to be referred - * @return URI, ownerhisp is transferred - */ - HBufC* MakeRlsBuddyUriL( - const TDesC& aXcapUri, const TDesC& aListName ); - - void MakeInitialXdmsDocumentL(); - - /** - * Updates XDM rules into server - */ - void UpdateXdmRulesL(); - - /** - * Updates XDMS reource lists into server - */ - void UpdateXdmsL(); - - /** - * Updates RLS document into server - */ - void UpdateRlsL(); - - /** - * Handles pres auth rules document callback method - * @param aErrorCode returned error code - */ - void DoHandlePresUpdateDocumentL( TInt aErrorCode ); - - /** - * Handles RLS document callback method - * @param aErrorCode returned error code - */ - void DoHandleRLSUpdateDocumentL(TInt aErrorCode); - - void DoAddUserToListL( - const TDesC& aList, const TDesC& aName ); - - void DoAddUserToUserListL( - const TDesC& aList, const TDesC& aUser, const TDesC& aDispName ); - - void DoAddListIntoGrantRuleL( const TDesC& aListUri ); - - void DoRemoveListFromGrantRuleL( const TDesC& aListUri ); - - void DoRemoveUserFromListL( - const TDesC& aList, const TDesC& aName ); - - void DoRemoveUserFromUserListL( const TDesC& aList, const TDesC& aUser ); - - void DoGrantForAllL(); - - void DoWithdrawFromAllL(); - - void DoSetReactiveAuthL(); - - /** - * Set Proactive authorization - */ - void DoSetProactiveAuthL(); - - void DoGetListMembersL( - const TDesC& aList, CPtrCArray& aMembers ); - - void DoCreateEntityGroupL( const TDesC& aList, const TDesC& aDisName ); - - void DoDeleteEntityGroupL( const TDesC& aList ); - - /** - * Search OMA Buddy List - * Leaves with KErrNotFound if not found - * @return list node - */ - CXdmDocumentNode* DoGetBuddyListL(); - - /** - * Search a specific user XDM list - * Leaves with KErrNotFound if not found - * @param aList list name - * @param aBuddyList parent buddy list - * @return list node - */ - CXdmDocumentNode* DoGetUserListL( - const TDesC& aList, CXdmDocumentNode* aBuddyList ); - - /** - * Remove service URI in RLS document by corresponding shared XDM document entry. - * FetchRlsL must be called before this method. - * @param aResourceList resource-list entry value, a reference to Shared XDM document. - * @return ETrue if service is found and removed. - */ - TBool DoRemoveRlsServiceByResourceListL( const TDesC& aResourceList ); - - /** - * Access service URI in RLS document by corresponding shared XDM document entry. - * FetchRlsL must be called before this method. - * @param aResourceList resource-list entry value, a reference to Shared XDM document. - * @return service URI, ownership is transferred. - */ - HBufC* DoGetRlsServiceByResourceListL( const TDesC& aResourceList ); - - /** - * Accesor for iAuxBuffer that contains last negotiated RLS service URI - * @return buffer content - */ - TPtrC AuxBuffer(); - - /** - * Run next XDM routines - * @param aOrigState original XDM state - * @param aStatus error status - */ - void DoXdmRunL( TPluginXdmState aOrigState, TInt aStatus ); - - /** - * Handle RLS service URI negatioation - */ - void RlsServiceUriNegotiationL(); - - /** - * Make default auth rule - * @param aRuleId Rule id - * @param aAction action class initialized - * @param aTransform transform class initialized - */ - void MakeDefaultRuleL( - TDes& aRuleId, - TPresenceActionXDM& aAction, - TPresenceTransformXDM& aTransform, - TPresCondMisc& aMisc ); - - /** - * Replace Group tag in URI - * @param aBuf URI buffer [IN,OUT] - * @param aGroup Group name - */ - static void ReplaceGroupTag( HBufC16* aBuf, const TDesC16& aGroup ); - - /** - * Replace Domain tag in URI - * @param aBuf URI buffer [IN,OUT] - * @param aDomain Domain value - */ - static void ReplaceDomainTag( HBufC16* aBuf, const TDesC16& aDomain ); - - /** - * Replace User tag in URI - * @param aBuf URI buffer [IN,OUT] - * @param aPresentityUri User URI value - */ - static void ReplaceUserTag( - HBufC16* aBuf, const TDesC16& aPresentityUri ); - - -private: // Data - - /** - * PrFw Plugin connection observer - */ - MSimplePluginSettings& iConnSets; - - /** - * XDM Settings id - */ - TInt iSettingsId; - - /** - * Simple Engine request id - */ - TInt iSimpleId; - - /** - * Subscribed items. Bitmask. - */ - TUint iSubscribed; - - /** - * Presence XDM Client - * Own. - */ - CPresenceXDM* iPresenceXdm; - - /** - * RlsXDM Client - * Own. - */ - CRLSXDM* iRlsXdm; - - /** - * XDM Engine - * Own. - */ - CXdmEngine* iXdmEngine; - - /** - * XDM document for resource-lists - * Own. - */ - CXdmDocument* iXdmDoc; - - /** - * Current state - */ - TPluginXdmState iXdmState; - - /** - * Current operation - */ - TPluginXdmOperation iOperation; - - /** - * Whether Presence XDM is up-to-date - */ - TBool iPresXdmOk; - - /** - * Whether XDM is up-to-date - */ - TBool iXdmOk; - - /** - * client statutus. - * Not own. - */ - TRequestStatus* iClientStatus; - - /** - * Test suite observer - * Not own. - */ - MSimplePluginTestObs* iTestObs; - - /** - * Auxiliary buffer for for Negotiated RLS service URI - */ - HBufC* iAuxBuffer; - - /** - * Auxiliary buffer for for Negotiated RLS service URI - */ - HBufC* iAuxBuffer2; - - }; - - - -#endif // CSimplePluginXdmUtils_H diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/rom/presencefwsimpleadpt.iby --- a/presencefwsimpleadpt/rom/presencefwsimpleadpt.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* -* Copyright (c) 2007 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: Image description file for SIMPLE Adaptation -* -*/ - - - - -#ifndef PRESENCEFW_SIMPLE_IBY -#define PRESENCEFW_SIMPLE_IBY - -#ifdef __PRESENCE_FRAMEWORK -#ifdef __SIP_SIMPLE_PRESENCE_PROTOCOL - -#include - -// Presence ECOM plugin -ECOM_PLUGIN( simpleplugin.dll, simpleplugin.rss ) - -// stub SIS, provides support for SIS upgrading -data=DATAZ_/system/install/presencefwsimpleadptstub.sis system/install/presencefwsimpleadptstub.sis - -#endif // __SIP_SIMPLE_PRESENCE_PROTOCOL -#endif // __PRESENCE_FRAMEWORK - -#endif // PRESENCEFW_SIMPLE_IBY diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simpleplugin.cpp --- a/presencefwsimpleadpt/src/simpleplugin.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,214 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include - -#include -#include -#include -#include -#include - -#include "simpleplugin.h" -#include "simpleplugindef.h" -#include "simplepluginconnection.h" - - - -// ======== MEMBER FUNCTIONS ======== - - -// --------------------------------------------------------------------------- -// Key value pair table to identify correct constructor -// function for the requested interface. -// --------------------------------------------------------------------------- -// -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY( K_SIMPLEPLUGIN_1_IMPLEMENTATION_UID, CSimplePlugin::NewL ) - }; - -// --------------------------------------------------------------------------- -// Exported function to return the implementation proxy table -// --------------------------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - return ImplementationTable; - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::CSimplePlugin() -// --------------------------------------------------------------------------- -// -CSimplePlugin::CSimplePlugin() - { - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::ConstructL() -// --------------------------------------------------------------------------- -// -void CSimplePlugin::ConstructL() - { - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::NewLC() -// --------------------------------------------------------------------------- -// -CSimplePlugin* CSimplePlugin::NewLC() - { - CSimplePlugin* self = new( ELeave ) CSimplePlugin(); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::NewL() -// --------------------------------------------------------------------------- -// -CSimplePlugin* CSimplePlugin::NewL() - { - CSimplePlugin* self = CSimplePlugin::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::~CSimplePlugin() -// --------------------------------------------------------------------------- -// -CSimplePlugin::~CSimplePlugin() - { - iConnections.ResetAndDestroy(); - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::PrimeHost() -// --------------------------------------------------------------------------- -// -void CSimplePlugin::PrimeHost( MXIMPProtocolPluginHost& aHost ) - { - iHost = &aHost; - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::AcquireConnectionL() -// --------------------------------------------------------------------------- -// -MXIMPProtocolConnection& CSimplePlugin::AcquireConnectionL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aContextClient ) - { - - // TODO: singleton takes place here. Change name to CSimplePluginImp??? - // CSimplePluginConnection reflects to Singleton. This should compare PresenceID - // and share a single entity with identical ids.HOW DOES PrFW work in this case??? - - // support multiple connections - // always create a new connection - no connection sharing, it takes place in SIP Stack. - CSimplePluginConnection* connection = - CSimplePluginConnection::NewL( aServiceInfo, aContextClient ); - CleanupStack::PushL( connection ); - iConnections.AppendL( connection ); - CleanupStack::Pop( connection ); - return *connection; - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::ReleaseConnection() -// --------------------------------------------------------------------------- -// -void CSimplePlugin::ReleaseConnection( MXIMPProtocolConnection& aConnection ) - { - TInt connectionsCount = iConnections.Count(); - - for( TInt i( connectionsCount - 1 ); i >= 0; i-- ) - { - MXIMPProtocolConnection* tmp = iConnections[i]; - if( tmp == &aConnection ) - { - delete iConnections[i]; - iConnections.Remove( i ); - } - } - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CSimplePlugin::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - MXIMPProtocolPlugin* myIf = this; - return myIf; - } - if( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::GetInterface() -// --------------------------------------------------------------------------- -// -const TAny* CSimplePlugin::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - const MXIMPProtocolPlugin* myIf = this; - return myIf; - } - if( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePlugin::GetInterfaceId() -// --------------------------------------------------------------------------- -// -TInt32 CSimplePlugin::GetInterfaceId() const - { - return MXIMPProtocolPlugin::KInterfaceId; - } - - - - - -// End of file - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simplepluginauthorization.cpp --- a/presencefwsimpleadpt/src/simplepluginauthorization.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1071 +0,0 @@ -/* -* Copyright (c) 2007 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "simplepluginauthorization.h" -#include "simpleplugindebugutils.h" -#include "simplepluginwinfo.h" -#include "simplepluginxdmutils.h" -#include "simpleplugincommon.h" -#include "simplepluginconnection.h" - -/** - The design is the following one - - 1. DoGrantPresenceForEveryOneL - modify default rule to ALLOW. - - 2. DoWithdrawPresenceFromEveryOneL - if current rule is ALLOW then - { BLOCK } - otherwise no action. - - 3. DoSubscribePresenceGrantRequestListL - modify default rule to CONFIRM. - - 4. DoUnsubscribePresenceGrantRequestListL - if current rule is CONFIRM then - { go to ALLOW } - otherwise no action. -*/ - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::CSimplePluginAuthorization -// --------------------------------------------------------------------------- -// -CSimplePluginAuthorization::CSimplePluginAuthorization( - MSimplePluginConnectionObs& aObs ) -: CActive( CActive::EPriorityStandard ), - iConnObs(aObs), - iOperation(ENoOperation), - iXdmOk(EFalse), iDefRule(ERuleDef), iWinfoSubs( EFalse ) - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::ConstructL( ) - { - - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginAuthorization* CSimplePluginAuthorization::NewL( - MSimplePluginConnectionObs& aObs ) - { - CSimplePluginAuthorization* self = - new( ELeave ) CSimplePluginAuthorization( aObs ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: NewL this=%d"), (TInt)self ); -#endif - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::~CSimplePluginAuthorization -// --------------------------------------------------------------------------- -// -CSimplePluginAuthorization::~CSimplePluginAuthorization() - { - delete iPresIdentity; - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::SetDataHost -// We assume that this method is given by PrFw right after -// constrcution. -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::SetDataHost( - MProtocolPresenceAuthorizationDataHost& aDataHost ) - { - iDataHost = &aDataHost; - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::WinfoTerminatedL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::WinfoTerminatedL( TInt /*aReason*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: WinfoTerminatedL") ); -#endif - - if ( iWinfoSubs ) - { - MXIMPDataSubscriptionState* myState = iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC(); - // Notice: consider error codes - myStatus->SetResultCode( KErrCompletion ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - - // parameters' OWNERSHIP is taken - iDataHost->SetPresenceGrantRequestDataSubscriptionStateL( - myState, - myStatus ); - - iWinfoSubs = EFalse; - - CleanupStack::Pop( /*myStatus*/ ); - CleanupStack::Pop( /*myState*/ ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoSubscribePresenceGrantRequestListL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoSubscribePresenceGrantRequestListL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoSubscribePresenceGrantRequestListL")); -#endif - - /* - This means Reactive authorization, i.e. modify default rule as CONFIRM. - Also this starts the WINFO subscription. - - Once the authorization request is received the - MProtocolPresenceAuthorizationDataHost::HandlePresenceGrantRequestReceivedL shall - be called in the host API. - - First make the watcher list SIP subscription and after that is completed - in HandleIfMine then continue and modify XDMS authentication rule. - HandleIfMine can be called also immediately if there already exists an WINFO subscrption. - */ - - iOperation = ESubscribePresenceGrantRequestList; - iPrFwId = aReqId; - TRAPD( err, iConnObs.WinfoHandlerL()->SubscribeWinfoListL( aReqId )); - if ( err ) - { - iOperation = ENoOperation; - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - else - { - iWinfoSubs = ETrue; - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoUnsubscribePresenceGrantRequestListL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoUnsubscribePresenceGrantRequestListL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoUnsubscribePresenceGrantRequestListL TEST COVERS 4")); -#endif - - // First modify XDMS authentication rule and then unsubscribe - // SIP watcher list subscription. - TRAPD( err, DoStartXdmOperationL( aReqId, EUnsubscribePresenceGrantRequestList )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - iPrFwId = aReqId; - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoGrantPresenceForPresentityL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoGrantPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& /*aPif*/, // notice: pif not supported - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoGrantPresenceForPresentityL")); -#endif - StartXdmOperationL( aPresentityId, aReqId, EGrantPresenceForPresentity ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoUpdatePresenceGrantPifForPresentityL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoUpdatePresenceGrantPifForPresentityL( - const MXIMPIdentity& /*aPresentityId*/, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoUpdatePresenceGrantPifForPresentityL")); -#endif - // Notice: aPif filter not supported. - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoWithdrawPresenceGrantFromPresentityL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoWithdrawPresenceGrantFromPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoWithdrawPresenceGrantFromPresentityL")); -#endif - StartXdmOperationL( aPresentityId, aReqId, EWithdrawFromPresentity ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoGrantPresenceForPresentityGroupMembersL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoGrantPresenceForPresentityGroupMembersL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoGrantPresenceForPresentityGroupMembersL")); -#endif - StartXdmOperationL( aGroupId, aReqId, EGrantPresenceForPresentityGroupMembers ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoUpdatePresenceGrantPifForPresentityGroupMembersL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoUpdatePresenceGrantPifForPresentityGroupMembersL( - const MXIMPIdentity& /*aGroupId*/, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoUpdatePresenceGrantPifForPresentityGroupMembersL")); -#endif - // Notice: aPif filter not supported - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoWithdrawPresenceGrantFromPresentityGroupMembersL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoWithdrawPresenceGrantFromPresentityGroupMembersL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoWithdrawPresenceGrantFromPresentityGroupMembersL")); -#endif - StartXdmOperationL( aGroupId, aReqId, EWithdrawFromGroupMembers ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoGrantPresenceForEveryoneL() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoGrantPresenceForEveryoneL( - const MPresenceInfoFilter& /*aPif*/, // // Notice: aPif filter not supported - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoGrantPresenceForEveryoneL")); -#endif - MXIMPIdentity* nobody = iConnObs.ObjectFactory().NewIdentityLC(); // << nobody - StartXdmOperationL( *nobody, aReqId, EGrantForEveryone ); - CleanupStack::PopAndDestroy( ); // >> nobody - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoUpdatePresenceGrantPifForEveryoneL() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoUpdatePresenceGrantPifForEveryoneL( - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoUpdatePresenceGrantPifForEveryoneL")); -#endif - // Notice: aPif filter not supported - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoWithdrawPresenceGrantFromEveryoneL() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoWithdrawPresenceGrantFromEveryoneL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoWithdrawPresenceGrantFromEveryoneL")); -#endif - MXIMPIdentity* nobody = iConnObs.ObjectFactory().NewIdentityLC(); // << nobody - StartXdmOperationL( *nobody, aReqId, EWithdrawFromEveryone ); - CleanupStack::PopAndDestroy( ); // >> nobody - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoSubscribePresenceBlockListL() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoSubscribePresenceBlockListL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoSubscribePresenceBlockListL")); -#endif - MXIMPIdentity* nobody = iConnObs.ObjectFactory().NewIdentityLC(); // << nobody - StartXdmOperationL( *nobody, aReqId, ESubscribeBlockList ); - CleanupStack::PopAndDestroy( ); // >> nobody - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoUnsubscribePresenceBlockListL() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoUnsubscribePresenceBlockListL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoUnsubscribePresenceBlockListL")); -#endif - MXIMPIdentity* nobody = iConnObs.ObjectFactory().NewIdentityLC(); // << nobody - StartXdmOperationL( *nobody, aReqId, EUnsubscribeBlockList ); - CleanupStack::PopAndDestroy( ); // >> nobody - } - -// Blocking presence information access from single presentities - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoBlockPresenceForPresentityL() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoBlockPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoBlockPresenceForPresentityL")); -#endif - StartXdmOperationL( aPresentityId, aReqId, EBlockPresentity ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoCancelPresenceBlockFromPresentityL() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoCancelPresenceBlockFromPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: DoCancelPresenceBlockFromPresentityL")); -#endif - StartXdmOperationL( aPresentityId, aReqId, EUnblockPresentity ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoCancel() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoCancel( ) - { - iXdmUtils->Cancel(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::RunL() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::RunL( ) - { - TInt myStatus = iStatus.Int(); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: RunL %d"), myStatus ); -#endif - - if ( iOperation == EUnsubscribePresenceGrantRequestList && !myStatus ) - { - // unsubscribe watcher list after successful default rule modification. - TRAPD( err, iConnObs.WinfoHandlerL()->UnsubscribeWinfoListL( iPrFwId )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - else - { - // This will end to HandleIfMine. - } - } - else if ( !iXdmOk && !myStatus ) - { - iXdmOk = ETrue; - CallActualXdmOperationL(); - } - else // iXdmOK or myStatus - { - CompletePrFwReq( myStatus ); - } - - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::CallActualXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::CallActualXdmOperationL() - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: CallActualXdmOperationL") ); -#endif - switch ( iOperation ) - { - case EGrantPresenceForPresentity: - // iPresIdentity can't be null in this case - iXdmUtils->AddEntityToGrantedL( iPresIdentity->Des(), iStatus ); - SetActive(); - break; - case EWithdrawFromPresentity: - // iPresIdentity can't be null in this case - iXdmUtils->RemoveEntityFromGrantedL( iPresIdentity->Des(),iStatus ); - SetActive(); - break; - case EGrantPresenceForPresentityGroupMembers: - // iPresIdentity can't be null in this case - iXdmUtils->AddGroupToGrantedL( iPresIdentity->Des(), iStatus ); - SetActive(); - break; - case EWithdrawFromGroupMembers: - // iPresIdentity can't be null in this case - iXdmUtils->RemoveGroupFromGrantedL( iPresIdentity->Des(), iStatus ); - SetActive(); - break; - case EGrantForEveryone: - iXdmUtils->GrantForEveryoneL( iStatus ); - SetActive(); - break; - case EWithdrawFromEveryone: - iXdmUtils->WithdrawFromEveryoneL( iStatus ); - SetActive(); - break; - case ESubscribeBlockList: - HandleSubscribeBlockListL(); - break; - case EUnsubscribeBlockList: - iXdmUtils->UnsubscribeBlockListL( iStatus ); - SetActive(); - break; - case EBlockPresentity: - // iPresIdentity can't be null in this case - iXdmUtils->AddEntityToBlockedL( iPresIdentity->Des(), iStatus ); - SetActive(); - break; - case EUnblockPresentity: - // iPresIdentity can't be null in this case - iXdmUtils->RemoveEntityFromBlockedL( iPresIdentity->Des(), iStatus ); - SetActive(); - break; - case ESubscribePresenceGrantRequestList: - iXdmUtils->SetReactiveAuthL( iStatus ); - SetActive(); - break; - case EUnsubscribePresenceGrantRequestList: - default: - iXdmUtils->SetProactiveAuthL( iStatus ); - SetActive(); - break; - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::CopyBlockersToArrayL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::CopyBlockersToArrayL( - CPtrCArray& aBlockers, RPointerArray& aBlockedSouls ) - { - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - - aBlockedSouls.Reset(); - - TInt nodeCount = aBlockers.Count(); - for ( TInt i = 0; i < nodeCount; i++ ) - { - MXIMPIdentity* entity = myFactory.NewIdentityLC(); // << entity - entity->SetIdentityL( aBlockers[i] ); - aBlockedSouls.AppendL( entity ); - CleanupStack::Pop(); // >> entity - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::RunError -// --------------------------------------------------------------------------- -// -TInt CSimplePluginAuthorization::RunError( TInt aError ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: RunError %d"), aError ); -#endif - // complete the open request - CompletePrFwReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CSimplePluginAuthorization::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - MProtocolPresenceAuthorization* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::GetInterface() -// --------------------------------------------------------------------------- -// -const TAny* CSimplePluginAuthorization::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - const MProtocolPresenceAuthorization* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::GetInterfaceId() -// --------------------------------------------------------------------------- -// -TInt32 CSimplePluginAuthorization::GetInterfaceId() const - { - return MProtocolPresenceAuthorization::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::SetPresIdentityL() -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::SetPresIdentityL( - const MXIMPIdentity& aPresentityId ) - { - delete iPresIdentity; - iPresIdentity = NULL; - iPresIdentity = aPresentityId.Identity().AllocL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::WinfoNotificationL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::WinfoNotificationL( - MSimpleWinfo& aWinfo ) - { - if ( !iWinfoSubs ) - { - return; - } -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: WinfoNotificationL starts")); -#endif - - using namespace NSimplePlugin::NSimpleOma; - - RPointerArray elems; - CleanupClosePushL( elems ); - TInt err = aWinfo.SimpleElementsL( elems ); - User::LeaveIfError( err ); - TInt count = elems.Count(); - - if ( !count ) - { - // stop parsing empty notification - User::Leave( KErrArgument ); - } - - __ASSERT_DEBUG( count == 1, User::Leave( KErrCorrupt ) ); - - const TDesC8* stateVal = aWinfo.AttrValue( KSimpleState8 ); - if ( stateVal && !stateVal->CompareF( KSimpleFull8 )) - { - // Call full list method - HandleFullWinfoNotificationL( aWinfo ); - } - else - { - // Indicate changes in WINFO list one by one. - HandlePartialWinfoNotificationL( aWinfo ); - } - CleanupStack::PopAndDestroy( &elems ); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: WinfoNotificationL ends")); -#endif - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::StartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginAuthOperation aOperation ) - { - TRAPD( err, DoStartXdmOperationL(aId, aReqId, aOperation )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoStartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoStartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginAuthOperation aOperation ) - { - SetPresIdentityL( aId ); - DoStartXdmOperationL( aReqId, aOperation ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::DoStartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::DoStartXdmOperationL( - TXIMPRequestId aReqId, - TPluginAuthOperation aOperation ) - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - iPrFwId = aReqId; - iOperation = aOperation; - if ( !iXdmUtils ) - { - iXdmUtils = iConnObs.XdmUtilsL(); - } - if ( iXdmOk ) - { - CallActualXdmOperationL(); - } - else - { - iXdmUtils->InitializeXdmL( iStatus ); - SetActive(); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::HandleFullWinfoNotificationL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::HandleFullWinfoNotificationL( - MSimpleWinfo& aWinfo ) - { - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: HandleFullWinfoNotificationL starts")); -#endif - - // Search for pending watchers and call HandlePresenceGrantRequestListL - using namespace NSimplePlugin::NSimpleOma; - - RPointerArray elems; - CleanupClosePushL( elems ); - TInt err = aWinfo.SimpleElementsL( elems ); - User::LeaveIfError( err ); - TInt count = elems.Count(); - - MSimpleElement* elem = elems[0]; - TPtrC8 p8 = elem->LocalName(); - err = p8.CompareF( KSimpleWatcherList8 ); - User::LeaveIfError( err ); - - err = elem->SimpleElementsL( elems ); - User::LeaveIfError( err ); - count = elems.Count(); - - // Search watchers who are pending (status = pending) - HBufC* nodeContent = NULL; - MXIMPObjectCollection *pendings = iConnObs.ObjectFactory().NewObjectCollectionLC(); - - TBool pendingFound(EFalse); - - for ( TInt i = 0; i < count; i++ ) - { - elem = elems[i]; - p8.Set( elem->LocalName()); - if (!( p8.CompareF( KSimpleWatcher8 ))) - { - const TDesC8* pp8 = elem->AttrValue( KSimpleStatus8 ); - if ( pp8 && !pp8->CompareF( KSimplePending8 )) - { - // Build collection of grant requests - // Find the child node containing the SIP entity - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - // create the collection entry here - MPresenceGrantRequestInfo* grInfo = - iConnObs.PresenceObjectFactory().NewPresenceGrantRequestInfoLC(); - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); - identity->SetIdentityL( nodeContent->Des()); - grInfo->SetRequestorIdL( identity ); // ownership is taken - CleanupStack::Pop( ); // identity -#ifdef _DEBUG - TBuf<200> debug_buffer; - debug_buffer = nodeContent->Des(); - PluginLogger::Log( - _L("PluginAuth: add pending into collection: %S"), &debug_buffer ); -#endif - pendings->AddObjectL( grInfo ); // ownership is taken - CleanupStack::Pop( ); // grInfo - pendingFound = ETrue; - CleanupStack::PopAndDestroy( nodeContent ); - } - } - } - - if ( pendingFound ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: callback HandlePresenceGrantRequestListL")); -#endif - iPrFwIdOwn = iDataHost->HandlePresenceGrantRequestListL( pendings ); - CleanupStack::Pop(); // >> pendings - } - else - { - CleanupStack::PopAndDestroy( ); // >> pendings - } - - CleanupStack::PopAndDestroy( &elems ); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: HandleFullWinfoNotificationL ends")); -#endif - - /* example: - - - - - sip:watcherA@example.com" - - */ - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::HandlePartialWinfoNotificationL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::HandlePartialWinfoNotificationL( - MSimpleWinfo& aWinfo ) - { - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: HandlePartialWinfoNotificationL starts")); -#endif - - using namespace NSimplePlugin::NSimpleOma; - - RPointerArray elems; - CleanupClosePushL( elems ); - TInt err = aWinfo.SimpleElementsL( elems ); - User::LeaveIfError( err ); - TInt count = elems.Count(); - - MSimpleElement* elem = elems[0]; - TPtrC8 p8 = elem->LocalName(); - err = p8.CompareF( KSimpleWatcherList8 ); - User::LeaveIfError( err ); - - err = elem->SimpleElementsL( elems ); - User::LeaveIfError( err ); - count = elems.Count(); - - HBufC* nodeContent = NULL; - - for ( TInt i = 0; i < count; i++ ) - { - elem = elems[i]; - p8.Set( elem->LocalName()); - if (!( p8.CompareF( KSimpleWatcher8 ))) - { - const TDesC8* pp8 = elem->AttrValue( KSimpleStatus8 ); - if ( pp8 && !pp8->CompareF( KSimplePending8 )) - { - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - CallHandlePresenceGrantRequestReceivedL( nodeContent->Des() ); - CleanupStack::PopAndDestroy( nodeContent ); - } - else if ( pp8 && !pp8->CompareF( KSimpleTerminated8 )) - { - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - CallHandlePresenceGrantRequestObsoletedL( nodeContent->Des() ); - CleanupStack::PopAndDestroy( nodeContent ); - } - } - } - CleanupStack::PopAndDestroy( &elems ); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: HandlePartialWinfoNotificationL ends")); -#endif - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::CallHandlePresenceGrantRequestReceivedL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::CallHandlePresenceGrantRequestReceivedL( - const TDesC& aUserId ) - { - // create the collection entry here - MPresenceGrantRequestInfo* grInfo = - iConnObs.PresenceObjectFactory().NewPresenceGrantRequestInfoLC(); // +grInfo - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); // +identity - identity->SetIdentityL( aUserId ); - grInfo->SetRequestorIdL( identity ); // ownership is taken - CleanupStack::Pop( ); // -identity -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: callback HandlePresenceGrantRequestReceivedL")); -#endif - iPrFwIdOwn = iDataHost->HandlePresenceGrantRequestReceivedL( grInfo ); // ownership is taken - CleanupStack::Pop( ); // -grInfo - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::CallHandlePresenceGrantRequestObsoletedL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::CallHandlePresenceGrantRequestObsoletedL( - const TDesC& aUserId) - { - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); - identity->SetIdentityL( aUserId ); -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: callback HandlePresenceGrantRequestObsoletedL")); -#endif - iPrFwIdOwn = iDataHost->HandlePresenceGrantRequestObsoletedL( identity); // ownership is taken - CleanupStack::Pop( ); // >> identity - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::HandleSubscribeBlockListL -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::HandleSubscribeBlockListL() - { - RPointerArray blockedSouls; - CleanupClosePushL( blockedSouls ); - - const TInt KMyGran = 10; - CPtrCArray* blockers = new (ELeave) CPtrCArray( KMyGran ); - CleanupStack::PushL( blockers ); // << blockers - - iXdmUtils->SubscribeBlockListL( *blockers ); - - CopyBlockersToArrayL( *blockers, blockedSouls ); - - CleanupStack::PopAndDestroy( blockers ); - - MXIMPObjectCollection* coll = - iConnObs.ObjectFactory().NewObjectCollectionLC(); // << coll - TInt count = blockedSouls.Count(); - for ( TInt i = count-1; i >= 0; i-- ) - { - MXIMPIdentity* currId = blockedSouls[i]; - MPresenceBlockInfo* bInfo = iConnObs.PresenceObjectFactory().NewPresenceBlockInfoLC(); - bInfo->SetBlockedEntityIdL( currId ); // ownership is taken - bInfo->SetBlockedEntityDisplayNameL( currId->Identity() ); - blockedSouls.Remove( i ); - coll->AddObjectL( bInfo ); // ownership is taken - CleanupStack::Pop(); // >> bInfo - } - CompletePrFwReq( KErrNone ); -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuth: callback HandlePresenceBlockListL")); -#endif - // Callback for subscription result - iDataHost->HandlePresenceBlockListL( coll ); - - CleanupStack::Pop(); // >> coll - CleanupStack::PopAndDestroy( &blockedSouls ); - - // Callback for subscription state (terminated). - MXIMPDataSubscriptionState* myState = iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC(); - // Notice: consider error codes - myStatus->SetResultCode( KErrNone ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: callback SetPresenceBlockDataSubscriptionStateL")); -#endif - iDataHost->SetPresenceBlockDataSubscriptionStateL( - myState, myStatus ); - CleanupStack::Pop( 2 ); // >> myState, myStatus - - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::CompletePrFwReq -// --------------------------------------------------------------------------- -// -void CSimplePluginAuthorization::CompletePrFwReq( TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: CompletePrFwReq status=%d"), aStatus ); -#endif - iOperation = ENoOperation; - iConnObs.CompleteReq( iPrFwId, aStatus ); - iPrFwId = TXIMPRequestId(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginAuthorization::HandleIfMine -// --------------------------------------------------------------------------- -// -TBool CSimplePluginAuthorization::HandleIfMine( TXIMPRequestId aReqId, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: HandleIfMine aStatus=%d iOper=%d"), aStatus, iOperation); -#endif - TInt err = KErrNone; - TBool ret = EFalse; - - // We check wheter the request is made by this entity. - if ( iPrFwId != aReqId ) - { - // Nothing to do, request was not orginated by this entity. - } - else - { - if ( !aStatus ) - { - switch ( iOperation ) - { - case ESubscribePresenceGrantRequestList: - // Modify rule to CONFIRM -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: HandleIfMine TEST COVERS 7")); -#endif - TRAP( err, DoStartXdmOperationL( aReqId, iOperation )); - err = CSimplePluginConnection::HarmonizeErrorCode( err ); - ret = ETrue; - break; - // In UnsubscribePresenceGrantRequestList case the rule modifcation - // has been made first before SIP unsubscribe operation. - case EUnsubscribePresenceGrantRequestList: - default: - iWinfoSubs = EFalse; - break; - } - } - else - { - CompletePrFwReq( err ); - ret = ETrue; - } - if ( err ) - { - CompletePrFwReq( err ); - ret = ETrue; - } - else - { - } - } - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginAuthorization: HandleIfMine returns %d"), ret ); -#endif - return ret; - } - -// End of file - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simplepluginconnection.cpp --- a/presencefwsimpleadpt/src/simplepluginconnection.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,573 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "simplepluginconnection.h" -#include "simplepluginsession.h" -#include "simpleplugindebugutils.h" -#include "simplepluginauthorization.h" -#include "simplepluginwinfo.h" -#include "simplepluginpublisher.h" -#include "simplepluginwatcher.h" -#include "simpleplugingroups.h" -#include "simplepluginxdmutils.h" -#include "simplepluginvariation.h" -#include "msimplepluginconnectionobs.h" -#include "msimplepluginsettings.h" -#include "simpleerrors.h" - -class MXIMPObjectFactory; - -// ======== MEMBER FUNCTIONS ======== - - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CSimplePluginConnection -// --------------------------------------------------------------------------- -// -CSimplePluginConnection::CSimplePluginConnection() -: iSipPresentity(NULL) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginConnection* CSimplePluginConnection::NewL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aClientCtxInfo ) - { - CSimplePluginConnection* self = new( ELeave ) CSimplePluginConnection( ); - CleanupStack::PushL( self ); - self->ConstructL( aServiceInfo, aClientCtxInfo ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::ConstructL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& /* aClientCtxInfo */ ) - { - iSession = CSimplePluginSession::NewL( aServiceInfo, *this ); - - iAuth = CSimplePluginAuthorization::NewL( *this ); - - iPublisher = CSimplePluginPublisher::NewL( - *this, *this, - *iSession->SimpleConnection() ); - - iWatcher = CSimplePluginWatcher::NewL( - *this, *this, - *iSession->SimpleConnection() ); - - iGroups = CSimplePluginGroups::NewL( - *this ); - - iPluginWinfo = CSimplePluginWinfo::NewL( - *this, *(iSession->SimpleConnection())); - - iVariation = CSimplePluginVariation::NewL(); - iVariation->InitL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::~CSimplePluginConnection -// --------------------------------------------------------------------------- -// -CSimplePluginConnection::~CSimplePluginConnection() - { - - delete iSipPresentity; - - delete iVariation; - delete iPluginWinfo; - delete iWatcher; - delete iPublisher; - delete iAuth; - delete iGroups; - delete iSession; - - delete iXdmUtils; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PrimeHost -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::PrimeHost( MXIMPProtocolConnectionHost& aHost ) - { - iConnectionHost = &aHost; - iAuth->SetDataHost( iConnectionHost->ProtocolPresenceDataHost().AuthorizationDataHost() ); - } - - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::ProtocolPresenceFeatures -// --------------------------------------------------------------------------- -// -MProtocolPresenceFeatures& CSimplePluginConnection::ProtocolPresenceFeatures() - { - return *this; - } - -/* - -*/ -// BRANCH 08-06-17 : gronoff -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetProtocolInterface() -// --------------------------------------------------------------------------- -// -TAny* CSimplePluginConnection::GetProtocolInterface( TInt /*aInterfaceId*/ ) - { - return NULL; - } -// BRANCH_END 08-06-17 : gronoff - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresenceWatching -// --------------------------------------------------------------------------- -// -MProtocolPresenceWatching& CSimplePluginConnection::PresenceWatching() - { - return *iWatcher; - } -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresencePublishing -// --------------------------------------------------------------------------- -// -MProtocolPresencePublishing& CSimplePluginConnection::PresencePublishing() - { - return *iPublisher; - } -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresentityGroups -// --------------------------------------------------------------------------- -// -MProtocolPresentityGroups& CSimplePluginConnection::PresentityGroups() - { - return *iGroups; - } -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresenceAuthorization -// --------------------------------------------------------------------------- -// -MProtocolPresenceAuthorization& CSimplePluginConnection::PresenceAuthorization() - { - return *iAuth; - } - - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::OpenSessionL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::OpenSessionL( - const TInt& aSettingsId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: OpenSessionL")); -#endif - iPrFwId = aReqId; - TRAPD( err, iSession->OpenSessionL( aSettingsId )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::OpenSessionL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::OpenSessionL( - const MXIMPContextClientInfo& /*aClientCtxInfo*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: OpenSessionL - error: not supported")); -#endif - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CloseSession -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::CloseSession( - const MXIMPContextClientInfo& /*aClientCtxInfo*/, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CloseSession")); -#endif - iPrFwId = aReqId; - - delete iPluginWinfo; - iPluginWinfo = NULL; - delete iWatcher; - iWatcher = NULL; - delete iPublisher; - iPublisher = NULL; - delete iAuth; - iAuth = NULL; - delete iSession; - iSession = NULL; - delete iGroups; - iGroups = NULL; - delete iXdmUtils; - iXdmUtils = NULL; - - CompleteReq( iPrFwId, KErrNone ); - } -// --------------------------------------------------------------------------- -// CSimplePluginConnection::GetSupportedFeaturesL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::GetSupportedFeaturesL( CDesC8Array& aFeatures ) const - { - // first empty the whole array - aFeatures.Reset(); - using namespace NXIMPFeature::Presence; - aFeatures.AppendL( KPublish ); - aFeatures.AppendL( KFetch ); - aFeatures.AppendL( KSubscribe ); - aFeatures.AppendL( KUnsubscribe ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CompleteReq -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::CompleteReq( TReqType aType, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteReq stat=%d"), aStatus); -#endif - - TInt retVal = HarmonizeErrorCode( aStatus ); - - // Return immediately if PrimeHost() is not called. This is for testing purposes. - if ( !iConnectionHost ) - { - iPrFwId = TXIMPRequestId(); - return; - } - - switch ( aType ) - { - case EOpenSess: -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginConnection: callback HandleRequestCompleted stat=%d"), retVal); - PluginLogger::Log( - _L("PluginConnection: ------------------------------------------------1")); -#endif - iConnectionHost->HandleRequestCompleted( iPrFwId, retVal ); - iPrFwId = TXIMPRequestId(); - break; - default: - break; - }; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CompleteReq -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::CompleteReq( TXIMPRequestId aReqId, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteReq stat=%d"), aStatus); -#endif - - TInt retVal = HarmonizeErrorCode( aStatus ); - - // Return immediately if PrimeHost() is not called. This is for testing purposes. - if ( !iConnectionHost ) - { - return; - } -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginConnection: callback HandleRequestCompleted stat=%d"), retVal); - PluginLogger::Log( - _L("PluginConnection: ------------------------------------------------2")); -#endif - iConnectionHost->HandleRequestCompleted( aReqId, retVal ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CompleteWinfoReq -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::CompleteWinfoReq( TXIMPRequestId aReqId, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteWinfoReq stat=%d"), aStatus); -#endif - - if ( iAuth && iAuth->HandleIfMine( aReqId, aStatus )) - { - // Nothing to do, the request in not complete yet -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteWinfoReq waits ***"), aStatus); -#endif - } - else - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteWinfoReq completes ***"), aStatus); -#endif - CompleteReq( aReqId, aStatus ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::ObjectFactory -// --------------------------------------------------------------------------- -// -MXIMPObjectFactory& CSimplePluginConnection::ObjectFactory() - { - return iConnectionHost->ObjectFactory(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresenceObjectFactory -// --------------------------------------------------------------------------- -// -MPresenceObjectFactory& CSimplePluginConnection::PresenceObjectFactory() - { - return iConnectionHost->ProtocolPresenceDataHost().PresenceObjectFactory(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::Host -// --------------------------------------------------------------------------- -// -MXIMPProtocolConnectionHost* CSimplePluginConnection::Host() - { - return iConnectionHost; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CurrentDomain -// --------------------------------------------------------------------------- -// -TPtrC16 CSimplePluginConnection::CurrentDomain() - { - return iSession->CurrentDomain(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::Variation -// --------------------------------------------------------------------------- -// -CSimplePluginVariation& CSimplePluginConnection::Variation() - { - return *iVariation; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CurrentSipPresentity -// --------------------------------------------------------------------------- -// -TPtrC16 CSimplePluginConnection::CurrentSipPresentity() - { - delete iSipPresentity; - iSipPresentity = NULL; - TRAPD( err, iSipPresentity = HBufC16::NewL( iSession->CurrentSipPresentity().Length() )); - - if ( !err ) - { - iSipPresentity->Des().Copy( iSession->CurrentSipPresentity() ); - return iSipPresentity->Des(); - } - else - { - return TPtrC16(); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CurrentSipPresentit8 -// --------------------------------------------------------------------------- -// -TPtrC8 CSimplePluginConnection::CurrentSipPresentity8() - { - return iSession->CurrentSipPresentity(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::XdmUtilsL -// --------------------------------------------------------------------------- -// -CSimplePluginXdmUtils* CSimplePluginConnection::XdmUtilsL() - { - if ( !iXdmUtils ) - { - iXdmUtils = CSimplePluginXdmUtils::NewL( - *this, iSession->XdmSettingsId() ); - } - return iXdmUtils; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::WinfoHandlerL -// --------------------------------------------------------------------------- -// -CSimplePluginWinfo* CSimplePluginConnection::WinfoHandlerL() - { - if ( !iPluginWinfo ) - { - iPluginWinfo = CSimplePluginWinfo::NewL( - *this, *(iSession->SimpleConnection() )); - } - iPluginWinfo->SetHost( iConnectionHost ); - return iPluginWinfo; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::WinfoTerminatedL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::WinfoTerminatedL( TInt aReason ) - { - // Pass the information to iAuth and iPublisher, - // so that they can call PrFw Plugin Data Host callbacks. - iAuth->WinfoTerminatedL( aReason ); - iPublisher->WinfoTerminatedL( aReason ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::WinfoNotification -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::WinfoNotification( MSimpleWinfo& aWinfo ) - { - TRAP_IGNORE( iPublisher->WinfoNotificationL( aWinfo )); - TRAP_IGNORE( iAuth->WinfoNotificationL( aWinfo )); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::GetInterface -// --------------------------------------------------------------------------- -// -TAny* CSimplePluginConnection::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - MXIMPProtocolConnection* myIf = this; - return myIf; - } - if( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::GetInterface -// --------------------------------------------------------------------------- -// -const TAny* CSimplePluginConnection::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - const MXIMPProtocolConnection* myIf = this; - return myIf; - } - if( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::GetInterfaceId -// --------------------------------------------------------------------------- -// -TInt32 CSimplePluginConnection::GetInterfaceId() const - { - return MXIMPProtocolConnection::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::HarmonizeErrorCode -// --------------------------------------------------------------------------- -// -TInt CSimplePluginConnection::HarmonizeErrorCode( TInt aStatus ) - { - - TInt retVal = aStatus; - - // Convert error codes outsise e32err.h error range into PrFw errors. - - switch ( aStatus ) - { - case KSimpleErrAuthorization: - retVal = KPresenceErrNotEnoughCredits; - break; - case KSimpleErrTimeout: - case KErrTimedOut: - retVal = KXIMPErrServicRequestTimeouted; - break; - default: - { - if ( aStatus < KSimplePluginGeneralErrorLow ) - { - retVal = KXIMPErrServiceGeneralError; - } - } - break; - }; - - return retVal; - } - - -// End of file - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simpleplugindata.cpp --- a/presencefwsimpleadpt/src/simpleplugindata.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,776 +0,0 @@ -/* -* Copyright (c) 2007 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - - -// *** system include files go here: -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "simpleplugindata.h" -#include "simpleplugincommon.h" -#include "simpleplugindebugutils.h" - - -// ---------------------------------------------------------- -// CSimplePluginData::CSimplePluginData -// ---------------------------------------------------------- -// -CSimplePluginData::CSimplePluginData( ) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::~CSimplePluginData -// --------------------------------------------------------------------------- -// -CSimplePluginData::~CSimplePluginData() - { - - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginData* CSimplePluginData::NewL( ) - { - CSimplePluginData* self = CSimplePluginData::NewLC( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::NewLC -// --------------------------------------------------------------------------- -// -CSimplePluginData* CSimplePluginData::NewLC( ) - { - CSimplePluginData* self = new( ELeave ) CSimplePluginData; - CleanupStack::PushL( self ); - self->ConstructL( ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::ConstructL( ) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::NotifyToPrInfoL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::NotifyToPrInfoL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleDocument& aDocument, - MPresenceInfo& aPrInfo ) - { - MPersonPresenceInfo* persInfo = aPresenceFactory.NewPersonPresenceInfoLC(); - MPresenceInfoFieldCollection& coll = persInfo->Fields(); - - // Search own person info. Notice: Extend supported attributes later - - RPointerArray elems; - CleanupClosePushL( elems ); - TInt err = aDocument.SimpleElementsL( elems ); - - if ( !err ) - { - TInt myLatestPosition = SearchLatestTimestampL( elems ); - - if ( myLatestPosition != KErrNotFound ) - { - MSimpleElement* elem = elems[myLatestPosition]; - - using namespace NSimplePlugin::NSimpleOma; - - // person element found - RPointerArray elems2; - CleanupClosePushL( elems2 ); - elem->SimpleElementsL( elems2 ); - TInt count2 = elems2.Count(); - - for ( TInt j = 0; j < count2; j++ ) - { - MSimpleElement* elem2 = elems2[j]; - if ( !elem2->LocalName().CompareF( KSimpleOverridingwillingness8 )) - { - UserOverridingWillingnessToPrFwL( aPresenceFactory, elem2, coll ); - } - else if ( !elem2->LocalName().CompareF( KSimpleStatusicon8 )) - { - UserStatusIconToPrFwL( aPresenceFactory, elem2, coll, aDocument ); - } - else if ( !elem2->LocalName().CompareF( KSimpleNote8 )) - { - UserNoteToPrFwL( aPresenceFactory, elem2, coll ); - } - } - - CleanupStack::PopAndDestroy( &elems2 ); - } - } - - CleanupStack::PopAndDestroy( &elems ); - - aPrInfo.SetPersonPresenceL( persInfo ); - CleanupStack::Pop(); // >> persInfo - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::UserOverridingWillingnessToPrFwL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::UserOverridingWillingnessToPrFwL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aElement, - MPresenceInfoFieldCollection& aCollection ) - { - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginData: UserOverridingWillingnessToPrFwL") ); -#endif - using namespace NSimplePlugin::NSimpleOma; - - RPointerArray elems; - CleanupClosePushL( elems ); - User::LeaveIfError( aElement->SimpleElementsL( elems )); - MSimpleElement* elem3 = elems[0]; // notice: we assume that there is no other sub-elements - if ( !elem3->LocalName().CompareF( KSimpleBasic8 )) - { - // write the data into text field. - HBufC* nodeContent = elem3->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - if ( nodeContent ) - { - // Save availability - using namespace NPresenceInfo::NFieldType; - MPresenceInfoField* field = aPresenceFactory.NewInfoFieldLC(); - field->SetFieldTypeL( KAvailability ); - MPresenceInfoFieldValueText* text = aPresenceFactory.NewTextInfoFieldLC(); - text->SetTextValueL( nodeContent->Des() ); - field->SetFieldValue( text ); - CleanupStack::Pop(); // >> text - aCollection.AddOrReplaceFieldL( field ); - CleanupStack::Pop(); // >> field - } - CleanupStack::PopAndDestroy( nodeContent ); - } - CleanupStack::PopAndDestroy( &elems ); // close the array, do not delete the content - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::UserStatusIconToPrFwL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::UserStatusIconToPrFwL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aElement, - MPresenceInfoFieldCollection& aCollection, - MSimpleDocument& aDocument ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginData: UserStatusIconToPrFwL") ); -#endif - using namespace NSimpleDocument; - - using namespace NPresenceInfo::NFieldType; - - HBufC* nodeContent = aElement->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - if ( nodeContent ) - { - RPointerArray contents; - CleanupClosePushL( contents ); - - // Search the corresponding direct content - aDocument.GetDirectContentsL( contents ); - - TInt contCount = contents.Count(); - for ( TInt i = 0; iContentID(); - // nodecontent = "cid:simple.avatar.com" - // content-id: simple.avatar.com - HBufC8* cid8 = NULL; - cid8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( nodeContent->Des() ); - CleanupStack::PushL( cid8 ); // << cid8 - - TInt contentLen = cid8->Des().Length() - 4; // "cid:" - TInt headLen = id.Length(); - TPtrC8 pUnquoted( KNullDesC8 ); - if ( id.Locate('"') == 0 ) - { - // remove "..." characters - pUnquoted.Set( id.Mid( 1, headLen-2 )); - } - else - { - pUnquoted.Set( id ); - } - TInt foundPos = cid8->Des().Find( pUnquoted ); - if ( contentLen == headLen && foundPos >= 0 ) - { - MPresenceInfoField* field = aPresenceFactory.NewInfoFieldLC(); - field->SetFieldTypeL( KAvatar ); - MPresenceInfoFieldValueBinary* val = aPresenceFactory.NewBinaryInfoFieldLC(); - val->SetMimeTypeL( (contents[i])->ContentType() ); - // Body is not BASE64 encoded internally - val->SetBinaryValueL( (contents[i])->Body() ); - field->SetFieldValue( val ); - CleanupStack::Pop(); // >> val - aCollection.AddOrReplaceFieldL( field ); - CleanupStack::Pop(); // >> field - } - CleanupStack::PopAndDestroy( cid8 ); // >> cid8 - } - CleanupStack::PopAndDestroy( &contents ); - } - CleanupStack::PopAndDestroy( nodeContent ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::UserNoteToPrFwL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::UserNoteToPrFwL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aElement, - MPresenceInfoFieldCollection& aCollection ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginData: UserNoteToPrFwL") ); -#endif - // using namespace NSimplePlugin::NSimpleOma; - HBufC* nodeContent = aElement->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - if ( nodeContent ) - { - // Save note, convert from unicode - // notice: consider xml::lang-attribute - // note <-> KStatusMessage - using namespace NPresenceInfo::NFieldType; - MPresenceInfoField* field = aPresenceFactory.NewInfoFieldLC(); - field->SetFieldTypeL( KStatusMessage ); - MPresenceInfoFieldValueText* text = aPresenceFactory.NewTextInfoFieldLC(); - text->SetTextValueL( nodeContent->Des() ); - field->SetFieldValue( text ); - CleanupStack::Pop(); // >> text - aCollection.AddOrReplaceFieldL( field ); - CleanupStack::Pop(); // >> field - } - CleanupStack::PopAndDestroy( nodeContent ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::NotifyListToPrInfoL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::NotifyListToPrInfoL( - MXIMPObjectFactory& aFactory, - MPresenceObjectFactory& aPresenceFactory, - MSimplePresenceList& aList, - RPointerArray& aEntities, - RPointerArray& aActives, - RPointerArray& aTerminated, - TBool& aFullList ) - { - // Split array into individual prInfos - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginData: NotifyListToPrInfoL") ); -#endif - - RPointerArray docs; - CleanupClosePushL( docs ); - // get documents, ownership is not transferred. - aList.GetDocuments( docs ); - - CollectAllPresentitiesL( aEntities, aActives, docs, aFactory, aPresenceFactory ); - - using namespace NSimplePlugin::NSimpleOma; - - MSimpleMeta* meta = aList.MetaData(); - -#ifdef _DEBUG - // TODO: remove - if ( meta == NULL ) - PluginLogger::Log(_L("PluginData: META Is NULL !!! *****")); -#endif - - - - // ownership in not transferred - if ( meta && !meta->LocalName().CompareF( KSimpleList8 )) - { - // list element found, find out if fullstate - const TDesC8* fullStateVal = meta->AttrValue( KSimpleFullState8 ); - if ( fullStateVal && !fullStateVal->CompareF( KSimpleTrue8 )) - { - aFullList = ETrue; - } - else - { - aFullList = EFalse; - } - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginData: fullState === %d"), aFullList ); -#endif - - // Search "terminated" presentities - RPointerArray elems2; - CleanupClosePushL( elems2 ); - meta->SimpleElementsL( elems2); - CollectTerminatedPresentitiesL( aTerminated, elems2, aFactory ); - CleanupStack::PopAndDestroy( &elems2 ); - } - - CleanupStack::PopAndDestroy( &docs ); - } - - /* - example: - Content-Transfer-Encoding: binary - Content-ID: - Content-Type: application/rlmi+xml;charset="UTF-8" - - - - Buddy List at COM - Liste der Freunde an COM - <------- note - Bob Smith - - - - Dave Jones - - - - Ed at NET - - - My Friends at ORG - Meine Freunde an ORG - - - */ - -// --------------------------------------------------------------------------- -// CSimplePluginData::AddPrPersToSimpleDocumentL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::AddPrPersToSimpleDocumentL( - const MPersonPresenceInfo* aInfo, - MSimpleDocument& aDocument, - const TDesC8& aSipId ) - { - using namespace NSimpleDocument; - - TPtrC8 p8( KSimpleAvatarCIDURI8 ); - TInt bufSize = p8.Length(); - - HBufC16* CIDcontent = HBufC16::NewLC( bufSize ); // << CID - CIDcontent->Des().Copy( KSimpleAvatarCIDURI8 ); - - // notice: we do not generate random id but a static one. - - using namespace NSimplePlugin::NSimpleOma; - - aDocument.SetEntityURIL( aSipId ); - - MSimpleElement* persElem = aDocument.AddSimpleElementL( - KSimpleNsPDM, KSimplePerson8 ); - CleanupClosePushL( *persElem ); // << persElem - - using namespace NPresenceInfo::NFieldType; - - const MPresenceInfoFieldCollection& coll = aInfo->Fields(); - - TInt myCount = coll.FieldCount(); - for ( TInt i = 0; i < myCount; i++ ) - { - const MPresenceInfoField& field = coll.FieldAt( i ); - const TDesC8& fieldType = field.FieldType(); - const MXIMPBase& storage = field.FieldValue(); - - // Notice: tuple id saving for partial data in future. - - /* - Mapping: - Avatar -> Person/status-icon - status-msg -> Person/note - Availability -> Person/overriding-willingness - */ - - if ( !fieldType.CompareF( KAvatar ) ) - { - const MPresenceInfoFieldValueBinary* bin = - TXIMPGetInterface< const MPresenceInfoFieldValueBinary >::From( storage, - MXIMPBase::EReturnNullIfUnknown ); - if ( bin ) - { - MSimpleElement* elem = persElem->AddSimpleElementL( - KSimpleNsRPID, - KSimpleStatusicon8 ); - CleanupClosePushL( *elem ); // << elem - elem->SetContentUnicodeL( CIDcontent->Des()); - // Create the MIME multipart content - MSimpleContent* content = TSimpleFactory::NewContentL( - KSimpleAvatarContent8, bin->MimeType() ); - CleanupClosePushL( *content ); // << content - content->CopyBodyL( bin->BinaryValue( ) ); - aDocument.AddDirectContentL( *content, EFalse ); - CleanupStack::PopAndDestroy( content ); // >> content - CleanupStack::PopAndDestroy( elem ); // >> elem - } - } - else if ( !fieldType.CompareF( KStatusMessage ) ) - { - const MPresenceInfoFieldValueText* text = - TXIMPGetInterface< const MPresenceInfoFieldValueText >::From( storage, - MXIMPBase::EReturnNullIfUnknown ); - if ( text ) - { - MSimpleElement* elem = persElem->AddSimpleElementL( - KSimpleNsPDM, - KSimpleNote8 ); - CleanupClosePushL( *elem ); // << elem - elem->SetContentUnicodeL( text->TextValue() ); - CleanupStack::PopAndDestroy( elem ); // >> elem - } - } - else if ( !fieldType.CompareF( KAvailability )) - { - const MPresenceInfoFieldValueText* text = - TXIMPGetInterface< const MPresenceInfoFieldValueText >::From( storage, - MXIMPBase::EReturnNullIfUnknown ); - if ( text ) - { - AddPrPersAvailabilityToDocL( text, persElem ); - } - } - else - { - // Notice: currently all the fields in the namespace are supported, - // but this ensures that if namespace is extended later, it is - // handled right way in the adaptation - User::Leave( KPresenceErrPresenceInfoFieldTypeNotSupported ); - } - } - CleanupStack::PopAndDestroy( persElem ); - CleanupStack::PopAndDestroy( CIDcontent ); - } - - -// --------------------------------------------------------------------------- -// CSimplePluginData::CollectAllPresentitiesL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::CollectAllPresentitiesL( - RPointerArray& aEntities, - RPointerArray& aActives, - RPointerArray& aDocs, - MXIMPObjectFactory& aFactory, - MPresenceObjectFactory& aPresenceFactory ) - { - TInt count = aDocs.Count(); - - // active presentities - for ( TInt i = 0; i < count; i++ ) - { - MPresenceInfo* info = aPresenceFactory.NewPresenceInfoLC(); // << info - aEntities.AppendL( info ); - // aEntities may contain entries even this method leaves - CleanupStack::Pop(); // >> info - - NotifyToPrInfoL( aPresenceFactory, *aDocs[i], *info ); - - // Add SIP identity to active users list - MXIMPIdentity* active = aFactory.NewIdentityLC(); // << active - aActives.AppendL( active ); - CleanupStack::Pop(); // >> active - - // Convert SIP entity URI from UTF to Unicode. - const TDesC8* pUri8 = (aDocs[i])->EntityURI(); - HBufC16* uri16 = NULL; - uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *pUri8 ); - CleanupStack::PushL( uri16 ); // << uri16 - active->SetIdentityL( uri16->Des() ); - -#ifdef _DEBUG - // --------------------------------------------------------- - TBuf<200> buffer2; - buffer2.Copy(uri16->Des()); - const MPersonPresenceInfo* pers_debug = info->PersonPresence(); - const MPresenceInfoFieldCollection& coll_debug = pers_debug->Fields(); - TInt count_debug = coll_debug.FieldCount(); - PluginLogger::Log(_L("PluginData: nbr of fields received =%d"), count_debug ); - PluginLogger::Log(_L("PluginData: User added to actives: %S"), &buffer2 ); - // --------------------------------------------------------- -#endif - CleanupStack::PopAndDestroy( uri16 ); // >> uri16 - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::CollectTerminatedPresentitiesL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::CollectTerminatedPresentitiesL( - RPointerArray& aTerminated, - RPointerArray& aElems, - MXIMPObjectFactory& aFactory ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginData: CollectTerminatedPresentitiesL")); -#endif - using namespace NSimplePlugin::NSimpleOma; - - TInt count2 = aElems.Count(); - for ( TInt i = 0; i < count2; i++ ) - { - MSimpleElement* elem2 = aElems[i]; - if ( !elem2->LocalName().CompareF( KSimpleResource8 )) - { - // resource element - RPointerArray elems3; - CleanupClosePushL( elems3 ); - elem2->SimpleElementsL( elems3 ); - TInt count3 = elems3.Count(); - const TDesC8* uri8 = elem2->AttrValue( KSimpleUri8 ); - if ( !uri8 ) - { - continue; - } - for ( TInt j=0; j < count3; j++ ) - { - MSimpleElement* elem3 = elems3[j]; - SearchTerminatedInstanceL( aTerminated, elem3, uri8, aFactory ); - } - CleanupStack::PopAndDestroy( &elems3 ); - } // resource element - }// for (i); list element subelement - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginData: CollectTerminatedPresentitiesL ends")); -#endif - } - - -// --------------------------------------------------------------------------- -// CSimplePluginData::SearchLatestTimestampL -// --------------------------------------------------------------------------- -// -TInt CSimplePluginData::SearchLatestTimestampL( - RPointerArray& aElems ) - { - TInt ret = KErrNotFound; - - const TInt KMaxTimestamp = 40; - TBuf myTimestamp; - - // Timestamp to save the latest one person data - myTimestamp = KNullDesC; - - // They want to get empty notifications too. - TInt count = aElems.Count(); - - using namespace NSimplePlugin::NSimpleOma; - - MSimpleElement* elem = NULL; - TPtrC8 p8; - - for ( TInt i = 0; i < count; i++ ) - { - elem = aElems[i]; - p8.Set( elem->LocalName()); - if (!( p8.CompareF( KSimplePerson8 ))) - { - - if ( ret == KErrNotFound ) - { - // Save since the time stamp is optional, this is first . - // the whole may also be missing. - ret = i; - } - - // person element found - RPointerArray elems2; - CleanupClosePushL( elems2 ); - elem->SimpleElementsL( elems2 ); - TInt count2 = elems2.Count(); - - // Search optional timestamp element first, the latest one - for ( TInt j = 0; j < count2; j++ ) - { - // - MSimpleElement* elem2 = elems2[j]; - // Search optional timestamp element - if ( !elem2->LocalName().CompareF( KSimpleTimestamp8 )) - { - HBufC* nodeContent = elem2->ContentUnicodeL(); - // Notice: Timestamp comparision assumes now - // that all the timestamps have a similar format. - if ( myTimestamp.Compare( nodeContent->Des() ) < 0 ) - { - // Save latest timestamp - myTimestamp.Copy( nodeContent->Des() ); - ret = i; - } - delete nodeContent; - } - } - CleanupStack::PopAndDestroy( &elems2 ); - } - } // for - - return ret; - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::AddPrPersAvailabilityToDocL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::AddPrPersAvailabilityToDocL( - const MPresenceInfoFieldValueText* aText, MSimpleElement* aPersElem ) - { - using namespace NSimplePlugin::NSimpleOma; - - MSimpleElement* elem = aPersElem->AddSimpleElementL( - KSimpleNsOP, - KSimpleOverridingwillingness8 ); - CleanupClosePushL( *elem ); // << elem - MSimpleElement* elem2 = elem->AddSimpleElementL( - KSimpleNsOP, - KSimpleBasic8 ); - CleanupClosePushL( *elem2 ); // << elem2 - if ( !aText->TextValue().CompareF( KSimpleOpen ) ) - { - elem2->SetContentUnicodeL( KSimpleOpen ); - } - else - { - elem2->SetContentUnicodeL( KSimpleClosed ); - } - CleanupStack::PopAndDestroy( elem2 ); // >> elem2 - CleanupStack::PopAndDestroy( elem ); // >> elem - } - -// --------------------------------------------------------------------------- -// CSimplePluginData::SearchTerminatedInstanceL -// --------------------------------------------------------------------------- -// -void CSimplePluginData::SearchTerminatedInstanceL( - RPointerArray& aTerminated, - MSimpleElement* aElem, - const TDesC8* uri8, - MXIMPObjectFactory& aFactory ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginData: SearchTerminatedInstanceL")); -#endif - - using namespace NSimplePlugin::NSimpleOma; - if ( !aElem->LocalName().CompareF( KSimpleInstance8 )) - { - // instance element - const TDesC8* stateVal = aElem->AttrValue( KSimpleState8 ); - if ( stateVal && !stateVal->CompareF( KSimpleTerminated8 )) - { - // Add presentity into terminated list - MXIMPIdentity* terminated = aFactory.NewIdentityLC(); // +terminated - aTerminated.AppendL( terminated ); - CleanupStack::Pop(); // -terminated - - // Convert SIP entity URI from UTF to Unicode. - HBufC16* uri16 = NULL; - uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *uri8 ); - CleanupStack::PushL( uri16 ); // +uri16 - terminated->SetIdentityL( uri16->Des() ); - -#ifdef _DEBUG - // Debug buffer size - const TInt KMyBufSize = 200; - // --------------------------------------------------------- - TBuf buffer3; - buffer3.Copy(uri16->Des()); - PluginLogger::Log(_L("PluginData: SearchTerminatedInstanceL TERMINATED INSTANCE FOUND ***")); - PluginLogger::Log(_L("PluginData: User added to terminated: %S"), &buffer3 ); - // --------------------------------------------------------- -#endif - CleanupStack::PopAndDestroy( uri16 ); // -uri16 - } - else - { - // ------------------------------------------------------------- -#ifdef _DEBUG - if ( stateVal != NULL ) - { - // Debug buffer size - const TInt KMyBufSize = 100; - HBufC16* uri16 = NULL; - uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *stateVal ); - CleanupStack::PushL( uri16 ); // +uri16 - TBuf buffer4; - buffer4.Copy(uri16->Des()); - PluginLogger::Log(_L(" STATEVAL: %S"), &buffer4 ); - CleanupStack::PopAndDestroy( uri16 ); // -uri16 - } -#endif - // ------------------------------------------------------------- - } - } - } - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simpleplugindebugutils.cpp --- a/presencefwsimpleadpt/src/simpleplugindebugutils.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 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: DEBUG utilities, for DEBUG version only -* -*/ - - - - -// INCLUDE FILES -#include - -#ifdef _DEBUG -#include -#include -#include -#include - -#include "simpleplugindebugutils.h" - -//********************************** -// PluginLogger -//********************************** -const TInt KLogBufferLength = 256; - -// --------------------------------------------------------- -// PluginLogger::Log -// --------------------------------------------------------- -// -void PluginLogger::Log(TRefByValue aFmt,...) - { - VA_LIST list; - VA_START(list, aFmt); - - // Print to log file - TBuf buf; - buf.FormatList(aFmt, list); - - _LIT(KLogDir, "simple"); - _LIT(KLogFile, "simple.txt"); - // Write to log file - RFileLogger::Write(KLogDir, KLogFile, EFileLoggingModeAppend, buf); - } - -#endif // _DEBUG - - - -// End of File - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simplepluginentitywatcher.cpp --- a/presencefwsimpleadpt/src/simplepluginentitywatcher.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,459 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include "simpleplugincommon.h" -#include "simplepluginentitywatcher.h" -#include "simpleplugindebugutils.h" -#include "simpleplugindata.h" -#include "simpleutils.h" -#include "simplepluginwatcher.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::CSimplePluginEntityWatcher -// --------------------------------------------------------------------------- -// -CSimplePluginEntityWatcher::CSimplePluginEntityWatcher( - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CSimplePluginWatcher& aWatcher - ) - : iPluginWatcher(aWatcher), iConnObs(aObs), iConnection(aConn), - iOperation(EPluginIdle) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::ConstructL( ) - { - iWatcher = TSimpleFactory::NewWatcherL( iConnection, *this ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginEntityWatcher* CSimplePluginEntityWatcher::NewL( - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CSimplePluginWatcher& aWatcher ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: NewL")); -#endif - CSimplePluginEntityWatcher* self = - new( ELeave ) CSimplePluginEntityWatcher( aObs, aConn, aWatcher ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::~CSimplePluginEntityWatcher -// --------------------------------------------------------------------------- -// -CSimplePluginEntityWatcher::~CSimplePluginEntityWatcher() - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: DESTRUCTOR")); -#endif - if ( iWatcher ) - { - iWatcher->Close(); - } - delete iEntityId; - delete iSimpleEntityId; - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::StartSubscribeL -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::StartSubscribeL( - const TDesC8& aPresentityId ) - { - delete iEntityId; - iEntityId = NULL; - - iListSubsActive = EFalse; - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: -> SubscribeL")); -#endif - iSimpleId = iWatcher->SubscribeL( aPresentityId, NULL, ETrue, EFalse ); - - // Save entity id after successful call - iEntityId = aPresentityId.AllocL(); - - iOperation = EPluginStart; - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::StartSubscribeListL -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::StartSubscribeListL( - const TDesC8& aPresentityId ) - { - delete iEntityId; - iEntityId = NULL; - - iListSubsActive = ETrue; - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: -> SubscribeListL")); -#endif - iSimpleId = iWatcher->SubscribeListL( aPresentityId, NULL, ETrue, EFalse ); - - // Save entity id after successful call - iEntityId = aPresentityId.AllocL(); - - iOperation = EPluginStart; - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::SetSimpleNameL -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::SetSimpleNameL( - const TDesC8& aPresentityId ) - { - delete iSimpleEntityId; - iSimpleEntityId = NULL; - - - // Save entity id after successful call - iSimpleEntityId = aPresentityId.AllocL(); - - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::StopSubscribeL -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::StopSubscribeL( - ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: -> UnsubscribeL")); -#endif - iSimpleId = iWatcher->UnsubscribeL( ); - iOperation = EPluginStop; - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::WatcherReqCompleteL -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::WatcherReqCompleteL( - TInt /*aOpId*/, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: WatcherReqCompleteL")); -#endif - TPluginEntityWatcherOperation orig = iOperation; - iOperation = EPluginIdle; - - CompleteClientReq( aStatus ); - - if ( aStatus && ( orig == EPluginStop || orig == EPluginStart) ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: calls DeleteWatcher **")); -#endif - // Delete this entity as useless - iPluginWatcher.DeleteWatcher( iEntityId->Des() ); - // Do not call anything, since the method call above deletes this instance. - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::WatcherNotificationL -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::WatcherNotificationL( - MSimpleDocument& aDocument ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: WatcherNotificationL" )); -#endif - - // No need to check the expiration here since WatcherTerminatedL - // is called then too. - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.Host()->ProtocolPresenceDataHost().WatchingDataHost(); - MPresenceInfo* prInfo = iConnObs.PresenceObjectFactory().NewPresenceInfoLC(); - - CSimplePluginData::NotifyToPrInfoL( iConnObs.PresenceObjectFactory(), aDocument, *prInfo ); - -#ifdef _DEBUG - // --------------------------------------------------------- - const MPersonPresenceInfo* pers_debug = prInfo->PersonPresence(); - const MPresenceInfoFieldCollection& coll_debug = pers_debug->Fields(); - TInt count_debug = coll_debug.FieldCount(); - PluginLogger::Log(_L("PluginEntityWatcher: nbr of fields received =%d"), count_debug ); - // --------------------------------------------------------- -#endif - - MXIMPIdentity* identity2 = iConnObs.ObjectFactory().NewIdentityLC(); - HBufC* uniBuffer = - CnvUtfConverter::ConvertToUnicodeFromUtf8L( *aDocument.EntityURI() ); - CleanupStack::PushL( uniBuffer ); // << uniBuffer - identity2->SetIdentityL( uniBuffer->Des() ); - CleanupStack::PopAndDestroy( uniBuffer ); // >> uniBuffer - - if ( iListSubsActive ) - { - // Set Group Id - HBufC* uniBuffer2 = - CnvUtfConverter::ConvertToUnicodeFromUtf8L( iEntityId->Des() ); - CleanupStack::PushL( uniBuffer2 ); - MXIMPIdentity* gId = iConnObs.ObjectFactory().NewIdentityLC(); // << gId - gId->SetIdentityL( uniBuffer2->Des() ); - - MXIMPObjectCollection* coll = - iConnObs.ObjectFactory().NewObjectCollectionLC(); // << coll - - iPluginWatcher.GetEntitiesInListL( uniBuffer2->Des(), *coll ); - - MProtocolPresentityGroupsDataHost& groupHost = - iConnObs.Host()->ProtocolPresenceDataHost().GroupsDataHost(); -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginEntityWatcher: callback HandlePresentityGroupContentL")); -#endif - groupHost.HandlePresentityGroupContentL( gId, coll ); - - CleanupStack::Pop( 2 ); // >> gId, coll - CleanupStack::PopAndDestroy( uniBuffer2 ); - - // This is done only for first notification for group subscription - iListSubsActive = EFalse; - } - - // PrFw Host API callback -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginEntityWatcher: callback HandleSubscribedPresentityPresenceL")); -#endif - watcherHost.HandleSubscribedPresentityPresenceL( identity2, prInfo ); - CleanupStack::Pop(); // >> identity2 - CleanupStack::Pop(); // >> prInfo - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::WatcherListNotificationL -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::WatcherListNotificationL( - MSimplePresenceList& aList ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: WatcherListNotificationL" )); -#endif - - // call all the necessary callbacks, for new data + teminated ones. - - // check out whether fullstate list or not - TBool fullState( EFalse ); - - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.Host()->ProtocolPresenceDataHost().WatchingDataHost(); - - RPointerArray entities; - RPointerArray terminated; - RPointerArray allEntities; - - TRAPD( err, CSimplePluginData::NotifyListToPrInfoL( - iConnObs.ObjectFactory(), iConnObs.PresenceObjectFactory(), - aList, entities, allEntities, terminated, fullState )); - if ( err ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: WatcherListNotificationL error *" )); -#endif - entities.ResetAndDestroy(); - terminated.ResetAndDestroy(); - allEntities.ResetAndDestroy(); - entities.Close(); - terminated.Close(); - allEntities.Close(); - return; - } - - CompleteClientReq( KErrNone ); - - // Call HandleSubscribedPresentityPresenceL for all users - TInt counter = entities.Count(); - for ( TInt i = counter-1 ; i>=0; i-- ) - { - // --------------------------------------------------------- -#ifdef _DEBUG - const MPersonPresenceInfo* info = entities[i]->PersonPresence(); - const MPresenceInfoFieldCollection& coll_debug = info->Fields(); - TInt count_debug = coll_debug.FieldCount(); - - PluginLogger::Log( - _L("PluginWatcher: callback HandleSubscribedPresentityPresenceL nbrFields=%d"), count_debug ); -#endif - // --------------------------------------------------------- - - watcherHost.HandleSubscribedPresentityPresenceL( - allEntities[i], entities[i] ); - // Owenership is transferred - allEntities.Remove(i); - entities.Remove(i); - } - - // call SetPresentityPresenceDataSubscriptionStateL for terminated users - counter = terminated.Count(); - for ( TInt i = counter-1 ; i>=0; i-- ) - { - MXIMPDataSubscriptionState *state = iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - state->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: TEST COVERS 1")); - PluginLogger::Log( - _L("PluginWatcher: callback SetPresentityPresenceDataSubscriptionStateL")); -#endif - watcherHost.SetPresentityPresenceDataSubscriptionStateL( - terminated[i], state, NULL ); - CleanupStack::Pop( 1 ); // state - // Owenership is transferred - terminated.Remove(i); - } - - entities.ResetAndDestroy(); - terminated.ResetAndDestroy(); - allEntities.ResetAndDestroy(); - - entities.Close(); - terminated.Close(); - allEntities.Close(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::WatcherTerminatedL -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::WatcherTerminatedL( - TInt /*aOpId*/, TInt /*aReason*/ ) - { - // Call PrFw Host and tell to CSimplePluginWatcher that - // this entity can be deleted. - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginEntityWatcher: WatcherTerminatedL" )); -#endif - - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.Host()->ProtocolPresenceDataHost().WatchingDataHost(); - MXIMPDataSubscriptionState *state = iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - MXIMPStatus* status = iConnObs.ObjectFactory().NewStatusLC(); - state->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - status->SetResultCode( KErrCompletion ); - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); - - HBufC16* buf16 = HBufC16::NewLC( PresentityId().Length()); - buf16->Des().Copy( PresentityId() ); - identity->SetIdentityL( buf16->Des() ); - CleanupStack::PopAndDestroy( buf16 ); - -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: callback SetPresentityPresenceDataSubscriptionStateL")); -#endif - watcherHost.SetPresentityPresenceDataSubscriptionStateL( - identity, state, status ); - CleanupStack::Pop( 3 ); // identity, status, state - - // Delete this entity as useless - iPluginWatcher.DeleteWatcher( iEntityId->Des() ); - // Do not call anything, since the method call above deletes this instance. - - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::CompleteClientReq -// --------------------------------------------------------------------------- -// -void CSimplePluginEntityWatcher::CompleteClientReq( TInt aStatus ) - { - // complete the open PrFw request immediately here! - iPluginWatcher.CompleteWatcher( aStatus ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::PresentityId -// --------------------------------------------------------------------------- -// -TPtrC8 CSimplePluginEntityWatcher::PresentityId( ) - { - return iEntityId ? iEntityId->Des() : TPtrC8(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginEntityWatcher::PrFwRequestId -// --------------------------------------------------------------------------- -// -TXIMPRequestId CSimplePluginEntityWatcher::PrFwRequestId( ) - { - return iPrFwId; - } - - -// End of file diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simpleplugingroups.cpp --- a/presencefwsimpleadpt/src/simpleplugingroups.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,893 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include "simpleplugingroups.h" -#include "simpleplugindebugutils.h" -#include "simplepluginxdmutils.h" -#include "simpleplugincommon.h" -#include "simplepluginconnection.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::CSimplePluginGroups -// --------------------------------------------------------------------------- -// -CSimplePluginGroups::CSimplePluginGroups( - MSimplePluginConnectionObs& aObs ) -: CActive( CActive::EPriorityStandard ), - iConnObs(aObs), iSubscribed(KSimplePluginSubsNone), - iOperation( ENoOperation), - iState( EPluginIdle ), iCompleted( ETrue ) - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::ConstructL( ) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginGroups* CSimplePluginGroups::NewL( - MSimplePluginConnectionObs& aObs ) - { - CSimplePluginGroups* self = - new( ELeave ) CSimplePluginGroups( aObs ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::~CSimplePluginGroups -// --------------------------------------------------------------------------- -// -CSimplePluginGroups::~CSimplePluginGroups() - { - delete iPresIdentity; - delete iPresIdentity2; - delete iDisplayName; - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoSubscribePresentityGroupListL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoSubscribePresentityGroupListL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoSubscribePresentityGroupListL")); -#endif - - iCompleted = EFalse; - - // List of lists under OMa buddylist - StartXdmOperationL( aReqId, EGetListOfLists ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoUnsubscribePresentityGroupListL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoUnsubscribePresentityGroupListL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoUnsubscribePresentityGroupListL")); -#endif - iPrFwId = aReqId; - iCompleted = EFalse; - CompletePrFwReq( KErrNone ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoCreatePresentityGroupL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoCreatePresentityGroupL( - const MXIMPIdentity& aGroupId, - const TDesC16& aDisplayName, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoCreatePresentityGroupL")); -#endif - iCompleted = EFalse; - StartXdmOperationL( - aGroupId, aDisplayName, aReqId, ECreatePresentityGroup ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoDeletePresentityGroupL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoDeletePresentityGroupL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoDeletePresentityGroupL")); -#endif - iCompleted = EFalse; - StartXdmOperationL( aGroupId, aReqId, EDeletePresentityGroup ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoUpdatePresentityGroupDisplayNameL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoUpdatePresentityGroupDisplayNameL( - const MXIMPIdentity& /*aGroupId*/, - const TDesC16& /*aDisplayName*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoUpdatePresentityGroupDisplayNameL")); -#endif - // Notice: not supported. - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoSubscribePresentityGroupContentL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoSubscribePresentityGroupContentL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoSubscribePresentityGroupContentL")); -#endif - iCompleted = EFalse; - - // List of lists under OMa buddylist - StartXdmOperationL( aGroupId, aReqId, EGetListContent ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoUnsubscribePresentityGroupContentL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoUnsubscribePresentityGroupContentL( - const MXIMPIdentity& /*aGroupId*/, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoUnsubscribePresentityGroupContentL")); -#endif - iCompleted = EFalse; - iPrFwId = aReqId; - CompletePrFwReq( KErrNone ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoAddPresentityGroupMemberL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoAddPresentityGroupMemberL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - const TDesC16& aMemberDisplayName, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoAddPresentityGroupMemberL")); -#endif - iCompleted = EFalse; - StartXdmOperationL( - aGroupId, aMemberId, aMemberDisplayName, - aReqId, EAddPresentityGroupMember ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoRemovePresentityGroupMemberL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoRemovePresentityGroupMemberL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoRemovePresentityGroupMemberL")); -#endif - iCompleted = EFalse; - StartXdmOperationL( - aGroupId, aMemberId, - aReqId, ERemovePresentityGroupMember ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoUpdatePresentityGroupMemberDisplayNameL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoUpdatePresentityGroupMemberDisplayNameL( - const MXIMPIdentity& /*aGroupId*/, - const MXIMPIdentity& /*aMemberId*/, - const TDesC16& /*aMemberDisplayName*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginGroups: DoUpdatePresentityGroupMemberDisplayNameL")); -#endif - // Notice: Not supported. - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoCancel() -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoCancel( ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: DoCancel")); -#endif - if ( iOperation != ENoOperation ) - { - iXdmUtils->Cancel(); - } - else - { - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::RunL() -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::RunL( ) - { - TInt myStatus = iStatus.Int(); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: RunL status=%d active=%d"), myStatus, IsActive() ); -#endif - - if ( !myStatus ) - { - // OK resposne - CallActualXdmOperationL(); - } - else - { - if ( iOperation == EDeletePresentityGroup && iState == EPluginCommitRls ) - { - // Igonere RLS deletion failure and contine Shared XDM deletion - CallActualXdmOperationL(); - } - else - { - // Other errors terminated the show - CompletePrFwReq( myStatus ); - } - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::CallActualXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::CallActualXdmOperationL() - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: CallActualXdmOperationL operation=%d"), iOperation ); -#endif - - switch ( iOperation ) - { - case ECreatePresentityGroup: - HandleCreatePresentityGroupL( iPresIdentity->Des(), iDisplayName->Des() ); - break; - case EDeletePresentityGroup: - HandleDeletePresentityGroupL( iPresIdentity->Des() ); - break; - case EAddPresentityGroupMember: - HandleAddPresentityGroupMemberL(); - break; - case ERemovePresentityGroupMember: - HandleRemovePresentityGroupMemberL(); - break; - case EGetListOfLists: - GetListOfListsL(); - break; - case EGetListContent: - GetListContentL(); - break; - default: - User::Leave( KErrNotSupported ); - break; - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::RunError -// --------------------------------------------------------------------------- -// -TInt CSimplePluginGroups::RunError( TInt aError ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: RunError %d active=%d"), aError, IsActive()); -#endif - // complete the open request - CompletePrFwReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CSimplePluginGroups::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - MProtocolPresentityGroups* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::GetInterface() -// --------------------------------------------------------------------------- -// -const TAny* CSimplePluginGroups::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - const MProtocolPresentityGroups* myIf = this; - return myIf; - } - else if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::GetInterfaceId() -// --------------------------------------------------------------------------- -// -TInt32 CSimplePluginGroups::GetInterfaceId() const - { - return MProtocolPresentityGroups::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::SetPresIdentityL() -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::SetPresIdentityL( - const MXIMPIdentity& aPresentityId ) - { - delete iPresIdentity; - iPresIdentity = NULL; - iPresIdentity = aPresentityId.Identity().AllocL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::SetPresIdentity2L() -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::SetPresIdentity2L( - const MXIMPIdentity& aPresentityId ) - { - delete iPresIdentity2; - iPresIdentity2 = NULL; - iPresIdentity2 = aPresentityId.Identity().AllocL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::StartXdmOperationL( - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ) - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - iPrFwId = aReqId; - iOperation = aOperation; - StartXdmOperationL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::StartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ) - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - SetPresIdentityL( aId ); - iPrFwId = aReqId; - iOperation = aOperation; - StartXdmOperationL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::StartXdmOperationL( - const MXIMPIdentity& aId, - const TDesC16& aDisplayName, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ) - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - SetPresIdentityL( aId ); - - delete iDisplayName; - iDisplayName = NULL; - iDisplayName = aDisplayName.AllocL(); - - iPrFwId = aReqId; - iOperation = aOperation; - StartXdmOperationL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::StartXdmOperationL( - const MXIMPIdentity& aId, - const MXIMPIdentity& aMemberId, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ) - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - SetPresIdentityL( aId ); - SetPresIdentity2L( aMemberId ); - iPrFwId = aReqId; - iOperation = aOperation; - StartXdmOperationL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::StartXdmOperationL( - const MXIMPIdentity& aId, - const MXIMPIdentity& aMemberId, - const TDesC16& aDisplayName, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ) - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - SetPresIdentityL( aId ); - SetPresIdentity2L( aMemberId ); - - delete iDisplayName; - iDisplayName = NULL; - iDisplayName = aDisplayName.AllocL(); - - iPrFwId = aReqId; - iOperation = aOperation; - StartXdmOperationL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::StartXdmOperationL() - { - TRAPD( err, DoStartXdmOperationL() ); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - else - { - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::DoStartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::DoStartXdmOperationL() - { - if ( !iXdmUtils ) - { - iXdmUtils = iConnObs.XdmUtilsL(); - } - else - { - } - - // Delete Group is the only method that access XDM rules, - // others access shared lists only. - if ( iOperation != EDeletePresentityGroup ) - { - iXdmUtils->InitializeXdmsOnlyL( iStatus ); - } - else - { - iXdmUtils->InitializeXdmL( iStatus ); - } - - iState = EPluginInitXdm; - SetActive(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::GetListOfListsL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::GetListOfListsL() - { - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - MProtocolPresentityGroupsDataHost& dataHost = - iConnObs.Host()->ProtocolPresenceDataHost().GroupsDataHost(); - - // This searches data from the local cache only. - MXIMPObjectCollection* userLists = - myFactory.NewObjectCollectionLC(); // << userLists - - const TInt KMyGran = 10; - CDesCArrayFlat* lists = new (ELeave) CDesCArrayFlat( KMyGran ); - CleanupStack::PushL( lists ); // << lists - - CDesCArrayFlat* dNames = new (ELeave) CDesCArrayFlat( KMyGran ); - CleanupStack::PushL( dNames ); // << dNames - - iXdmUtils->GetUserListsL( *lists, *dNames ); - - CopyGroupArraysToCollectionL( *lists, *dNames, *userLists ); - - CleanupStack::PopAndDestroy( dNames ); // >> dNames - CleanupStack::PopAndDestroy( lists ); // >> lists - - CompletePrFwReq( KErrNone ); - - // Callback for subscription state (terminated). - MXIMPDataSubscriptionState* myState = - myFactory.NewDataSubscriptionStateLC(); - MXIMPStatus* myStatus = myFactory.NewStatusLC(); - // Notice: consider error codes - myStatus->SetResultCode( KErrNone ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - myState->SetDataStateL( MXIMPDataSubscriptionState::EDataUnavailable ); -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginGroups: callback SetPresentityGroupListDataSubscriptionStateL")); -#endif - dataHost.SetPresentityGroupListDataSubscriptionStateL( - myState, myStatus ); - - - CleanupStack::Pop( 2 ); // >> myState, myStatus - - // callback for data -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: callback HandlePresentityGroupListL")); -#endif - dataHost.HandlePresentityGroupListL( userLists ); - CleanupStack::Pop(); // >> userLists - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::GetListContentL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::GetListContentL() - { - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - MProtocolPresentityGroupsDataHost& dataHost = - iConnObs.Host()->ProtocolPresenceDataHost().GroupsDataHost(); - - MXIMPObjectCollection* entities = - myFactory.NewObjectCollectionLC(); // << entities - - const TInt KMyGran = 10; - CPtrCArray* ids = new (ELeave) CPtrCArray( KMyGran ); - CleanupStack::PushL( ids ); // << ids - - CPtrCArray* dispNames = new (ELeave) CPtrCArray( KMyGran ); - CleanupStack::PushL( dispNames ); // << dispNames - - - iXdmUtils->GetEntitiesInListL( iPresIdentity->Des(), *ids, *dispNames ); - - CopyGroupMembersToCollectionL( *ids, *dispNames, *entities ); - - CleanupStack::PopAndDestroy( dispNames ); - CleanupStack::PopAndDestroy( ids ); - - // Complete the PrFw request - CompletePrFwReq( KErrNone ); - - // callback for data - MXIMPIdentity* id = myFactory.NewIdentityLC(); // << id - id->SetIdentityL( iPresIdentity->Des() ); -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginGroups: callback HandlePresentityGroupContentL .")); -#endif - dataHost.HandlePresentityGroupContentL( id, entities ); - CleanupStack::Pop(); // >> id - CleanupStack::Pop(); // >> entities - - // Callback for subscription state (terminated). - id = myFactory.NewIdentityLC(); // << id - id->SetIdentityL( iPresIdentity->Des() ); - MXIMPDataSubscriptionState* myState = - myFactory.NewDataSubscriptionStateLC(); // << myState - MXIMPStatus* myStatus = myFactory.NewStatusLC(); // << myStatus - // Notice: consider error codes - myStatus->SetResultCode( KErrNone ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginGroups: callback SetPresentityGroupContentDataSubscriptionStateL")); -#endif - dataHost.SetPresentityGroupContentDataSubscriptionStateL( - id, myState, myStatus ); - CleanupStack::Pop( 3 ); // >> myStatus, myState, id - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::CompletePrFwReq -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::CompletePrFwReq( TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: CompletePrFwReq status=%d"), aStatus ); -#endif - - if ( iCompleted ) - { - return; - } - - iCompleted = ETrue; - iOperation = ENoOperation; - iConnObs.CompleteReq( iPrFwId, aStatus ); - iPrFwId = TXIMPRequestId(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::CompleteMe -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::CompleteMe( TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginGroups: CompleteMe status=%d"), aStatus ); -#endif - - iStatus = KRequestPending; - TRequestStatus* s= &iStatus; - User::RequestComplete( s, aStatus ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::CopyGroupArraysToCollectionL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::CopyGroupArraysToCollectionL( - CDesCArrayFlat& aLists, CDesCArrayFlat& aNames, MXIMPObjectCollection& aCollection ) - { - TInt count = aLists.Count(); - for ( TInt i=0; i < count; i++ ) - { - // create here the PrFW group info - MPresentityGroupInfo* info = - iConnObs.PresenceObjectFactory().NewPresentityGroupInfoLC(); // << info - MXIMPIdentity* id = iConnObs.ObjectFactory().NewIdentityLC(); // << id - id->SetIdentityL( aLists[i] ); - info->SetGroupIdL( id ); - CleanupStack::Pop(); // >> id - - info->SetGroupDisplayNameL( aNames[i] ); - aCollection.AddObjectL( info ); - CleanupStack::Pop(); // >> info - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::CopyGroupMembersToCollectionL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::CopyGroupMembersToCollectionL( - CPtrCArray& aIds, CPtrCArray& aNames, MXIMPObjectCollection& aCollection) - { - TInt count = aIds.Count(); - for ( TInt i=0; i < count; i++ ) - { - // create here MPresentityGroupMemberInfo - MPresentityGroupMemberInfo* info = - iConnObs.PresenceObjectFactory().NewPresentityGroupMemberInfoLC(); // << info - MXIMPIdentity* id = iConnObs.ObjectFactory().NewIdentityLC(); // << id - id->SetIdentityL( aIds[i] ); - info->SetGroupMemberIdL( id ); - CleanupStack::Pop(); // >> id - - info->SetGroupMemberDisplayNameL( aNames[i] ); - aCollection.AddObjectL( info ); - CleanupStack::Pop(); // >> info - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::HandleCreatePresentityGroupL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::HandleCreatePresentityGroupL( - const TDesC& aGroupId, const TDesC& aDispName ) - { - if ( iState == EPluginInitXdm ) - { - iState = EPluginCommitXdm; - iXdmUtils->CreateEntityGroupL( aGroupId, aDispName ); - iXdmUtils->CommitXdmL( iStatus ); - SetActive(); - } - else - { - // We are ready - CompletePrFwReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::HandleDeletePresentityGroupL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::HandleDeletePresentityGroupL( const TDesC& aGroupId ) - { - if ( iState == EPluginInitXdm ) - { - iState = EPluginFetchRls; - iXdmUtils->FetchRlsL( iStatus ); - SetActive(); - } - else if ( iState == EPluginFetchRls ) - { - iState = EPluginCommitRls; - // Remove RLS service - iXdmUtils->RemoveRlsServiceByResourceListL( aGroupId, iStatus ); - SetActive(); - } - else if ( iState == EPluginCommitRls ) - { - iState = EPluginCommitXdm; - iXdmUtils->DeleteEntityGroupL( aGroupId ); - iXdmUtils->CommitXdmL( iStatus ); - SetActive(); - } - else if ( iState == EPluginCommitXdm ) - { - // Delete the group from a granted rule. The following won't leave if - // it does not locate under the rule. -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: TEST COVERS 2 **")); -#endif - iState = ERemoveGroupFromGranted; - iXdmUtils->RemoveGroupFromGrantedL( aGroupId, iStatus ); - SetActive(); - } - else - { - // We are ready - CompletePrFwReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::HandleAddPresentityGroupMemberL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::HandleAddPresentityGroupMemberL( ) - { - if ( iState == EPluginInitXdm ) - { - iXdmUtils->AddPresentityGroupMemberL( - iPresIdentity->Des(), iPresIdentity2->Des(), - iDisplayName->Des(), iStatus ); - iState = EPluginAddGroupMember; - SetActive(); - } - else - { - // We are ready - CompletePrFwReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginGroups::HandleRemovePresentityGroupMemberL -// --------------------------------------------------------------------------- -// -void CSimplePluginGroups::HandleRemovePresentityGroupMemberL() - { - if ( iState == EPluginInitXdm ) - { - iXdmUtils->RemovePresentityGroupMemberL( - iPresIdentity->Des(), iPresIdentity2->Des(), iStatus ); - iState = EPluginRemoveGroupMember; - SetActive(); - } - else - { - // We are ready - CompletePrFwReq( KErrNone ); - } - } - - -// End of file - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simplepluginpublisher.cpp --- a/presencefwsimpleadpt/src/simplepluginpublisher.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1071 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include "simpleplugincommon.h" -#include "simplepluginpublisher.h" -#include "simpleplugindebugutils.h" -#include "simpleutils.h" -#include "simplepluginwinfo.h" -#include "simpleplugindata.h" -#include "simplepluginxdmutils.h" -#include "simplepluginconnection.h" - - -// ======== MEMBER FUNCTIONS ======== - - -// ----------------------------------------------------------------------------- -// CSimplePluginWatcherInfo::CSimplePluginWatcherInfo -// ----------------------------------------------------------------------------- -CSimplePluginWatcherInfo::CSimplePluginWatcherInfo( ) - {} - -// ----------------------------------------------------------------------------- -// CSimplePluginWatcherInfo::~CSimplePluginWatcherInfo -// ----------------------------------------------------------------------------- -CSimplePluginWatcherInfo::~CSimplePluginWatcherInfo() - { - delete iId; - delete iSipId; - } - -// ---------------------------------------------------------- -// CSimplePluginWatcherInfo::NewL -// ---------------------------------------------------------- -// -CSimplePluginWatcherInfo* CSimplePluginWatcherInfo::NewL( - const TDesC8& aId, const TDesC& aSipId ) - { - CSimplePluginWatcherInfo* self = new (ELeave) CSimplePluginWatcherInfo( ); - CleanupStack::PushL( self ); - self->ConstructL( aId, aSipId ); - CleanupStack::Pop( self ); - return self; - } - -// ---------------------------------------------------------- -// CSimplePluginWatcherInfo::ConstructL -// ---------------------------------------------------------- -// -void CSimplePluginWatcherInfo::ConstructL( - const TDesC8& aId, const TDesC& aSipId ) - { - iId = aId.AllocL(); - iSipId = aSipId.AllocL(); - } - -// ----------------------------------------------------------------------------- -// CSimplePluginWatcherInfo::Destroy -// ----------------------------------------------------------------------------- -void CSimplePluginWatcherInfo::Destroy() - { - iLink.Deque(); - delete this; - } - -// ----------------------------------------------------------------------------- -// CSimplePluginWatcherInfo::Match -// ----------------------------------------------------------------------------- -TBool CSimplePluginWatcherInfo::Match( const TDesC8& aId, const TDesC& aSipId ) - { - if ( (!iId->Des().CompareF( aId )) && (!iSipId->Des().CompareF( aSipId)) ) - { - return ETrue; - } - else - { - return EFalse; - } - } - -// ----------------------------------------------------------------------------- -// CSimplePluginWatcherInfo::SipId -// ----------------------------------------------------------------------------- -TPtrC CSimplePluginWatcherInfo::SipId( ) - { - return iSipId ? iSipId->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::CSimplePluginPublisher -// --------------------------------------------------------------------------- -// -CSimplePluginPublisher::CSimplePluginPublisher( - MSimplePluginSettings& aConnSets, - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ) -: CActive( CActive::EPriorityStandard ), - iConnObs(aObs), iConnSets( aConnSets), iConnection(aConn), - iSubscribed(EFalse), iSubscribedOwn(EFalse), iPublished(EFalse), - iWatcherList( CSimplePluginWatcherInfo::LinkOffset()) - { - CActiveScheduler::Add(this); - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::ConstructL( ) - { - iPublisher = TSimpleFactory::NewPublisherL( iConnection, *this ); - iWatcher = TSimpleFactory::NewWatcherL( iConnection, *this ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginPublisher* CSimplePluginPublisher::NewL( - MSimplePluginSettings& aConnSets, - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ) - { - CSimplePluginPublisher* self = - new( ELeave ) CSimplePluginPublisher( aConnSets, aObs, aConn ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::~CSimplePluginPublisher -// --------------------------------------------------------------------------- -// -CSimplePluginPublisher::~CSimplePluginPublisher() - { - if ( iDocument ) - { - iDocument->Close(); - } - - if ( iPublisher ) - { - iPublisher->Close(); - } - - if ( iWatcher ) - { - iWatcher->Close(); - } - - // delete iWatchers; - DeleteWatchers(); - - } - -// ----------------------------------------------------------------------------- -// CSimplePluginPublisher::DeleteWatchers -// ----------------------------------------------------------------------------- -void CSimplePluginPublisher::DeleteWatchers() - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: DeleteWatchers" ) ); -#endif - // Delete all buffered transaction requests - TDblQueIter rIter( iWatcherList ); - rIter.SetToFirst(); - - while ( rIter ) - { - CSimplePluginWatcherInfo* w = rIter; - rIter++; - // delete wathcer info - w->Destroy(); - } - } - -// ----------------------------------------------------------------------------- -// CSimplePluginPublisher::AddWatcherIfNotExistsL -// ----------------------------------------------------------------------------- -void CSimplePluginPublisher::AddWatcherIfNotExistsL( const TDesC8& aId, const TDesC& aSipId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: AddWatcherIfNotExistsL" ) ); -#endif - TDblQueIter rIter( iWatcherList ); - rIter.SetToFirst(); - - TBool found(EFalse); - - while ( rIter ) - { - CSimplePluginWatcherInfo* w = rIter; - rIter++; - found = w->Match( aId, aSipId ); - if ( found ) - { - break; - } - else - { - // continue searching - } - } - if ( !found ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: AddWatcherIfNotExistsL adds a watcher" ) ); -#endif - CSimplePluginWatcherInfo* w = CSimplePluginWatcherInfo::NewL( aId, aSipId ); - iWatcherList.AddLast( *w ); - } - } - -// ----------------------------------------------------------------------------- -// CSimplePluginPublisher::RemoveWatcherIfExistsL -// ----------------------------------------------------------------------------- -void CSimplePluginPublisher::RemoveWatcherIfExistsL( const TDesC8& aId, const TDesC& aSipId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: RemoveWatcherIfExistsL" ) ); -#endif - TDblQueIter rIter( iWatcherList ); - rIter.SetToFirst(); - - TBool found(EFalse); - - while ( rIter ) - { - CSimplePluginWatcherInfo* w = rIter; - rIter++; - // delete wathcer info - found = w->Match( aId, aSipId ); - if ( found ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: RemoveWatcherIfExistsL removes a watcher" ) ); -#endif - w->Destroy(); - break; - } - else - { - // continue searching - } - } - } -// ----------------------------------------------------------------------------- -// CSimplePluginPublisher::MakeCurrentWatcherListLC -// ----------------------------------------------------------------------------- -CDesCArrayFlat* CSimplePluginPublisher::MakeCurrentWatcherListLC() - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: MakeCurrentWatcherListL" ) ); -#endif - // No one should be added more than once - const TInt KMyGran = 10; - CDesCArrayFlat* watchers = new (ELeave) CDesCArrayFlat( KMyGran ); - CleanupStack::PushL( watchers ); // << watchers - - // add user only once here. - TDblQueIter rIter( iWatcherList ); - rIter.SetToFirst(); - - while ( rIter ) - { - CSimplePluginWatcherInfo* w = rIter; - rIter++; - - TInt dummy = 0; - if ( watchers->Find( w->SipId(), dummy )) - { - watchers->AppendL( w->SipId() ); - } - else - { - // continue searching - } - } - - return watchers; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::DoPublishOwnPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::DoPublishOwnPresenceL( - const MPresenceInfo& aOwnPresence, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: DoPublishOwnPresenceL")); -#endif - - const MPersonPresenceInfo* persInfo = aOwnPresence.PersonPresence(); - - // convert data format from PrFW to internal - if ( !persInfo ) - { - // Notice: error codes - CompletePrFwReq( KErrArgument ); - return; - } - InitializeSimpleDocumentL( ); - AddSimpleDocumentPersL( persInfo ); - - TInt myCount = aOwnPresence.ServicePresenceCount(); - for ( TInt i=0; i < myCount; i++ ) - { - const MServicePresenceInfo& servInfo = aOwnPresence.ServicePresenceAt(i); - AddSimpleDocumentServiceL( servInfo ); - } - myCount = aOwnPresence.DevicePresenceCount(); - for ( TInt i=0; i < myCount; i++ ) - { - const MDevicePresenceInfo& devInfo = aOwnPresence.DevicePresenceAt(i); - AddSimpleDocumentDeviceL( devInfo ); - } - - // Ensure that XDM rules exists, the show continues in RunL - StartXdmOperationL(aReqId ); - iOperation = EPublishOwn; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::DoSubscribeOwnPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::DoSubscribeOwnPresenceL( - const MPresenceInfoFilter& /*aPif*/, // notice: aPif filter not supported - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: DoSubscribeOwnPresenceL")); -#endif - - StartXdmOperationL( aReqId ); - - iOperation = ESubscribeOwn; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::DoUpdateOwnPresenceSubscriptionPifL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::DoUpdateOwnPresenceSubscriptionPifL( - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: DoUpdateOwnPresenceSubscriptionPifL")); -#endif - // Notice: aPif filter not supported - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::DoUnsubscribeOwnPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::DoUnsubscribeOwnPresenceL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: DoUnsubscribeOwnPresenceL")); -#endif - iSubscribedOwn = EFalse; - TRAPD( err, iSimpleId = iWatcher->UnsubscribeL()); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - iPrFwId = aReqId; - iOperation = EUnsubscribeOwn; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::DoSubscribePresenceWatcherListL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::DoSubscribePresenceWatcherListL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: DoSubscribePresenceWatcherListL")); -#endif - - if ( !iSubscribed ) - { - TRAPD( err, iConnObs.WinfoHandlerL()->SubscribeWinfoListL( aReqId )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - iSubscribed = ETrue; - iPrFwId = aReqId; - iOperation = ESubscribeWinfo; - } - else - { - iPrFwId = aReqId; - CompletePrFwReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::DoUnsubscribePresenceWatcherListL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::DoUnsubscribePresenceWatcherListL( - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: DoUnsubscribePresenceWatcherListL")); -#endif - if ( iSubscribed ) - { - TRAPD( err, iConnObs.WinfoHandlerL()->UnsubscribeWinfoListL( aReqId )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - iSubscribed = EFalse; - iPrFwId = aReqId; - iOperation = EUnsubscribeWinfo; - } - else - { - iPrFwId = aReqId; - CompletePrFwReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::PublishReqCompleteL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::PublishReqCompleteL( TInt /*aOpid*/, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: PublishReqCompleteL(")); -#endif - if ( !aStatus ) - { - iPublished = ETrue; - } - else - { - } - - CompletePrFwReq( aStatus ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::PublishTerminatedL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::PublishTerminatedL( TInt /*aOpid*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: PublishTerminatedL")); -#endif - // Notice: nothing to do now in Host APi. - iPublished = EFalse; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::WatcherReqCompleteL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::WatcherReqCompleteL( TInt /*aOpid*/, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: WatcherReqCompleteL")); -#endif - if ( !aStatus ) - { - iSubscribedOwn = ETrue; - } - else - { - } - CompletePrFwReq( aStatus ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::WatcherNotificationL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::WatcherNotificationL( MSimpleDocument& aDocument ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: WatcherNotificationL")); -#endif - - // Notice: Do not need to check the expiration here since WatcherTerminatedL - // is called then too. - - MProtocolPresencePublishingDataHost& publishHost = - iConnObs.Host()->ProtocolPresenceDataHost().PublishingDataHost(); - MPresenceInfo* prInfo = iConnObs.PresenceObjectFactory().NewPresenceInfoLC(); // << prInfo - CSimplePluginData::NotifyToPrInfoL( iConnObs.PresenceObjectFactory(), aDocument, *prInfo ); - -#ifdef _DEBUG - // --------------------------------------------------------- - const MPersonPresenceInfo* pers_debug = prInfo->PersonPresence(); - const MPresenceInfoFieldCollection& coll_debug = pers_debug->Fields(); - TInt count_debug = coll_debug.FieldCount(); - PluginLogger::Log(_L("PluginPublisher: nbr of fields received =%d"), count_debug ); - // --------------------------------------------------------- -#endif - - // PrFw Host API callbacks - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: callback HandleSubscribedOwnPresenceL")); -#endif - publishHost.HandleSubscribedOwnPresenceL( prInfo ); - CleanupStack::Pop(); // >> prInfo - - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::WatcherListNotificationL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::WatcherListNotificationL( MSimplePresenceList& /*aList*/ ) - { - // Notice: not needed. - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::WatcherTerminatedL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::WatcherTerminatedL( - TInt /*aOpId*/, TInt /*aReason*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: WatcherTerminatedL")); -#endif - iSubscribedOwn = EFalse; - - MProtocolPresencePublishingDataHost& publishHost = - iConnObs.Host()->ProtocolPresenceDataHost().PublishingDataHost(); - MXIMPDataSubscriptionState *state = iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - MXIMPStatus* status = iConnObs.ObjectFactory().NewStatusLC(); - state->SetSubscriptionStateL( MXIMPDataSubscriptionState::ESubscriptionInactive ); - status->SetResultCode( KErrCompletion ); -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: callback SetOwnPresenceDataSubscriptionStateL")); -#endif - publishHost.SetOwnPresenceDataSubscriptionStateL( state, status ); - CleanupStack::Pop( 2 ); // status, state - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::CompletePrFwReq -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::CompletePrFwReq( TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: CompletePrFwReq status=%d"), aStatus ); -#endif - if ( iOperation != ENoOperation ) - { - iOperation = ENoOperation; - iConnObs.CompleteReq( iPrFwId, aStatus ); - iPrFwId = TXIMPRequestId(); - } - else - { - } - return; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::DoCancel -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::DoCancel( ) - { - iXdmUtils->Cancel(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::RunL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::RunL( ) - { - - TInt status = iStatus.Int(); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: RunL %d"), status ); -#endif - - if ( !status ) - { - if ( iOperation == ESubscribeOwn ) - { - iSimpleId = iWatcher->SubscribeL( - iConnSets.CurrentSipPresentity8(), - NULL, // aFilter <-> aPif - ETrue, EFalse ); - } - else - { - MakePublishReqL(); - } - } - else - { - CompletePrFwReq( status ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::RunError -// --------------------------------------------------------------------------- -// -TInt CSimplePluginPublisher::RunError( TInt aError ) - { - CompletePrFwReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::GetInterface -// --------------------------------------------------------------------------- -// -TAny* CSimplePluginPublisher::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - MProtocolPresencePublishing* myIf = this; - return myIf; - } - else if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::GetInterface -// --------------------------------------------------------------------------- -// -const TAny* CSimplePluginPublisher::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - const MProtocolPresencePublishing* myIf = this; - return myIf; - } - else if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::GetInterfaceId -// --------------------------------------------------------------------------- -// -TInt32 CSimplePluginPublisher::GetInterfaceId() const - { - return MProtocolPresencePublishing::KInterfaceId; - } - - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::InitializeSimpleDocumentL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::InitializeSimpleDocumentL( ) - { - if ( iDocument ) - { - iDocument->Close(); - iDocument = NULL; - } - iDocument = TSimpleFactory::NewDocumentL(); - iDocument->AddNamespaceL( KSimplePDM, KSimpleNsPDM ); - iDocument->AddNamespaceL( KSimpleRPID, KSimpleNsRPID ); - iDocument->AddNamespaceL( KSimpleOP, KSimpleNsOP ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::AddSimpleDocumentPersL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::AddSimpleDocumentPersL( - const MPersonPresenceInfo* aInfo ) - { - CSimplePluginData::AddPrPersToSimpleDocumentL( - aInfo, *iDocument, iConnSets.CurrentSipPresentity8() ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::AddSimpleDocumentServiceL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::AddSimpleDocumentServiceL( - const MServicePresenceInfo& aInfo ) - { - if ( aInfo.Fields().FieldCount() > 0 || aInfo.ServiceType().Length() ) - { - // Notice: currently all the fields in the namespace are supported, - // but this ensures that if namespace is extended later, it is - // handled right way in the adaptation - User::Leave( KPresenceErrPresenceInfoFieldTypeNotSupported ); - } - else - { - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::AddSimpleDocumentDeviceL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::AddSimpleDocumentDeviceL( - const MDevicePresenceInfo& aInfo ) - { - if ( aInfo.Fields().FieldCount() > 0 || aInfo.DeviceName().Length() ) - { - // Notice: currently all the fields in the namespace are supported, - // but this ensures that if namespace is extended later, it is - // handled right way in the adaptation - User::Leave( KPresenceErrPresenceInfoFieldTypeNotSupported ); - } - else - { - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::MakePublishReqL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::MakePublishReqL( ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: -> MakePublishReqL")); -#endif - // Send the iDocument - if ( !iPublished ) - { - iSimpleId = iPublisher->StartPublishL( *iDocument, ETrue ); - } - else - { - iSimpleId = iPublisher->ModifyPublishL( *iDocument); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::StartXdmOperationL( - TXIMPRequestId aReqId ) - { - TRAPD( err, DoStartXdmOperationL( aReqId )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::DoStartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::DoStartXdmOperationL( - TXIMPRequestId aReqId ) - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - iPrFwId = aReqId; - if ( !iXdmUtils ) - { - iXdmUtils = iConnObs.XdmUtilsL(); - } - iXdmUtils->InitializeXdmL( iStatus ); - SetActive(); - } - - - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::WinfoNotificationL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::WinfoNotificationL( - MSimpleWinfo& aWinfo ) - { - // ignore if not subscribed - if ( !iSubscribed ) - { - return; - } - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: WinfoNotificationL")); -#endif - - // Handle full-state and partial state notifications - // - If terminated -> remove from iWatcherList - // - If active -> add into iWatcherList if does not already exist - // WinfoTerminatedL handles termination of subscription. - - // Notice: CSimplePluginWinfo has completed the open request if needed before this. - - - /* example: - - // active/pending/terminated - - - - - sip:watcherA@example.com" - - */ - - RPointerArray elems; - CleanupClosePushL( elems ); // << elems - TInt err = aWinfo.SimpleElementsL( elems ); - User::LeaveIfError( err ); - TInt count = elems.Count(); - - __ASSERT_DEBUG( count == 1, User::Leave( KErrCorrupt ) ); - - using namespace NSimplePlugin::NSimpleOma; - - const TDesC8* stateVal = aWinfo.AttrValue( KSimpleState8 ); - if ( stateVal && !stateVal->CompareF( KSimpleFull8 )) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: fullstate = TRUE") ); -#endif - // full winfo-list is received - DeleteWatchers(); - } - else - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: fullstate = FALSE") ); -#endif - } - - MSimpleElement* elem = elems[0]; - TPtrC8 p8 = elem->LocalName(); - err = p8.CompareF( KSimpleWatcherList8 ); - User::LeaveIfError( err ); - - err = elem->SimpleElementsL( elems ); - User::LeaveIfError( err ); - - // Collect the active watchers only. - UpdateActiveWatchersListL( elems ); - - CDesCArrayFlat* watchers = MakeCurrentWatcherListLC(); // << watchers - MXIMPObjectCollection *actives = - iConnObs.ObjectFactory().NewObjectCollectionLC(); // << actives - - // Create MPresenceWatcherInfo entities for - // all active watchers and add to actives. - TInt wCount = watchers->MdcaCount(); - for ( TInt j = 0; j < wCount; j++ ) - { - // create MPresenceWatcherInfo object - MPresenceWatcherInfo* wInfo = - iConnObs.PresenceObjectFactory().NewPresenceWatcherInfoLC(); // << wInfo - - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); // << identity -#ifdef _DEBUG - TBuf<200> debug_buffer; - debug_buffer = watchers->MdcaPoint( j ); - PluginLogger::Log(_L("PluginPublisher: add watcher into collection: %S"), &debug_buffer); -#endif - identity->SetIdentityL( watchers->MdcaPoint( j ) ); - wInfo->SetWatcherIdL( identity ); - CleanupStack::Pop( ); // >> identity - - wInfo->SetWatcherDisplayNameL( watchers->MdcaPoint( j ) ); - wInfo->SetWatcherTypeL( MPresenceWatcherInfo::EPresenceSubscriber ); - - actives->AddObjectL( wInfo ); - CleanupStack::Pop( ); // >> wInfo - } - - MProtocolPresencePublishingDataHost& publishHost = - iConnObs.Host()->ProtocolPresenceDataHost().PublishingDataHost(); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: callback HandlePresenceWatcherListL")); -#endif - publishHost.HandlePresenceWatcherListL( actives ); - CleanupStack::Pop(); // >> actives - CleanupStack::PopAndDestroy( watchers ); // >> watchers - CleanupStack::PopAndDestroy( &elems ); // >> elems - - } - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::WinfoTerminatedL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::WinfoTerminatedL( TInt /*aReason*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: WinfoTerminatedL") ); -#endif - - if ( !iSubscribed ) - { - return; - } - - // call SetPresenceWatcherListDataSubscriptionStateL - iSubscribed = EFalse; - - MProtocolPresencePublishingDataHost& publishHost = - iConnObs.Host()->ProtocolPresenceDataHost().PublishingDataHost(); - MXIMPDataSubscriptionState *state = iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - MXIMPStatus* status = iConnObs.ObjectFactory().NewStatusLC(); - state->SetSubscriptionStateL( MXIMPDataSubscriptionState::ESubscriptionInactive ); - state->SetDataStateL( MXIMPDataSubscriptionState::EDataUnavailable ); - status->SetResultCode( KErrCompletion ); -#ifdef _DEBUG - PluginLogger::Log(_L("PluginPublisher: callback SetPresenceWatcherListDataSubscriptionStateL")); -#endif - publishHost.SetPresenceWatcherListDataSubscriptionStateL( state, status ); - CleanupStack::Pop( 2 ); // status, state - } - - -// --------------------------------------------------------------------------- -// CSimplePluginPublisher::UpdateActiveWatchersListL -// --------------------------------------------------------------------------- -// -void CSimplePluginPublisher::UpdateActiveWatchersListL( - RPointerArray& aElems ) - { - // Collect active users. - using namespace NSimplePlugin::NSimpleOma; - - HBufC* nodeContent = NULL; - - TInt count = aElems.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - MSimpleElement* elem = aElems[i]; - TPtrC8 p8( elem->LocalName()); - if (!( p8.CompareF( KSimpleWatcher8 ))) - { - const TDesC8* pp8 = elem->AttrValue( KSimpleStatus8 ); - // Active wathers here - if ( pp8 && !pp8->CompareF( KSimpleActive8 )) - { - - // save id since there may be multiple subscriptions - // from a single watcher SIP identity. - const TDesC8* pId8 = elem->AttrValue( KSimpleId8 ); - - // Build collection of grant requests - // Find the child node containing the SIP entity - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); // << nodeContent - - AddWatcherIfNotExistsL( pId8 ? *pId8 : KNullDesC8, nodeContent->Des() ); - - CleanupStack::PopAndDestroy( nodeContent ); // >> nodeContent - } - // Terminated wathers here, remove them from active list - else if ( pp8 && !pp8->CompareF( KSimpleTerminated8 )) - { - - const TDesC8* pId8 = elem->AttrValue( KSimpleId8 ); - - // Remove terminated from iWatcherList - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); // << nodeContent - - RemoveWatcherIfExistsL( pId8 ? *pId8 : KNullDesC8, nodeContent->Des() ); - - CleanupStack::PopAndDestroy( nodeContent ); // >> nodeContent - } - } - } - - } - - - -// End of file diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simplepluginsession.cpp --- a/presencefwsimpleadpt/src/simplepluginsession.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,223 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "simplepluginsession.h" -#include "simpleplugindebugutils.h" -#include "msimplepluginconnectionobs.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSimplePluginSession::CSimplePluginSession() -// --------------------------------------------------------------------------- -// -CSimplePluginSession::CSimplePluginSession( MSimplePluginConnectionObs& aObs) -: // CActive( CActive::EPriorityStandard ) , - iObs(aObs), iType( MSimplePluginConnectionObs::ENoReq ), iConnected( EFalse ) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::ConstructL() -// --------------------------------------------------------------------------- -// -void CSimplePluginSession::ConstructL( - const MXIMPServiceInfo& aService ) - { - // iIap is needed only - iIap = aService.IapId(); - - iConnection = TSimpleFactory::NewConnectionL( *this ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::NewL() -// --------------------------------------------------------------------------- -// -CSimplePluginSession* CSimplePluginSession::NewL( - const MXIMPServiceInfo& aServiceInfo, - MSimplePluginConnectionObs& aObs ) - { - CSimplePluginSession* self = new( ELeave ) CSimplePluginSession( aObs ); - CleanupStack::PushL( self ); - self->ConstructL( aServiceInfo ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::~CSimplePluginSession() -// --------------------------------------------------------------------------- -// -CSimplePluginSession::~CSimplePluginSession() - { - delete iUserId8; - delete iDomain; - if ( iConnection ) - { - iConnection->Close(); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::SimpleConnection() -// --------------------------------------------------------------------------- -// -MSimpleConnection* CSimplePluginSession::SimpleConnection( ) - { - return iConnection; - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::XdmSettingsId() -// --------------------------------------------------------------------------- -// -TInt CSimplePluginSession::XdmSettingsId( ) - { - return iXdmSetting; - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::CurrentDomain() -// --------------------------------------------------------------------------- -// -TPtrC16 CSimplePluginSession::CurrentDomain( ) - { - return iDomain ? iDomain->Des() : TPtrC16(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::OpenSessionL() -// Notice: MXIMPServiceInfo::IapId supported only -// --------------------------------------------------------------------------- -// -void CSimplePluginSession::OpenSessionL() - { - TPresSettingsSet mySet; - -#ifdef _DEBUG - - PluginLogger::Log(_L("PluginSession: OpenSessionL") ); - - RArray setIds; - CDesCArray* carr = PresSettingsApi::GetAllSetsNamesLC( setIds ); - TInt myCount = setIds.Count(); - for (TInt i=0; i buffer2; buffer2.Copy(carr->MdcaPoint(i)); - PluginLogger::Log(_L("PluginSession: ID:%d = %S"), setIds[i], &buffer2); - } - setIds.Reset(); - CleanupStack::PopAndDestroy( carr ); -#endif - - iConnected = EFalse; - - User::LeaveIfError( PresSettingsApi::SettingsSetL( iIap, mySet )); - iXdmSetting = mySet.iXDMSetting; - - iDomain = mySet.iDomainSyntax.AllocL(); - - // SIP register - iOpId = iConnection->LoginL( iIap ); - iType = MSimplePluginConnectionObs::EOpenSess; - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::OpenSessionL() -// Notice: Multiple connections support to be done. -// --------------------------------------------------------------------------- -// -void CSimplePluginSession::OpenSessionL( TInt aSettingsId ) - { - iIap = aSettingsId; - OpenSessionL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::ConnectionStatusL() -// --------------------------------------------------------------------------- -// -void CSimplePluginSession::ConnectionStatusL( MSimpleConnection::TSimpleState aState ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginSession: ConnectionStatusL %d"), aState ); -#endif - - if ( (aState == MSimpleConnection::EInactive || aState == MSimpleConnection::EUnavailable ) && - iConnected ) - { -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginSession: ConnectionStatusL callback HandleConnectionTerminated") ); -#endif - iConnected = EFalse; - iObs.Host()->HandleConnectionTerminated( NULL ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::RequestCompleteL() -// --------------------------------------------------------------------------- -// -void CSimplePluginSession::RequestCompleteL( TInt /*aOpId*/, TInt aStatus ) - { - MSimplePluginConnectionObs::TReqType current = iType; - iType = MSimplePluginConnectionObs::ENoReq; - if ( !aStatus ) - { - iConnected = ETrue; - } - iObs.CompleteReq( current, aStatus ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginSession::CurrentSipPresentity() -// --------------------------------------------------------------------------- -// -TPtrC8 CSimplePluginSession::CurrentSipPresentity() - { - // Get from Simple engine - delete iUserId8; - iUserId8 = NULL; - TRAP_IGNORE( iUserId8 = iConnection->CurrentSIPIdentityL().AllocL() ); - return iUserId8 ? iUserId8->Des() : TPtrC8(); - } - - - -// End of file - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simplepluginvariation.cpp --- a/presencefwsimpleadpt/src/simplepluginvariation.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,373 +0,0 @@ -/* -* Copyright (c) 2007 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include -#include - -#include "simpleplugincommon.h" -#include "simplepluginvariation.h" -#include "presencefwsimpleadptprivatecrkeys.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::CSimplePluginVariation -// --------------------------------------------------------------------------- -// -CSimplePluginVariation::CSimplePluginVariation( ) -: iDefaultRuleAction(ERuleConfirm), iBlockRuleAction(ERulePoliteBlock) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::ConstructL( ) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginVariation* CSimplePluginVariation::NewL( ) - { - CSimplePluginVariation* self = - new( ELeave ) CSimplePluginVariation(); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::~CSimplePluginVariation -// --------------------------------------------------------------------------- -// -CSimplePluginVariation::~CSimplePluginVariation() - { - delete iGrantAllRuleName; - delete iGrantOwnRuleName; - delete iDefaultRuleName; - delete iBlockRuleName; - delete iRlsGroupUriTemplate; - delete iSharedXdmTop; - delete iGrantListName; - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitL() - { - // Read Central Repository settings - CRepository* repository = NULL; - - TBuf myBuffer; - - TRAP_IGNORE( repository = - CRepository::NewL( KCRUIDPresencefwSimpleadptVariation )); - - CleanupStack::PushL( repository ); - - // initialize strings - delete iGrantAllRuleName; - iGrantAllRuleName = NULL; - delete iGrantOwnRuleName; - iGrantOwnRuleName = NULL; - delete iDefaultRuleName; - iDefaultRuleName = NULL; - delete iBlockRuleName; - iBlockRuleName = NULL; - delete iRlsGroupUriTemplate; - iRlsGroupUriTemplate = NULL; - delete iSharedXdmTop; - iSharedXdmTop = NULL; - delete iGrantListName; - iGrantListName = NULL; - - // Read values from CenRep - InitGrantRuleNameL( repository ); - InitGrantOwnRuleNameL( repository ); - InitDefaultRuleNameL( repository ); - InitBlockRuleNameL( repository ); - InitDefaultRuleActionL( repository ); - InitBlockRuleActionL( repository ); - InitRlsGroupUriTemplateL( repository ); - InitSharedXdmTopL( repository ); - InitGrantListNameL( repository ); - - CleanupStack::PopAndDestroy( repository ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::GrantRuleName -// --------------------------------------------------------------------------- -// -TPtrC CSimplePluginVariation::GrantRuleName() - { - return iGrantAllRuleName ? iGrantAllRuleName->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::GrantOwnRuleName -// --------------------------------------------------------------------------- -// -TPtrC CSimplePluginVariation::GrantOwnRuleName() - { - return iGrantOwnRuleName ? iGrantOwnRuleName->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::DefaultRuleName -// --------------------------------------------------------------------------- -// -TPtrC CSimplePluginVariation::DefaultRuleName() - { - return iDefaultRuleName ? iDefaultRuleName->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::BlockRuleName -// --------------------------------------------------------------------------- -// -TPtrC CSimplePluginVariation::BlockRuleName() - { - return iBlockRuleName ? iBlockRuleName->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::DefaultRuleAction -// --------------------------------------------------------------------------- -// -CSimplePluginVariation::TSimplePluginAuthRule CSimplePluginVariation::DefaultRuleAction() - { - return iDefaultRuleAction; - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::BlockRuleAction -// --------------------------------------------------------------------------- -// -CSimplePluginVariation::TSimplePluginAuthRule CSimplePluginVariation::BlockRuleAction() - { - return iBlockRuleAction; - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::RlsGroupUriTemplate -// --------------------------------------------------------------------------- -// -TPtrC CSimplePluginVariation::RlsGroupUriTemplate() - { - return iRlsGroupUriTemplate ? iRlsGroupUriTemplate->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::SharedXdmTop -// --------------------------------------------------------------------------- -// -TPtrC CSimplePluginVariation::SharedXdmTop() - { - return iSharedXdmTop ? iSharedXdmTop->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::GrantListName -// --------------------------------------------------------------------------- -// -TPtrC CSimplePluginVariation::GrantListName() - { - return iGrantListName ? iGrantListName->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitGrantRuleNameL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitGrantRuleNameL( CRepository* aRepository ) - { - TBuf myBuffer; - - if ( !aRepository || aRepository->Get( KPrFwSimpleGrantAllRuleName, myBuffer )) - { - // Use deault value when not found in Central Repository - myBuffer = KSimpleXdmGrantRule; - } - iGrantAllRuleName = myBuffer.AllocL( ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitGrantOwnRuleNameL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitGrantOwnRuleNameL( CRepository* aRepository ) - { - TBuf myBuffer; - - if ( !aRepository || aRepository->Get( KPrFwSimpleGrantOwnRuleName, myBuffer )) - { - // Use deault value when not found in Central Repository - myBuffer = KSimpleXdmOwnGrantRule; - } - iGrantOwnRuleName = myBuffer.AllocL( ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitDefaultRuleNameL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitDefaultRuleNameL( CRepository* aRepository ) - { - TBuf myBuffer; - - if ( !aRepository || aRepository->Get( KPrFwSimpleDefaultRuleName, myBuffer )) - { - // Use deault value when not found in Central Repository - myBuffer = KSimpleXdmDefaultRule; - } - iDefaultRuleName = myBuffer.AllocL( ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitBlockRuleNameL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitBlockRuleNameL( CRepository* aRepository ) - { - TBuf myBuffer; - - if ( !aRepository || aRepository->Get( KPrFwSimpleBlockRuleName, myBuffer )) - { - // Use deault value when not found in Central Repository - myBuffer = KSimpleXdmBlockRule; - } - iBlockRuleName = myBuffer.AllocL( ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitDefaultRuleActionL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitDefaultRuleActionL( CRepository* aRepository ) - { - TBuf myBuffer; - - using namespace NSimplePlugin::NSimpleOma; - - iDefaultRuleAction = ERuleAllow; - if ( aRepository && !aRepository->Get( KPrFwSimpleDefaultRuleAction, myBuffer )) - { - if ( !myBuffer.CompareF( KSimpleBlock )) - { - iDefaultRuleAction = ERuleBlock; - } - else if ( !myBuffer.CompareF( KSimplePoliteBlock )) - { - iDefaultRuleAction = ERulePoliteBlock; - } - else if ( !myBuffer.CompareF( KSimpleConfirm )) - { - iDefaultRuleAction = ERuleConfirm; - } - else if ( !myBuffer.CompareF( KSimpleAllow )) - { - iDefaultRuleAction = ERuleAllow; - } - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitBlockRuleActionL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitBlockRuleActionL( CRepository* aRepository ) - { - TBuf myBuffer; - - using namespace NSimplePlugin::NSimpleOma; - - iBlockRuleAction = ERuleBlock; - if ( aRepository && !aRepository->Get( KPrFwSimpleBlockRuleAction, myBuffer )) - { - if ( myBuffer.CompareF( KSimpleBlock )) - { - iBlockRuleAction = ERulePoliteBlock; - } - else - { - // default value is used - } - } - else - { - // default value is used - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitRlsGroupUriTemplateL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitRlsGroupUriTemplateL( CRepository* aRepository ) - { - TBuf myBuffer; - - if ( !aRepository || aRepository->Get( KPrFwSimpleRlsGroupUriTemplate, myBuffer )) - { - myBuffer = KSimpleRlsGroupUriTemplate; - } - iRlsGroupUriTemplate = myBuffer.AllocL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitSharedXdmTopL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitSharedXdmTopL( CRepository* aRepository ) - { - TBuf myBuffer; - - if ( !aRepository || aRepository->Get( KPrFwSimpleSharedXdmTop, myBuffer )) - { - myBuffer = KSimpleOMABuddyList; - } - iSharedXdmTop = myBuffer.AllocL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginVariation::InitGrantListNameL -// --------------------------------------------------------------------------- -// -void CSimplePluginVariation::InitGrantListNameL( CRepository* aRepository ) - { - TBuf myBuffer; - - if ( !aRepository || aRepository->Get( KPrFwSimpleGrantListName, myBuffer )) - { - myBuffer = KSimpleS60GrantedList; - } - iGrantListName = myBuffer.AllocL(); - } - -// End of file diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simplepluginwatcher.cpp --- a/presencefwsimpleadpt/src/simplepluginwatcher.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,784 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "simpleplugincommon.h" -#include "simplepluginwatcher.h" -#include "simplepluginentitywatcher.h" -#include "simpleplugindebugutils.h" -#include "simpleutils.h" -#include "simplepluginxdmutils.h" -#include "simpleplugindata.h" -#include "simplepluginconnection.h" - - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::CSimplePluginWatcher -// --------------------------------------------------------------------------- -// -CSimplePluginWatcher::CSimplePluginWatcher( - MSimplePluginSettings& aConnSets, - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ) -: CActive( CActive::EPriorityStandard ), - iConnSets( aConnSets), iConnObs(aObs), iConnection(aConn), iCompleted( ETrue ), - iOperation( EPluginUndef ), iXdmState( EPluginIdle ) - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::ConstructL( ) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginWatcher* CSimplePluginWatcher::NewL( - MSimplePluginSettings& aConnSets, - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ) - { - CSimplePluginWatcher* self = - new( ELeave ) CSimplePluginWatcher( aConnSets, aObs, aConn ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::~CSimplePluginWatcher -// --------------------------------------------------------------------------- -// -CSimplePluginWatcher::~CSimplePluginWatcher() - { - iWatchers.ResetAndDestroy(); - iWatchers.Close(); - delete iPresIdentity; - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoSubscribePresentityPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoSubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& /*aPif*/, // notice: aPif filter not supported - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWatcher: DoSubscribePresentityPresenceL")); -#endif - - TRAPD( err, DoDoSubscribePresentityPresenceL(aPresentityId, aReqId )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoDoSubscribePresentityPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoDoSubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { - iOperation = EPluginUndef; - iXdmState = EPluginIdle; - - SetPresIdentityL( aPresentityId ); - iPrFwId = aReqId; - iCompleted = EFalse; - - HBufC8* pres8 = NULL; - pres8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( iPresIdentity->Des() ); - CleanupStack::PushL( pres8 ); // << pres8 - - CSimplePluginEntityWatcher* watcher = MatchWatcher2L( pres8->Des(), ETrue ); - watcher->StartSubscribeL( pres8->Des() ); - CleanupStack::PopAndDestroy( pres8 ); // >> pres8 - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoUpdatePresentityPresenceSubscriptionPifL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoUpdatePresentityPresenceSubscriptionPifL( - const MXIMPIdentity& /*aPresentityId*/, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: DoUpdatePresentityPresenceSubscriptionPifL")); -#endif - - iOperation = EPluginUndef; - - // notice: aPif filter not supported - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoUnsubscribePresentityPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoUnsubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWatcher: DoUnsubscribePresentityPresenceL")); -#endif - - TRAPD( err, DoDoUnsubscribePresentityPresenceL( aPresentityId, aReqId ) ); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoDoUnsubscribePresentityPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoDoUnsubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { - - iOperation = EPluginUndef; - iXdmState = EPluginIdle; - - SetPresIdentityL( aPresentityId ); - iPrFwId = aReqId; - iCompleted = EFalse; - - HBufC8* pres8 = NULL; - pres8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( iPresIdentity->Des() ); - CleanupStack::PushL( pres8 ); // << pres8 - - CSimplePluginEntityWatcher* watcher = MatchWatcher2L( pres8->Des(), EFalse ); - if ( !watcher ) - { - User::Leave( KErrNotFound ); // Notice: error code - } - else - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWatcher: -> StopSubscribeL")); -#endif - watcher->StopSubscribeL(); - } - CleanupStack::PopAndDestroy( pres8 ); // >> pres8 - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoSubscribePresentityGroupMembersPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoSubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& /*aPif*/, // notice: aPif filter not supported - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: DoSubscribePresentityGroupMembersPresenceL")); -#endif - - iOperation = EPluginSubscribeGroup; - iXdmState = EPluginIdle; - - SetPresIdentityL( aGroupId ); - iPrFwId = aReqId; - iCompleted = EFalse; - - // Get Shared XDM lists first and create RLS service first - StartXdmOperationL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoUpdatePresentityGroupMembersPresenceSubscriptionPifL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoUpdatePresentityGroupMembersPresenceSubscriptionPifL( - const MXIMPIdentity& /*aGroupId*/, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: DoUpdatePresentityGroupMembersPresenceSubscriptionPifL")); -#endif - // notice: aPif filter not supported - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoUnsubscribePresentityGroupMembersPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoUnsubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: DoUnsubscribePresentityGroupMembersPresenceL")); -#endif - TRAPD( err, DoDoUnsubscribePresentityGroupMembersPresenceL( aGroupId, aReqId )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoDoUnsubscribePresentityGroupMembersPresenceL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoDoUnsubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ) - { - iOperation = EPluginUnsubscribeGroup; - iXdmState = EPluginIdle; - - SetPresIdentityL( aGroupId ); - iPrFwId = aReqId; - iCompleted = EFalse; - - HBufC* buf16 = iXdmUtils->RlsServiceByResourceListLC( iPresIdentity->Des() ); // << buf16 - - HBufC8* buf = CnvUtfConverter::ConvertFromUnicodeToUtf8L( buf16->Des() ); - CleanupStack::PushL( buf ); // << buf - - CSimplePluginEntityWatcher* watcher = MatchWatcher2L( buf->Des(), EFalse ); - - CleanupStack::PopAndDestroy( buf ); // >> buf - CleanupStack::PopAndDestroy( buf16 ); // >> buf16 - - if ( !watcher ) - { - User::Leave( KErrNotFound ); // Notice: error code - } - else - { - watcher->StopSubscribeL(); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::GetInterface -// --------------------------------------------------------------------------- -// -TAny* CSimplePluginWatcher::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - MProtocolPresenceWatching* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::GetInterface -// --------------------------------------------------------------------------- -// -const TAny* CSimplePluginWatcher::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - const MProtocolPresenceWatching* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::GetInterfaceId -// --------------------------------------------------------------------------- -// -TInt32 CSimplePluginWatcher::GetInterfaceId() const - { - return MProtocolPresenceWatching::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::MatchWatcher2L -// --------------------------------------------------------------------------- -// -CSimplePluginEntityWatcher* CSimplePluginWatcher::MatchWatcher2L( - const TDesC8& aPresentityid, TBool aCreate ) - { - TInt count = iWatchers.Count(); - for ( TInt i = 0; i < count; i++ ) - { - CSimplePluginEntityWatcher* temp = (iWatchers[i]); - if ( !temp->PresentityId().CompareF( aPresentityid )) - { - return temp; - } - } - - // If watcher was not found, crete it when wanted so. - if ( !aCreate ) - { - return NULL; - } - else - { - CSimplePluginEntityWatcher* watcher = CSimplePluginEntityWatcher::NewL( - iConnObs, iConnection, *this ); - iWatchers.AppendL( watcher ); - return watcher; - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DeleteWatcher -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DeleteWatcher( - const TDesC8& aPresentityid ) - { - -#ifdef _DEBUG - PluginLogger::Log( _L("PluginWatcher: DeleteWatcher **")); -#endif - - TInt count = iWatchers.Count(); - for ( TInt i = 0; i < count; i++ ) - { - CSimplePluginEntityWatcher* temp = (iWatchers[i]); - if ( !temp->PresentityId().CompareF( aPresentityid ) ) - { - iWatchers.Remove( i ); - iWatchers.GranularCompress(); - delete temp; - break; - } - else - { - } - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::GetEntitiesInListL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::GetEntitiesInListL( - const TDesC& aList, MXIMPObjectCollection& aMembers ) - { - __ASSERT_DEBUG( iXdmUtils, User::Leave( KErrCorrupt ) ); - - const TInt KMyGran = 10; - CPtrCArray* ids = new (ELeave) CPtrCArray( KMyGran ); - CleanupStack::PushL( ids ); // << ids - - CPtrCArray* dispNames = new (ELeave) CPtrCArray( KMyGran ); - CleanupStack::PushL( dispNames ); // << dispNames - - iXdmUtils->GetEntitiesInListL( aList, *ids, *dispNames ); - - CopyGroupMembersToCollectionL( *ids, *dispNames, aMembers ); - - CleanupStack::PopAndDestroy( dispNames ); - CleanupStack::PopAndDestroy( ids ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::StartWatchingRlsL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::StartWatchingRlsL() - { - HBufC* buf = iXdmUtils->RlsServiceByResourceListLC( iPresIdentity->Des() ); // << buf - - HBufC8* buf2 = NULL; - buf2 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( buf->Des() ); - CleanupStack::PushL( buf2 ); // << buf2 - - CSimplePluginEntityWatcher* watcher = MatchWatcher2L( buf2->Des(), ETrue ); - - watcher->StartSubscribeListL( buf2->Des() ); - - watcher->SetSimpleNameL( buf2->Des() ); - - CleanupStack::PopAndDestroy( buf2 ); // >> buf2 - CleanupStack::PopAndDestroy( buf ); // >> buf - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::SetPresIdentityL() -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::SetPresIdentityL( - const MXIMPIdentity& aPresentityId ) - { - delete iPresIdentity; - iPresIdentity = NULL; - iPresIdentity = aPresentityId.Identity().AllocL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::CompletePrFwReq -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::CompletePrFwReq( TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWatcher: CompletePrFwReq status=%d"), aStatus ); -#endif - iXdmState = EPluginIdle; - - if ( !iCompleted ) - { - iCompleted = ETrue; - // Convert error code when needed - if ( aStatus == KSimpleErrNotFound && - ( iOperation == EPluginSubscribeGroup || - iOperation == EPluginUnsubscribeGroup )) - { - aStatus = KPresenceErrUnknownPresentityGroup; - } - else if ( aStatus == KSimpleErrNotFound ) - { - aStatus = KPresenceErrUnknownPresentity; - } - else - { - } - iConnObs.CompleteReq( iPrFwId, aStatus ); - iPrFwId = TXIMPRequestId(); - iOperation = EPluginUndef; - } - else - { - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::CompleteWatcher -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::CompleteWatcher( TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWatcher: CompleteWatcher status=%d"), aStatus ); -#endif - // start to remove RLS service when needed. - if ( iOperation == EPluginUnsubscribeGroup && iXdmState == EPluginIdle ) - { - TRAPD( err, iXdmUtils->FetchRlsL( iStatus )); - if ( err ) - { - CompletePrFwReq( err ); - } - else - { - iXdmState = EPluginFetchRls; - SetActive(); - } - } - else - { - CompletePrFwReq( aStatus ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::StartXdmOperationL() - { - TRAPD( err, DoStartXdmOperationL() ); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoStartXdmOperationL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoStartXdmOperationL() - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - if ( !iXdmUtils ) - { - iXdmUtils = iConnObs.XdmUtilsL(); - } - iXdmUtils->InitializeXdmsOnlyL( iStatus ); - - iXdmState = EPluginInitXdm; - - SetActive(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoCancel -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoCancel( ) - { - iXdmUtils->Cancel(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::RunL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::RunL( ) - { - - TInt status = iStatus.Int(); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWatcher: RunL %d"), status ); -#endif - if ( !status ) - { - // create RLS service first here - if ( iOperation == EPluginSubscribeGroup ) - { - DoRunForSubscriptionL(); - } - // remove RLS service when needed. - else if ( iOperation == EPluginUnsubscribeGroup ) - { - DoRunForUnsubscriptionL(); - } - else - { - // Idle state should not be completed. We should not come here - // because of PrFw core makes one request at a time. - } - } - else - { - CompletePrFwReq( status ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::RunError -// --------------------------------------------------------------------------- -// -TInt CSimplePluginWatcher::RunError( TInt aError ) - { - CompletePrFwReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::GetListContentL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::GetListContentL() - { - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - MProtocolPresentityGroupsDataHost& dataHost = - iConnObs.Host()->ProtocolPresenceDataHost().GroupsDataHost(); - - MXIMPObjectCollection* entities = - myFactory.NewObjectCollectionLC(); // << entities - GetEntitiesInListL( iPresIdentity->Des(), *entities ); - - // callback for data - MXIMPIdentity* id = myFactory.NewIdentityLC(); // << id - id->SetIdentityL( iPresIdentity->Des() ); -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: callback HandlePresentityGroupContentL")); -#endif - dataHost.HandlePresentityGroupContentL( id, entities ); - CleanupStack::Pop(); // >> id - CleanupStack::Pop(); // >> entities - - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::CopyGroupMembersToCollectionL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::CopyGroupMembersToCollectionL( - CPtrCArray& aIds, CPtrCArray& aNames, MXIMPObjectCollection& aCollection) - { - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - MPresenceObjectFactory& myPresenceFactory = iConnObs.PresenceObjectFactory(); - TInt count = aIds.Count(); - for ( TInt i=0; i < count; i++ ) - { - // create here MPresentityGroupMemberInfo - MPresentityGroupMemberInfo* info = myPresenceFactory.NewPresentityGroupMemberInfoLC(); // << info - MXIMPIdentity* id = myFactory.NewIdentityLC(); // << id - id->SetIdentityL( aIds[i] ); - info->SetGroupMemberIdL( id ); - CleanupStack::Pop(); // >> id - - info->SetGroupMemberDisplayNameL( aNames[i] ); - aCollection.AddObjectL( info ); - CleanupStack::Pop(); // >> info - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoRunForSubscriptionL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoRunForSubscriptionL( ) - { - if ( iXdmState == EPluginInitXdm ) - { - // get members of the list first - GetListContentL(); - - // Fetch RLS document first before modifying the data. - TRAPD( err, iXdmUtils->FetchRlsL( iStatus )); - if ( err ) - { - CompletePrFwReq( err ); - } - else - { - iXdmState = EPluginFetchRls; - SetActive(); - } - } - else if ( iXdmState == EPluginFetchRls ) - { - // Create RLS document service - iXdmUtils->AddRlsGroupL( iPresIdentity->Des() ); - iXdmState = EPluginAddGroupMember; - iXdmUtils->CommitRlsL( iStatus ); - SetActive(); - } - else - { - StartWatchingRlsL(); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWatcher::DoRunForUnsubscriptionL -// --------------------------------------------------------------------------- -// -void CSimplePluginWatcher::DoRunForUnsubscriptionL( ) - { - TInt status = iStatus.Int(); - if ( iXdmState == EPluginIdle ) - { - TRAPD( err, iXdmUtils->FetchRlsL( iStatus )); - if ( err ) - { - CompletePrFwReq( err ); - } - else - { - iXdmState = EPluginFetchRls; - SetActive(); - } - } - else if ( iXdmState == EPluginFetchRls ) - { - TRAPD( err, iXdmUtils->RemoveRlsServiceByResourceListL( iPresIdentity->Des(), iStatus )); - if ( err ) - { - CompletePrFwReq( err ); - } - else - { - iXdmState = EPluginRemoveGroupMember; - SetActive(); - } - } - else - { - CompletePrFwReq( status ); - } - } - - - -// End of file diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simplepluginwinfo.cpp --- a/presencefwsimpleadpt/src/simplepluginwinfo.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,211 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include - -#include -#include - -#include -#include - -#include "simpleplugincommon.h" -#include "simplepluginwinfo.h" -#include "simpleplugindebugutils.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::CSimplePluginWinfo() -// --------------------------------------------------------------------------- -// -CSimplePluginWinfo::CSimplePluginWinfo( - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ) - : iConnObs(aObs), iConnection(aConn), iSubscribed(0), iWinfoCompleted(EFalse) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::ConstructL() -// --------------------------------------------------------------------------- -// -void CSimplePluginWinfo::ConstructL( ) - { - iWinfoWatcher = TSimpleFactory::NewWinfoWatcherL( iConnection, *this ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::NewL() -// --------------------------------------------------------------------------- -// -CSimplePluginWinfo* CSimplePluginWinfo::NewL( - MSimplePluginConnectionObs& aObs, - MSimpleConnection& aConn ) - { - CSimplePluginWinfo* self = - new( ELeave ) CSimplePluginWinfo( aObs, aConn ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::~CSimplePluginWinfo() -// --------------------------------------------------------------------------- -// -CSimplePluginWinfo::~CSimplePluginWinfo() - { - if ( iWinfoWatcher ) - { - iWinfoWatcher->Close(); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::SetHost() -// --------------------------------------------------------------------------- -// -void CSimplePluginWinfo::SetHost( - MXIMPProtocolConnectionHost* aHost ) - { - iHost = aHost; - } - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::SubscribeWinfoListL() -// --------------------------------------------------------------------------- -// -void CSimplePluginWinfo::SubscribeWinfoListL( TXIMPRequestId aReqId ) - { - iWinfoCompleted = EFalse; - iSubscribed++; - if ( iSubscribed == 1 ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWinfo: -> SubscribeWatcherListL") ); -#endif - iSimpleId = iWinfoWatcher->SubscribeWatcherListL( NULL ); - iSubscribed = ETrue; - iPrFwId = aReqId; - } - else - { - iSimpleId = 0; - iPrFwId = aReqId; - WinfoReqCompleteL( iSimpleId, KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::UnsubscribeWinfoListL() -// --------------------------------------------------------------------------- -// -void CSimplePluginWinfo::UnsubscribeWinfoListL( TXIMPRequestId aReqId ) - { - iWinfoCompleted = EFalse; - TInt orig = iSubscribed; - iSubscribed--; - if ( iSubscribed < 0 ) - { - iSubscribed = 0; - } - - if ( !iSubscribed && orig ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWinfo: -> UnsubscribeL") ); -#endif - iSubscribed++; - iSimpleId = iWinfoWatcher->UnsubscribeL(); - iSubscribed--; - iPrFwId = aReqId; - } - else - { - iSimpleId = 0; - iPrFwId = aReqId; - WinfoReqCompleteL( iSimpleId, KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::WinfoReqCompleteL() -// --------------------------------------------------------------------------- -// -void CSimplePluginWinfo::WinfoReqCompleteL( TInt /*aOpId*/, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWinfo: WinfoReqCompleteL status=%d"), aStatus ); -#endif - - if ( !iWinfoCompleted ) - { - iWinfoCompleted = ETrue; - iSimpleId = 0; - iConnObs.CompleteWinfoReq( iPrFwId, aStatus ); - // Do not wait MXIMPProtocolConnectionHostObserver callback, this - // class is ready to serve the next request now. - iPrFwId = TXIMPRequestId(); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::WinfoTerminatedL() -// --------------------------------------------------------------------------- -// -void CSimplePluginWinfo::WinfoTerminatedL( - TInt aOpId, TInt aReason ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWinfo: WinfoTerminatedL opid=%d"), aOpId ); -#endif - - if ( iSimpleId == aOpId ) - { - iSimpleId = 0; - iConnObs.WinfoTerminatedL( aReason ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginWinfo::WinfoNotificationL() -// --------------------------------------------------------------------------- -// -void CSimplePluginWinfo::WinfoNotificationL( - MSimpleWinfo& aWinfo ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWinfo: WinfoNotificationL starts")); -#endif - - WinfoReqCompleteL( iSimpleId, KErrNone ); - iConnObs.WinfoNotification( aWinfo ); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWinfo: WinfoNotificationL ends")); -#endif - } - - -// End of file - diff -r 2580314736af -r 2669f8761a99 presencefwsimpleadpt/src/simplepluginxdmutils.cpp --- a/presencefwsimpleadpt/src/simplepluginxdmutils.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2522 +0,0 @@ -/* -* Copyright (c) 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "simpleplugindebugutils.h" -#include "simpleplugincommon.h" -#include "simplepluginxdmutils.h" -#include "simpleplugindata.h" -#include "simplepluginvariation.h" -#include "msimplepluginsettings.h" - -// Test suite -#include "msimpleplugintestobs.h" - -// This is for debugging and local test mode oly -#include - -// URI prefixies -const TInt KMyLenPrefix = 4; -_LIT16( KMySip, "sip:" ); -_LIT16( KMyTel, "tel:" ); - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CSimplePluginXdmUtils -// --------------------------------------------------------------------------- -// -CSimplePluginXdmUtils::CSimplePluginXdmUtils( - MSimplePluginSettings& aConnSets, TInt aXmdId ) -: CActive( EPriorityStandard ), - iConnSets(aConnSets), iSettingsId(aXmdId), - iXdmState(EStateIdle), iOperation( ENoOperation), iTestObs( NULL ) - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::ConstructL( ) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginXdmUtils* CSimplePluginXdmUtils::NewL( - MSimplePluginSettings& aConnSets, - TInt aXmdId ) - { - CSimplePluginXdmUtils* self = - new( ELeave ) CSimplePluginXdmUtils( aConnSets, aXmdId ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: NewL this=%d"), (TInt)self); -#endif - - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::~CSimplePluginXdmUtils() -// --------------------------------------------------------------------------- -// -CSimplePluginXdmUtils::~CSimplePluginXdmUtils() - { - - Cancel(); - - CancelWrappers(); - - if ( iXdmDoc && iXdmEngine ) - { - TRAP_IGNORE( iXdmEngine->DeleteDocumentModelL( iXdmDoc )); - } - delete iRlsXdm; - delete iPresenceXdm; - delete iXdmEngine; - delete iAuxBuffer; - - delete iAuxBuffer2; - - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::InitializeXdmL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::InitializeXdmL( TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: InitializeXdmL") ); -#endif - - iOperation = EXdmInit; - iClientStatus = &aStatus; - - if ( !iXdmOk ) - { - GetXdmOMAListsL(); - iXdmState = EGetXdmOMALists; - *iClientStatus = KRequestPending; - } - else if ( !iPresXdmOk ) - { - GetXdmRulesL(); - *iClientStatus = KRequestPending; - } - else - { - // All is ok - *iClientStatus = KRequestPending; - CompleteClientReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::InitializeXdmsOnlyL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::InitializeXdmsOnlyL( TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: InitializeXdmsOnlyL") ); -#endif - - iOperation = EXdmInitXdmsOnly; - iClientStatus = &aStatus; - - if ( !iXdmOk ) - { - GetXdmOMAListsL(); - iXdmState = EGetXdmOMAListsOnly; - *iClientStatus = KRequestPending; - } - else - { - // All is ok - *iClientStatus = KRequestPending; - CompleteClientReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RunL() -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::RunL( ) - { - TPluginXdmState origState = iXdmState; - iXdmState = EStateIdle; - TInt myStatus = iStatus.Int(); - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: RunL %d"), myStatus ); -#endif - - if ( iTestObs ) - { - // Test suite - iTestObs->TestCallbackInRunL( - myStatus, origState, iOperation, KNullDesC ); - } - -#ifdef FAKE_XDM_OK -#ifdef _DEBUG - // -191 = KErrHostUnreach in_sock.h - if ( myStatus == KErrTimedOut || myStatus == KXcapErrorNetworkNotAvailabe || -191 ) - { - PluginLogger::Log(_L("PluginXdmUtils : RunL FAKE_XDM_OK resets error code %d"), myStatus ); - myStatus = 0; - } -#endif -#endif - - DoXdmRunL( origState, myStatus ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoXdmRunL() -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoXdmRunL( TPluginXdmState aOrigState, TInt aStatus ) - { - - switch ( aOrigState ) - { - case EGetXdmOMALists: - case EGetXdmOMAListsOnly: - { - // no OMA resource-list, let's start to create it. - if ( CreateXdmOMAListsIfNeededL() ) - { - iXdmState = aOrigState == EGetXdmOMALists ? ECreateXdmOMALists : ECreateXdmOMAListsOnly; - } - else - { - iXdmOk = ETrue; - if ( !iPresXdmOk && aOrigState == EGetXdmOMALists ) - { - GetXdmRulesL(); - } - else - { - CompleteClientReq( KErrNone ); - } - } - } - break; - case ECreateXdmOMALists: - { - if ( aStatus ) - { - CompleteClientReq( aStatus ); - } - else - { - iXdmOk = ETrue; - GetXdmRulesL(); - } - } - break; - case ECreateXdmOMAListsOnly: - { - if ( !aStatus ) - { - iXdmOk = ETrue; - } - CompleteClientReq( aStatus ); - } - break; - default: - // complete reqular request - CompleteClientReq( aStatus ); - break; - }; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CancelWrappers() -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::CancelWrappers( ) - { - iOperation = EXdmCancel; - - // Cancel M-class interface methods that calls callback method. - if ( iXdmState == EGetRlsServices || - iXdmState == EUpdateRlsServices || - iXdmState == EReUpdateRlsServices ) - { - iXdmState = ECancelDocument; -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: -> iRlsXdm->Cancel")); -#endif - // Better call Cancel() instead of CancelUpdateL(). - // It works and is easier to implement. Otherwise we should have here - // SetActive(); iStatus=KRequestPending; User::WaitForRequest(iStatus) - // and we should have implemented HandleRLSUpdateCancelL that completes - // own iStatus. - iRlsXdm->Cancel(); - } - else if ( iXdmState == EGetXdmRules || - iXdmState == EUpdateXdmRules ) - { - iXdmState = ECancelDocument; -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: -> iPresenceXdm->Cancel")); -#endif - iPresenceXdm->Cancel(); - } - else - { - } - } -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoCancel() -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoCancel( ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: DoCancel")); -#endif - iOperation = EXdmCancel; - - if ( iXdmState == EGetXdmOMALists || iXdmState == ECreateXdmOMALists || - iXdmState == EGetXdmOMAListsOnly || iXdmState == ECreateXdmOMAListsOnly || - iXdmState == EUpdateXdmOMAList ) - { - // Cancel a request made to XDM Engine. - iXdmState = ECancelDocument; -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: iXdmEngine->CancelUpdate")); -#endif - iXdmEngine->CancelUpdate( iXdmDoc ); - CompleteClientReq( KErrCancel ); - } - else - { - // Cancel a request where we have completed our own iStatus. - // Very rare posibility that this happens when GetXdmOMALists is not ready. - // It's very hard to make it happen in test suite. - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RunError -// --------------------------------------------------------------------------- -// -TInt CSimplePluginXdmUtils::RunError( TInt aError ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: RunError")); -#endif - // complete the open request - CompleteClientReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::FetchRlsL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::FetchRlsL( - TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: FetchRlsL")); -#endif - _LIT( KMyOper, "FetchRlsL"); - - iClientStatus = &aStatus; - - iOperation = EXdmRlsFetch; - - if ( !iRlsXdm ) - { - iRlsXdm = CRLSXDM::NewL( iSettingsId ); - } - - if ( iTestObs ) - { - // Test suite - iTestObs->TestCallbackAsynchL( - KErrNone, iXdmState, iOperation, KMyOper ); - } - - // The following returns in MRLSPresXDMAsyncHandler callback -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: -> iRlsXdm->UpdateAllFromServerL")); -#endif - User::LeaveIfError( iRlsXdm->UpdateAllFromServerL( this )); - - *iClientStatus = KRequestPending; - - iXdmState = EGetRlsServices; - - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::AddRlsGroupL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::AddRlsGroupL( - const TDesC& aName ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: AddRlsGroupL")); -#endif - iOperation = EXdmRlsAdd; - - HBufC16* buf = CreateRlsDocumentUri16LC( - aName, iConnSets.CurrentSipPresentity(), iConnSets.CurrentDomain() ); - - // KErrAlreadyExists - TInt errx = iRlsXdm->AddServiceURIL( buf->Des() ); - if ( errx && errx != KErrAlreadyExists ) - { - User::Leave( errx ); - } - User::LeaveIfError( iRlsXdm->SwitchToServiceURIL( buf->Des() )); - - HBufC* xcapUri = TXdmSettingsApi::PropertyL( iSettingsId, EXdmPropUri ); - CleanupStack::PushL( xcapUri ); // << xcapUri - - HBufC* listUri = MakeRlsBuddyUriL( xcapUri->Des(), aName ); - CleanupStack::PushL( listUri ); // << listUri - - TInt err = iRlsXdm->AddElementL( KPresResourceList, - listUri->Des(), aName ); - if ( err && err != KErrAlreadyExists ) - { - User::Leave( err ); - } - - // Save aName for RLS Service URI negoriation handling (HTTP error 409). - // Notice: We assume that only one AddRlsGroupL is called between CommitRlsL methods. - - delete iAuxBuffer; - iAuxBuffer = NULL; - iAuxBuffer = aName.AllocL(); - - CleanupStack::PopAndDestroy( listUri ); // >> listUri - CleanupStack::PopAndDestroy( xcapUri ); // >> xcapUri - CleanupStack::PopAndDestroy( buf ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RemoveRlsGroupL -// Use RemoveRlsServiceByResourceListL when possible -// -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::RemoveRlsGroupL( - const TDesC& aName ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: RemoveRlsGroupL")); -#endif - - iOperation = EXdmRlsRemove; - - HBufC16* buf = CreateRlsDocumentUri16LC( - aName, iConnSets.CurrentSipPresentity(), iConnSets.CurrentDomain() ); - - User::LeaveIfError( iRlsXdm->RemoveServiceURIL( buf->Des())); - CleanupStack::PopAndDestroy( buf ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::AddEntityToGrantedL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::AddEntityToGrantedL( - const TDesC& aUri, TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: AddEntityToGrantedL")); -#endif - iClientStatus = &aStatus; - - iOperation = EXdmAddUserToGroup; - - DoAddUserToListL( iConnSets.Variation().GrantListName(), aUri ); - - // send to the server and start wait a response - UpdateXdmsL(); - iXdmState = EUpdateXdmOMAList; - - *iClientStatus = KRequestPending; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::AddEntityToBlockedL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::AddEntityToBlockedL( - const TDesC& aUri, TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: AddEntityToBlockedL")); -#endif - iClientStatus = &aStatus; - - iOperation = EXdmAddUserToGroup; - DoAddUserToListL( KSimpleOMABlockedList, aUri ); - - // send to the server and start wait a response - UpdateXdmsL(); - iXdmState = EUpdateXdmOMAList; - - *iClientStatus = KRequestPending; - } - -// ---------------------------------------------------- -// CSimplePluginXdmUtils::DoAddUserToListL -// ---------------------------------------------------- -// -void CSimplePluginXdmUtils::DoAddUserToListL( - const TDesC& aList, const TDesC& aUri ) - { - - using namespace NSimplePlugin::NSimpleOma; - - RPointerArray lists; - CleanupClosePushL( lists ); // << lists - - CXdmDocumentNode* root = iXdmDoc->DocumentRoot(); - CXdmDocumentNode* foundNode = SearchListUnderParentL( root, aList ); - - if ( foundNode ) - { - if ( foundNode->IsEmptyNode() ) - { - foundNode->SetEmptyNode( EFalse ); - } - - CXdmDocumentNode* newNode = foundNode->CreateChileNodeL( KSimpleEntry ); - CXdmNodeAttribute* attributeEntryUri = newNode->CreateAttributeL( KSimpleUri ); - attributeEntryUri->SetAttributeValueL( aUri ); - iXdmDoc->AppendL( newNode ); - } - else - { - User::Leave( KErrNotFound ); - } - - CleanupStack::PopAndDestroy( &lists ); // >> lists - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RemoveEntityFromGrantedL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::RemoveEntityFromGrantedL( - const TDesC& aUri, TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: RemoveEntityFromGrantedL")); -#endif - iClientStatus = &aStatus; - - iOperation = EXdmRemoveUserFromGroup; - DoRemoveUserFromListL( iConnSets.Variation().GrantListName(), aUri ); - - // send to the server and start wait a response - UpdateXdmsL(); - iXdmState = EUpdateXdmOMAList; - - *iClientStatus = KRequestPending; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RemoveEntityFromBlockedL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::RemoveEntityFromBlockedL( - const TDesC& aUri, TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: RemoveEntityFromBlockedL")); -#endif - iClientStatus = &aStatus; - - iOperation = EXdmRemoveUserFromGroup; - DoRemoveUserFromListL( KSimpleOMABlockedList, aUri ); - - // send to the server and start wait a response - UpdateXdmsL(); - iXdmState = EUpdateXdmOMAList; - - *iClientStatus = KRequestPending; - } - -// ---------------------------------------------------- -// CSimplePluginXdmUtils::DoRemoveUserFromListL -// ---------------------------------------------------- -// -void CSimplePluginXdmUtils::DoRemoveUserFromListL( - const TDesC& aList, const TDesC& aUri ) - { - CXdmNodeAttribute* attr = NULL; - - using namespace NSimplePlugin::NSimpleOma; - - RPointerArray lists; - CleanupClosePushL( lists ); - - RPointerArray nodes; - CleanupClosePushL( nodes ); - - CXdmDocumentNode* root = iXdmDoc->DocumentRoot(); - CXdmDocumentNode* foundNode = SearchListUnderParentL( root, aList ); - if ( foundNode ) - { - User::LeaveIfError( foundNode->Find( KSimpleEntry, nodes )); - TInt nodeCount = nodes.Count(); - for ( TInt i = 0; i < nodeCount; i++ ) - { - CXdmDocumentNode* currNode = nodes[i]; - attr = ( currNode )->Attribute( KSimpleUri ); - if ( attr && !attr->AttributeValue().CompareF( aUri )) - { - // This is the user we are looking for deletion. - iXdmDoc->DeleteDataL( currNode ); - break; - } - } - } - else - { - User::Leave( KErrNotFound ); - } - - CleanupStack::PopAndDestroy( &nodes ); // >>> nodes - CleanupStack::PopAndDestroy( &lists ); // >>> lists - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RemoveGroupFromGrantedL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::RemoveGroupFromGrantedL( - const TDesC& aName, TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: RemoveGroupFromGrantedL")); -#endif - iClientStatus = &aStatus; - - HBufC* xcapUri = TXdmSettingsApi::PropertyL( iSettingsId, EXdmPropUri ); - CleanupStack::PushL( xcapUri ); // << xcapUri - - HBufC* listUri = MakeRlsBuddyUriL( xcapUri->Des(), aName ); - CleanupStack::PushL( listUri ); // << listUri - - DoRemoveListFromGrantRuleL( listUri->Des() ); - - CleanupStack::PopAndDestroy( listUri ); - CleanupStack::PopAndDestroy( xcapUri ); - - iOperation = EXdmWithdrawGroup; - } - -// ---------------------------------------------------- -// CSimplePluginXdmUtils::DoRemoveListFromGrantRuleL -// ---------------------------------------------------- -// -void CSimplePluginXdmUtils::DoRemoveListFromGrantRuleL( - const TDesC& aListUri ) - { - TPresCondMisc misc; - misc.Init( iPresenceXdm ); - - if ( !misc.DeleteExternalListL( iConnSets.Variation().GrantRuleName(), aListUri )) - { - // update document in the server only if there was a modification. - UpdateXdmRulesL(); - *iClientStatus = KRequestPending; - } - else - { - // Complete without server operation - CompleteClientReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::AddGroupToGrantedL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::AddGroupToGrantedL( - const TDesC& aName, TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: AddGroupToGrantedL")); -#endif - - iClientStatus = &aStatus; - - if ( !DoesUserListExistsL( aName ) ) - { - User::Leave( KErrNotFound ); - } - - HBufC* xcapUri = TXdmSettingsApi::PropertyL( iSettingsId, EXdmPropUri ); - CleanupStack::PushL( xcapUri ); // << xcapUri - - HBufC* listUri = MakeRlsBuddyUriL( xcapUri->Des(), aName ); - CleanupStack::PushL( listUri ); // << listUri - - iOperation = EXdmGrantGroup; - - DoAddListIntoGrantRuleL( listUri->Des() ); - - CleanupStack::PopAndDestroy( listUri ); // >> listUri - CleanupStack::PopAndDestroy( xcapUri ); // >> xcapUri - - *iClientStatus = KRequestPending; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoAddListIntoGrantRuleL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoAddListIntoGrantRuleL( - const TDesC& aListUri) - { - TPresCondMisc misc; - misc.Init( iPresenceXdm ); - - User::LeaveIfError( misc.AddExternListL( iConnSets.Variation().GrantRuleName(), aListUri )); - - UpdateXdmRulesL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::GrantForEveryoneL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::GrantForEveryoneL( TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: GrantForEveryoneL")); -#endif - iClientStatus = &aStatus; - - iOperation = EXdmGrantForAll; - DoGrantForAllL(); - - *iClientStatus = KRequestPending; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::WithdrawFromEveryoneL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::WithdrawFromEveryoneL( TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: WithdrawFromEveryoneL")); -#endif - iClientStatus = &aStatus; - - iOperation = EXdmWithdrawFromAll; - DoWithdrawFromAllL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::SetReactiveAuthL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::SetReactiveAuthL( TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: SetReactiveAuthL")); -#endif - iClientStatus = &aStatus; - - iOperation = EXdmSetReactiveAuth; - DoSetReactiveAuthL(); - - *iClientStatus = KRequestPending; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::SetProactiveAuthL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::SetProactiveAuthL( TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: SetProactiveAuthL")); -#endif - iClientStatus = &aStatus; - - iOperation = EXdmSetProactiveAuth; - DoSetProactiveAuthL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::SubscribeBlockListL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::SubscribeBlockListL( CPtrCArray& aMembers ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: SubscribeBlockListL")); -#endif - iOperation = EXdmGetBlockedList; - DoGetListMembersL( KSimpleOMABlockedList, aMembers ); - // The cient will call a method GetEntitiesL that access those arrays - // Those member arrays will be emptied after the call. + in destrcutor. - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::UnsubscribeBlockListL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::UnsubscribeBlockListL( TRequestStatus& aStatus ) - { - iClientStatus = &aStatus; - *iClientStatus = KRequestPending; - // Subscription state is always terminated - CompleteClientReq( KErrNone ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoGetListMembersL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoGetListMembersL( - const TDesC& aList, CPtrCArray& aMembers ) - { - using namespace NSimplePlugin::NSimpleOma; - - aMembers.Reset(); - - RPointerArray nodes; - CleanupClosePushL( nodes ); - - CXdmNodeAttribute* attr = NULL; - - CXdmDocumentNode* buddylist = DoGetBuddyListL(); - CXdmDocumentNode* foundNode = SearchListUnderParentL( buddylist, aList ); - if ( foundNode ) - { - nodes.Reset(); - // Do not leave if there is nobody blocked - TRAP_IGNORE( foundNode->Find( KSimpleEntry, nodes )); - TInt nodeCount = nodes.Count(); - for ( TInt i = 0; i < nodeCount; i++ ) - { - attr = (nodes[i])->Attribute( KSimpleUri ); - if ( attr ) - { - aMembers.AppendL( attr->AttributeValue() ); - } - } - } - - CleanupStack::PopAndDestroy( &nodes ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::HandleRLSUpdateDocumentL -// RLS Callback -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::HandleRLSUpdateDocumentL( TInt aErrorCode ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: HandleRLSUpdateDocumentL %d"), aErrorCode); -#ifdef FAKE_XDM_OK - - if ( aErrorCode == KErrTimedOut || aErrorCode == KXcapErrorNetworkNotAvailabe || aErrorCode == KErrHostUnreach ) - { - PluginLogger::Log( - _L("PluginXdm : HandleRLSUpdateDocumentL FAKE_XDM_OK resets error code %d"), - aErrorCode ); - aErrorCode = 0; - } -#endif -#endif - - TRAPD( err, DoHandleRLSUpdateDocumentL( aErrorCode )); - if ( err ) - { - // Complete with ok or error the last initial opreration - CompleteClientReq( err ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoHandleRLSUpdateDocumentL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoHandleRLSUpdateDocumentL( TInt aErrorCode ) - { - - if ( iTestObs ) - { - // Test suite - iTestObs->TestCallbackInRunL( aErrorCode, iXdmState, iOperation, KNullDesC ); - } - - // Resend 409 failed request only if the server sent a preposal for the right URI - // and only once, so that this do not remain in endless loop between server and - // a client. - if ( aErrorCode == KXcapErrorHttpConflict && - iOperation == EXdmRlsAdd && - iRlsXdm->NegotiatedServiceUri().Length() ) - { - RlsServiceUriNegotiationL(); - return; - } - - switch ( iXdmState ) - { - case EGetRlsServices: - if ( aErrorCode == KXcapErrorHttpNotFound || aErrorCode == KErrNotFound ) - { - aErrorCode = KErrNone; - } - break; - default: - break; - } - - CompleteClientReq( aErrorCode ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::HandleRLSUpdateCancelL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::HandleRLSUpdateCancelL( TInt /*aErrorCode*/ ) - { - // notice: not needed - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::HandleRLSDeleteAllEmptyListsL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::HandleRLSDeleteAllEmptyListsL( TInt /*aErrorCode*/ ) - { - // Notice: Not needed - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::HandlePresUpdateDocumentL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::HandlePresUpdateDocumentL( TInt aErrorCode ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: HandlePresUpdateDocumentL %d"), aErrorCode); -#ifdef FAKE_XDM_OK - if ( aErrorCode == KErrTimedOut || aErrorCode == KXcapErrorNetworkNotAvailabe || aErrorCode == KErrHostUnreach ) - { - PluginLogger::Log(_L("PluginXdm : HandlePresUpdateDocumentL FAKE_XDM_OK resets error code %d"), aErrorCode ); - aErrorCode = 0; - } -#endif -#endif - - TRAPD( err, DoHandlePresUpdateDocumentL( aErrorCode )); - if ( err ) - { - // Complete with ok or error the last initial opreration - CompleteClientReq( err ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoHandlePresUpdateDocumentL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoHandlePresUpdateDocumentL( TInt aErrorCode ) - { - - if ( iTestObs ) - { - // Test suite - iTestObs->TestCallbackInRunL( - aErrorCode, iXdmState, iOperation, KNullDesC ); - } - - if ( iXdmState == EGetXdmRules ) - { - iXdmState = EStateIdle; - if ( aErrorCode && aErrorCode != KXcapErrorHttpNotFound && - aErrorCode != KErrNotFound ) - { - User::Leave( aErrorCode ); - } - // check and create the rules when needed - MakeInitialXdmsDocumentL(); - } - else - { - iPresXdmOk = ETrue; - // Complete with ok or error the last initial opreration - CompleteClientReq( aErrorCode ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::HandlePresUpdateCancelL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::HandlePresUpdateCancelL( TInt /*aErrorCode*/ ) - { - // notice: not needed - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::GetXdmOMAListsL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::GetXdmOMAListsL() - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: GetXdmOMAListsL")); -#endif - if ( !iXdmEngine ) - { - // get data from a network if not done so yet - CXdmProtocolInfo* info = CXdmProtocolInfo::NewL( iSettingsId ); - CleanupStack::PushL( info ); - // Notice: we don't use cache for XDM - info->SetCacheUsage( EFalse ); - iXdmEngine = CXdmEngine::NewL( *info ); - CleanupStack::PopAndDestroy( info ); - } - if ( !iXdmOk ) - { - using namespace NSimplePlugin::NSimpleOma; - if ( iXdmDoc ) - { - // Clean a document from s previous failed case. - iXdmEngine->DeleteDocumentModelL( iXdmDoc ); - iXdmDoc = NULL; - } - - // Get data from network - iXdmDoc = iXdmEngine->CreateDocumentModelL( KSimpleIndex, EXdmSharedXdm ); - iXdmDoc->FetchDataL(); - UpdateXdmsL(); - iXdmState = EGetXdmOMALists; - } - else - { - // Document already exists, no need to search from a server - iStatus = KRequestPending; - TRequestStatus* s= &iStatus; - User::RequestComplete( s, KErrNone ); - SetActive(); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CreateXdmOMAListsIfNeededL -// Notice: separate CheckXdmOMAListsL method (validity) -// --------------------------------------------------------------------------- -// -TBool CSimplePluginXdmUtils::CreateXdmOMAListsIfNeededL( ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: CreateXdmOMAListsIfNeededL")); -#endif - - using namespace NSimplePlugin::NSimpleOma; - - CXdmDocumentNode* root = iXdmDoc->DocumentRoot(); - if ( !root ) - { - root = iXdmDoc->CreateRootL(); - root->SetNameL( KSimpleResourceLists ); - } - - if ( root->IsEmptyNode() ) - { - root->SetEmptyNode( EFalse ); - } - - TInt isCreated = 0; - - // add all the list nodes - - isCreated += CreateXdmOMAListIfNeededL( root, iConnSets.Variation().SharedXdmTop() ); - - isCreated += CreateXdmOMAListIfNeededL( root, KSimpleOMABlockedList ); - - // grant-list name is variable issue - isCreated += CreateXdmOMAListIfNeededL( root, iConnSets.Variation().GrantListName() ); - - if ( !isCreated ) - { - return EFalse; - } - - // send to the server and start wait a response - iXdmDoc->AppendL( root ); - UpdateXdmsL(); - iXdmState = ECreateXdmOMALists; - - return ETrue; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CreateXdmOMAListIfNeededL -// --------------------------------------------------------------------------- -// -TBool CSimplePluginXdmUtils::CreateXdmOMAListIfNeededL( - CXdmDocumentNode* aRoot, const TDesC& aName ) - { - TBool isCreated( EFalse ); - CXdmDocumentNode* nodeFound = SearchListUnderParentL( aRoot, aName ); - if ( !nodeFound ) - { - CreateResourceListL( aRoot, aName ); - isCreated = ETrue; - } - return isCreated; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CreateResourceListL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::CreateResourceListL( - CXdmDocumentNode* aParent, const TDesC& aName ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: CreateResourceListL")); -#endif - using namespace NSimplePlugin::NSimpleOma; - CXdmDocumentNode* child1 = aParent->CreateChileNodeL( KSimpleList ); - CXdmNodeAttribute* name = child1->CreateAttributeL( KSimpleName ); - name->SetAttributeValueL( aName ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::SearchListUnderParentL -// --------------------------------------------------------------------------- -// -CXdmDocumentNode* CSimplePluginXdmUtils::SearchListUnderParentL( - CXdmDocumentNode* aParent, const TDesC& aName ) - { - using namespace NSimplePlugin::NSimpleOma; - - if ( !aParent ) - { - return NULL; - } - - RPointerArray resultArray; - RPointerArray attributeArray; - - CleanupClosePushL( resultArray ); // <<< resultArray - CleanupClosePushL( attributeArray ); // <<< attributeArray - - SXdmAttribute16 attr; - attr.iName.Set( KSimpleName ); - attr.iValue.Set( aName ); - attributeArray.AppendL( &attr ); - - CXdmDocumentNode* currNode = NULL; - - aParent->Find( KSimpleList, resultArray, attributeArray ); - - TInt count = resultArray.Count(); - for ( TInt i=0; i < count; i++ ) - { - currNode = resultArray[i]; - CXdmDocumentNode* parent = currNode->Parent(); - if ( parent == aParent ) - { - break; - } - currNode = NULL; - } - - CleanupStack::PopAndDestroy( &attributeArray); // >>> attributeArray - CleanupStack::PopAndDestroy( &resultArray ); // >>> resultArray - - return currNode; - - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::MakeRlsUriL -// --------------------------------------------------------------------------- -// -HBufC* CSimplePluginXdmUtils::MakeRlsUriL( - const TDesC& aXcapUri, const TDesC& aListName ) - { - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: MakeRlsUriL")); -#endif - - /* example: - "http://XCAP.EXAMPLE.COM/resource-lists/users/ - sip:USER@EXAMPLE.COM/index/~~/resource-lists/list%5b@name=%22oma_blockedlist%22%5d" - */ - - using namespace NSimplePlugin::NSimpleRls; - - TInt myLen = totalSize; - myLen += aXcapUri.Length(); - myLen += aListName.Length(); - myLen += iConnSets.CurrentSipPresentity().Length(); - HBufC* myBuf = HBufC::NewL( myLen ); - - myBuf->Des().Append( KOne ); - myBuf->Des().Append( aXcapUri); - myBuf->Des().Append( KThree ); - myBuf->Des().Append( iConnSets.CurrentSipPresentity() ); - myBuf->Des().Append( KFive ); - myBuf->Des().Append( aListName ); - myBuf->Des().Append( KSeven ); - - return myBuf; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::MakeRlsBuddyUriL -// --------------------------------------------------------------------------- -// -HBufC* CSimplePluginXdmUtils::MakeRlsBuddyUriL( - const TDesC& aXcapUri, const TDesC& aListName ) - { - /* example: - "http://XCAP.EXAMPLE.COM/resource-lists/users/ - sip:USER@EXAMPLE.COM/~~/resource-lists/list%5b@name=%22oma_buddylist%22%5d/ - list5d@name=%22my_friends%22%5d" - */ - - using namespace NSimplePlugin::NSimpleRlsBuddy; - - TInt myLen = totalSize + aXcapUri.Length() + aListName.Length() + - iConnSets.CurrentSipPresentity().Length(); - - HBufC* myBuf = HBufC::NewL( myLen ); - TPtr temp = myBuf->Des(); - - temp.Append( KOne ); - temp.Append( aXcapUri); - temp.Append( KThree ); - temp.Append( iConnSets.CurrentSipPresentity() ); - temp.Append( KFive ); - temp.Append( aListName ); - temp.Append( KSeven ); - - return myBuf; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::GetXdmRulesL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::GetXdmRulesL() - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: GetXdmRulesL")); -#endif - if ( !iPresenceXdm ) - { - // get data from a network if not done so yet - iPresenceXdm = CPresenceXDM::NewL( iSettingsId ); - } - User::LeaveIfError( iPresenceXdm->UpdateAllFromServerL( this )); - iXdmState = EGetXdmRules; - // The is completed in a callback method, not in RunL - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::MakeInitialXdmsDocumentL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::MakeInitialXdmsDocumentL() - { - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: MakeInitialXdmsDocumentL")); -#endif - TBuf myRuleId; - - TBool ruleAdded( EFalse ); - - TPresenceActionXDM action; - action.Init( iPresenceXdm ); - - TPresenceTransformXDM transform; - transform.Init( iPresenceXdm ); - - TPresCondMisc misc; - misc.Init( iPresenceXdm ); - - TPresCondIdentityOne one; - one.Init( iPresenceXdm ); - - HBufC* xcapUri = TXdmSettingsApi::PropertyL( iSettingsId, EXdmPropUri ); - CleanupStack::PushL( xcapUri ); - HBufC* listUri = MakeRlsUriL( xcapUri->Des(), KSimpleOMABlockedList ); - CleanupStack::PushL( listUri ); - - // Default rule - // get the rule id, use run-time variation - myRuleId = iConnSets.Variation().DefaultRuleName(); // KSimpleXdmDefaultRule; - if ( myRuleId.Length() && !iPresenceXdm->IsRuleExist( myRuleId )) - { - // If default rule does not exist in the variation then do not create it. - MakeDefaultRuleL( myRuleId, action, transform, misc ); - ruleAdded = ETrue; - } - - // Block rule - // get the rule id, use run-time variation - myRuleId = iConnSets.Variation().BlockRuleName(); - // ruleCreate = EFalse; - - if ( !iPresenceXdm->IsRuleExist( myRuleId )) - { - iPresenceXdm->CreateNewRuleL( myRuleId ); - ruleAdded = ETrue; - - // use run-time variation for rule action - CSimplePluginVariation::TSimplePluginAuthRule authRule = - iConnSets.Variation().BlockRuleAction(); - - User::LeaveIfError( misc.AddExternListL( myRuleId, listUri->Des() )); - - switch (authRule) - { - case CSimplePluginVariation::ERulePoliteBlock: - User::LeaveIfError( action.AddOrReplaceActionL(myRuleId, KPresPoliteBlock )); - break; - default: - User::LeaveIfError( action.AddOrReplaceActionL(myRuleId, KPresBlock )); - }; - } - - // Grant rule - // get the rule id, use run-time variation - myRuleId = iConnSets.Variation().GrantRuleName(); - if ( !iPresenceXdm->IsRuleExist( myRuleId )) - { - iPresenceXdm->CreateNewRuleL( myRuleId ); - ruleAdded = ETrue; - CleanupStack::PopAndDestroy( listUri ); - listUri = NULL; - listUri = MakeRlsUriL( xcapUri->Des(), iConnSets.Variation().GrantListName() ); - CleanupStack::PushL( listUri ); - User::LeaveIfError( misc.AddExternListL( myRuleId, listUri->Des() )); - User::LeaveIfError( action.AddOrReplaceActionL( myRuleId, KPresAllow )); - User::LeaveIfError( transform.AddOrRepProvideAllTransComplexL( - myRuleId, KPresProvideAllAttributes )); - User::LeaveIfError( transform.AddOrRepProvideAllTransComplexL( - myRuleId, KPresProvidePersons )); - User::LeaveIfError( transform.AddOrRepProvideAllTransComplexL( - myRuleId, KPresProvideDevices )); - User::LeaveIfError( transform.AddOrRepProvideAllTransComplexL( - myRuleId, KPresProvideServices )); - } - - // Grant own subscription rule - // get the rule id, use run-time variation - myRuleId = iConnSets.Variation().GrantOwnRuleName(); - if ( !iPresenceXdm->IsRuleExist( myRuleId )) - { - iPresenceXdm->CreateNewRuleL( myRuleId ); - ruleAdded = ETrue; - User::LeaveIfError( action.AddOrReplaceActionL( myRuleId, KPresAllow )); - User::LeaveIfError( transform.AddOrRepProvideAllTransComplexL( - myRuleId, KPresProvideAllAttributes )); - User::LeaveIfError( transform.AddOrRepProvideAllTransComplexL( - myRuleId, KPresProvidePersons )); - User::LeaveIfError( transform.AddOrRepProvideAllTransComplexL( - myRuleId, KPresProvideDevices )); - User::LeaveIfError( transform.AddOrRepProvideAllTransComplexL( - myRuleId, KPresProvideServices )); - // own sip identity - User::LeaveIfError( one.AddIdentityL( - myRuleId, iConnSets.CurrentSipPresentity() )); - } - - // Update into server only when needed. - if ( ruleAdded ) - { - UpdateXdmRulesL(); - } - else - { - iXdmState = EUpdateXdmRules; - iPresXdmOk = ETrue; - // Complete with ok or error the last initial opreration - CompleteClientReq( KErrNone ); - } - - CleanupStack::PopAndDestroy( listUri ); - CleanupStack::PopAndDestroy( xcapUri ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoGrantForAllL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoGrantForAllL() - { - const TInt KMyPresRuleIDLength(30); - TBuf myRuleId; - - TInt err( KErrNone ); - - TPresenceActionXDM action; - action.Init( iPresenceXdm ); - - // Default rule id is searched - myRuleId = iConnSets.Variation().DefaultRuleName(); // KSimpleXdmDefaultRule; - TRAP( err, iPresenceXdm->CreateNewRuleL( myRuleId ) ); - if ( err && err != KErrAlreadyExists ) - { - User::Leave( err ); - } - - // modify the rule in the server. - User::LeaveIfError( action.AddOrReplaceActionL( myRuleId, KPresAllow )); - UpdateXdmRulesL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoWithdrawFromAllL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoWithdrawFromAllL() - { - const TInt KMyPresRuleIDLength(30); - TBuf myRuleId; - - /* pseudo code: - if current rule is ALLOW then { BLOCK } - otherwise no action. - */ - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginWatcher: DoWithdrawFromAllL TEST COVERS 3")); -#endif - - - TInt err( KErrNone ); - - TPresenceActionXDM action; - action.Init( iPresenceXdm ); - - // Default rule id is searched - myRuleId = iConnSets.Variation().DefaultRuleName(); - TRAP( err, iPresenceXdm->CreateNewRuleL( myRuleId ) ); - if ( err && err != KErrAlreadyExists ) - { - User::Leave( err ); - } - - TBuf myActionBuf; - err = action.GetActionL( myRuleId, myActionBuf); - - if ( !myActionBuf.CompareF( KPresAllow ) ) - { - User::LeaveIfError( action.AddOrReplaceActionL( myRuleId, KPresPoliteBlock )); - UpdateXdmRulesL(); - *iClientStatus = KRequestPending; - } - else - { - CompleteClientReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoSetReactiveAuthL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoSetReactiveAuthL() - { -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: DoSetReactiveAuthL TEST COVERS 5")); -#endif - - // Default rule is modified to CONFIRM - - const TInt KMyPresRuleIDLength(30); - TBuf myRuleId; - - TInt err( KErrNone ); - - TPresenceActionXDM action; - action.Init( iPresenceXdm ); - - // Default rule id is searched - myRuleId = iConnSets.Variation().DefaultRuleName(); - TRAP( err, iPresenceXdm->CreateNewRuleL( myRuleId ) ); - if ( err && err != KErrAlreadyExists ) - { -#ifdef _DEBUG - PluginLogger::Log( _L("PluginWatcher: TEST COVERS 5b")); -#endif - User::Leave( err ); - } - - // modify the rule in the server. - User::LeaveIfError( action.AddOrReplaceActionL( myRuleId, KPresConfirm )); - UpdateXdmRulesL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoSetProactiveAuthL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DoSetProactiveAuthL() - { -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginWatcher: DoSetProactiveAuthL TEST COVERS 6")); -#endif - - /* pseudo code: - if current rule is CONFIRM then { ALLOW } - otherwise no action. - */ - - const TInt KMyPresRuleIDLength(30); - TBuf myRuleId; - - TInt err( KErrNone ); - - TPresenceActionXDM action; - action.Init( iPresenceXdm ); - - // Default rule id is searched - myRuleId = iConnSets.Variation().DefaultRuleName(); - TRAP( err, iPresenceXdm->CreateNewRuleL( myRuleId ) ); - if ( err && err != KErrAlreadyExists ) - { - User::Leave( err ); - } - - // modify the rule in the server. - TBuf myActionBuf; - err = action.GetActionL( myRuleId, myActionBuf); - - if ( !myActionBuf.CompareF( KPresConfirm ) ) - { - User::LeaveIfError( action.AddOrReplaceActionL( myRuleId, KPresAllow )); - UpdateXdmRulesL(); - *iClientStatus = KRequestPending; - } - else - { - CompleteClientReq( KErrNone ); - } - - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CreateEntityGroupL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::CreateEntityGroupL( - const TDesC& aName, const TDesC& aDisplayName ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: CreateEntityGroupL")); -#endif - iOperation = EXdmCreateGroup; - DoCreateEntityGroupL( aName, aDisplayName ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DeleteEntityGroupL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::DeleteEntityGroupL( - const TDesC& aName) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: DeleteEntityGroupL")); -#endif - - iOperation = EXdmDeleteGroup; - DoDeleteEntityGroupL( aName ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::AddPresentityGroupMemberL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::AddPresentityGroupMemberL( - const TDesC& aGroup, - const TDesC& aUser, - const TDesC& aDispName, - TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: AddPresentityGroupMemberL")); -#endif - - iClientStatus = &aStatus; - - iOperation = EXdmAddUserToGroup; - DoAddUserToUserListL( aGroup, aUser, aDispName ); - - // send to the server and start wait a response - UpdateXdmsL(); - - *iClientStatus = KRequestPending; - iXdmState = EUpdateXdmOMAList; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RemovePresentityGroupMemberL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::RemovePresentityGroupMemberL( - const TDesC& aGroup, - const TDesC& aUser, - TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: RemovePresentityGroupMemberL")); -#endif - - iClientStatus = &aStatus; - - iOperation = EXdmAddUserToGroup; - DoRemoveUserFromUserListL( aGroup, aUser ); - - // send to the server and start wait a response - UpdateXdmsL(); - - *iClientStatus = KRequestPending; - iXdmState = EUpdateXdmOMAList; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::GetUserListsL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::GetUserListsL( - CDesCArrayFlat& aIds, CDesCArrayFlat& aDispNames ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: GetUserListsL")); -#endif - using namespace NSimplePlugin::NSimpleOma; - - aIds.Reset(); - aDispNames.Reset(); - - CXdmDocumentNode* buddylist = DoGetBuddyListL(); - CXdmDocumentNode* entry = NULL; - - RPointerArray lists; - CleanupClosePushL( lists ); // <<< lists - - RPointerArray lists2; - CleanupClosePushL( lists2 ); // <<< lists2 - - buddylist->Find( KSimpleList, lists ); - TInt count = lists.Count(); - for ( TInt i=0; i < count; i++ ) - { - // Name - entry = lists[i]; - CXdmNodeAttribute* attr = entry->Attribute( KSimpleName ); - if ( attr ) - { - aIds.AppendL( attr->AttributeValue() ); -#ifdef _DEBUG - TBuf<200> debug_buffer; - debug_buffer = attr->AttributeValue(); - PluginLogger::Log(_L("PluginXdm: add group id into aIds : %S"), &debug_buffer ); -#endif - } - else - { - continue; - } - // Display name - TInt err = entry->Find( KSimpleDisplayName, lists2 ); - // Notice: assume there is only one display-name. - // Always when an item is added into aIds we have to add an itmem also into aDispNames. - if ( !err ) - { - CXdmDocumentNode* disName = lists2[0]; - if ( !disName->IsEmptyNode() ) - { - // Convert Display-Name to Unicode. - HBufC16* uri16 = NULL; - uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( disName->LeafNodeContent() ); - CleanupStack::PushL( uri16 ); // << uri16 - aDispNames.AppendL( uri16->Des() ); - CleanupStack::PopAndDestroy( uri16 ); // >> uri16 - } - else - { - aDispNames.AppendL( KNullDesC ); - } - } - else - { - aDispNames.AppendL( KNullDesC ); - } - } - - CleanupStack::PopAndDestroy( &lists2 ); // >>> lists2 - CleanupStack::PopAndDestroy( &lists ); // >>> lists - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::GetEntitiesInListL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::GetEntitiesInListL( - const TDesC& aList, CPtrCArray& aIds, CPtrCArray& aDispNames ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: GetEntitiesInListL")); -#endif - - using namespace NSimplePlugin::NSimpleOma; - - CXdmDocumentNode* buddylist = DoGetBuddyListL(); - CXdmDocumentNode* target = DoGetUserListL( aList, buddylist ); - - // make a collection of MPresentityGroupMemberInfo - RPointerArray entries; - CleanupClosePushL(entries); // <<< entries - - RPointerArray nodes; - CleanupClosePushL(nodes); // <<< nodes - - target->Find( KSimpleEntry, entries ); - TInt count = entries.Count(); - for ( TInt i=0; i < count; i++ ) - { - // ID - CXdmDocumentNode* entry = entries[i]; - CXdmNodeAttribute* attr = entry->Attribute( KSimpleUri ); - if ( attr ) - { - aIds.AppendL( attr->AttributeValue() ); -#ifdef _DEBUG - TBuf<200> debug_buffer; - debug_buffer = attr->AttributeValue(); - PluginLogger::Log(_L("PluginXdm: add member into collection : %S"), &debug_buffer ); -#endif - } - else - { - continue; - } - - // Display name - TInt err = entry->Find( KSimpleDisplayName, nodes ); - // Notice: assume there is only one display-name - if ( !err ) - { - CXdmDocumentNode* disName = nodes[0]; - HBufC16* uri16 = NULL; - uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( disName->LeafNodeContent() ); - CleanupStack::PushL( uri16 ); // << uri16 - aDispNames.AppendL( uri16->Des() ); - CleanupStack::PopAndDestroy( uri16 ); // >> uri16 - } - else - { - aDispNames.AppendL( TPtrC() ); - } - } - - CleanupStack::PopAndDestroy( &nodes ); // >>> nodes - CleanupStack::PopAndDestroy( &entries ); // >>> entries - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CommitXdmL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::CommitXdmL( TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: CommitXdmL")); -#endif - iClientStatus = &aStatus; - - UpdateXdmsL(); - - *iClientStatus = KRequestPending; - iXdmState = EUpdateXdmOMAList; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CommitRlsL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::CommitRlsL( TRequestStatus& aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: CommitRlsL")); -#endif - iClientStatus = &aStatus; - *iClientStatus = KRequestPending; - UpdateRlsL(); - - iXdmState = EUpdateRlsServices; - } - -// ---------------------------------------------------- -// CSimplePluginXdmUtils::DoCreateEntityGroupL -// ---------------------------------------------------- -// -void CSimplePluginXdmUtils::DoCreateEntityGroupL( - const TDesC& aList, const TDesC& aDisName ) - { - using namespace NSimplePlugin::NSimpleOma; - - CXdmDocumentNode* buddylist = DoGetBuddyListL(); - if ( buddylist->IsEmptyNode() ) - { - buddylist->SetEmptyNode( EFalse ); - } - - CXdmDocumentNode* foundNode = SearchListUnderParentL( - buddylist, aDisName ); - - if ( foundNode ) - { - User::Leave( KErrAlreadyExists ); - } - - CXdmDocumentNode* newNode = buddylist->CreateChileNodeL( KSimpleList ); - CXdmNodeAttribute* attributeName = newNode->CreateAttributeL( KSimpleName ); - attributeName->SetAttributeValueL( aList ); - - // Display name - CXdmDocumentNode* displayName = newNode->CreateChileNodeL( KSimpleDisplayName ); - displayName->SetLeafNode( ETrue ); - displayName->SetLeafNodeContentL( aDisName ); - - iXdmDoc->AppendL( newNode ); - } - -// ---------------------------------------------------- -// CSimplePluginXdmUtils::DoDeleteEntityGroupL -// ---------------------------------------------------- -// -void CSimplePluginXdmUtils::DoDeleteEntityGroupL( - const TDesC& aList ) - { - CXdmDocumentNode* buddylist = DoGetBuddyListL(); - CXdmDocumentNode* target = DoGetUserListL( aList, buddylist ); - iXdmDoc->DeleteDataL( target ); - // iXdmEngine is asked to be updated to a server by CSimplePlugingGroups later. - } - -// ---------------------------------------------------- -// CSimplePluginXdmUtils::DoAddUserToUserListL -// ---------------------------------------------------- -// -void CSimplePluginXdmUtils::DoAddUserToUserListL( - const TDesC& aList, const TDesC& aUser, const TDesC& aDisName ) - { - RPointerArray resultArray; - RPointerArray attributeArray; - - CleanupClosePushL( resultArray ); // << resultArray - CleanupClosePushL( attributeArray ); // << attributeArray - - CXdmDocumentNode* buddylist = DoGetBuddyListL(); - CXdmDocumentNode* target = DoGetUserListL( aList, buddylist ); - - if ( target->IsEmptyNode() ) - { - target->SetEmptyNode( EFalse ); - } - - using namespace NSimplePlugin::NSimpleOma; - - SXdmAttribute16 attr; - attr.iName.Set( KSimpleUri ); - attr.iValue.Set( aUser ); - attributeArray.AppendL( &attr ); - - // If member already exists then leave - target->Find( KSimpleEntry, resultArray, attributeArray ); - if ( resultArray.Count() > 0 ) - { - User::Leave( KErrAlreadyExists ); - } - - CXdmDocumentNode* newNode = target->CreateChileNodeL( KSimpleEntry ); - CXdmNodeAttribute* attributeName = newNode->CreateAttributeL( KSimpleUri ); - attributeName->SetAttributeValueL( aUser ); - - // Display name - CXdmDocumentNode* displayName = newNode->CreateChileNodeL( KSimpleDisplayName ); - displayName->SetLeafNode( ETrue ); - displayName->SetLeafNodeContentL( aDisName ); - - iXdmDoc->AppendL( newNode ); - - CleanupStack::PopAndDestroy( &attributeArray ); - CleanupStack::PopAndDestroy( &resultArray ); - } - -// ---------------------------------------------------- -// CSimplePluginXdmUtils::DoRemoveUserFromUserListL -// ---------------------------------------------------- -// -void CSimplePluginXdmUtils::DoRemoveUserFromUserListL( - const TDesC& aList, const TDesC& aUri ) - { - CXdmNodeAttribute* attr = NULL; - TBool myFound( EFalse ); - - using namespace NSimplePlugin::NSimpleOma; - - CXdmDocumentNode* buddylist = DoGetBuddyListL(); - CXdmDocumentNode* target = DoGetUserListL( aList, buddylist ); - - RPointerArray entries; - CleanupClosePushL( entries ); // <<< entries - - User::LeaveIfError( target->Find( KSimpleEntry, entries )); - TInt nodeCount = entries.Count(); - for ( TInt i = 0; i < nodeCount; i++ ) - { - CXdmDocumentNode* currNode = entries[i]; - attr = currNode->Attribute( KSimpleUri ); - if ( attr && !attr->AttributeValue().CompareF( aUri )) - { - // This is the user we are looking for deletion. - iXdmDoc->DeleteDataL( currNode ); - myFound = ETrue; - break; - } - } - - CleanupStack::PopAndDestroy( &entries ); // >>> entries - - if ( !myFound ) - { - // If the member is not found then leave - User::Leave( KErrNotFound ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoGetBuddyListL -// --------------------------------------------------------------------------- -// -CXdmDocumentNode* CSimplePluginXdmUtils::DoGetBuddyListL() - { - CXdmDocumentNode* root = iXdmDoc->DocumentRoot(); - CXdmDocumentNode* ret = SearchListUnderParentL( root, iConnSets.Variation().SharedXdmTop() ); - if ( !ret ) - { - User::Leave( KErrNotFound ); - } - return ret; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoGetUserListL -// --------------------------------------------------------------------------- -// -CXdmDocumentNode* CSimplePluginXdmUtils::DoGetUserListL( - const TDesC& aList, CXdmDocumentNode* aBuddyList ) - { - CXdmDocumentNode* listNode = NULL; - CXdmNodeAttribute* attr = NULL; - TBool found( EFalse ); - - using namespace NSimplePlugin::NSimpleOma; - - RPointerArray lists; - CleanupClosePushL( lists ); - - User::LeaveIfError( aBuddyList->Find( KSimpleList, lists )); - TInt count = lists.Count(); - for ( TInt i=0; i < count; i++ ) - { - listNode = lists[i]; - attr = listNode->Attribute( KSimpleName ); - if ( attr && !attr->AttributeValue().CompareF( aList )) - { - // List is found - found = ETrue; - break; - } - } - if ( !found ) - { - User::Leave( KErrNotFound ); - } - - CleanupStack::PopAndDestroy( &lists ); - return listNode; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::UpdateXdmRulesL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::UpdateXdmRulesL() - { - _LIT( KMyOper, "UpdateXdmRulesL"); - if ( iTestObs ) - { - // Test suite - iTestObs->TestCallbackAsynchL( - KErrNone, iXdmState, iOperation, KMyOper ); - } - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: UpdateXdmRulesL -> iPresenceXdm->UpdateToServerL")); -#endif - User::LeaveIfError( iPresenceXdm->UpdateToServerL( this )); - iXdmState = EUpdateXdmRules; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::UpdateXdmsL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::UpdateXdmsL() - { - _LIT( KMyOper, "UpdateXdmsL"); - if ( iTestObs ) - { - // Test suite - iTestObs->TestCallbackAsynchL( - KErrNone, iXdmState, iOperation, KMyOper ); - } - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: UpdateXdmsL -> iXdmEngine->UpdateToServerL")); -#endif - iXdmEngine->UpdateL( iXdmDoc, iStatus ); - SetActive(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::UpdateRlsL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::UpdateRlsL() - { - _LIT( KMyOper, "UpdateRlsL"); - - if ( iTestObs ) - { - // Test suite - iTestObs->TestCallbackAsynchL( - KErrNone, iXdmState, iOperation, KMyOper ); - } -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: -> iRlsXdm->UpdateToServerL")); -#endif - User::LeaveIfError( iRlsXdm->UpdateToServerL( this )); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::SetTestObserver -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::SetTestObserver( MSimplePluginTestObs* aObs ) - { - iTestObs = aObs; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CreateRlsDocumentUri16LC -// --------------------------------------------------------------------------- -// -HBufC16* CSimplePluginXdmUtils::CreateRlsDocumentUri16LC( - const TDesC16& aGroup, - const TDesC16& aPresentityUri, - const TDesC16& aDomain ) - { - - TPtrC uriTemplate( iConnSets.Variation().RlsGroupUriTemplate() ); - - // Calculate URI length - TInt uriSize = uriTemplate.Length() + KMyLenPrefix; - if ( uriTemplate.Find( KSimpleGroupTag ) != KErrNotFound ) - { - TPtrC p8( KSimpleGroupTag ); - uriSize = uriSize - p8.Length() + aGroup.Length(); - } - if ( uriTemplate.Find( KSimpleUserTag ) != KErrNotFound ) - { - TPtrC p8( KSimpleUserTag ); - uriSize = uriSize - p8.Length() + aPresentityUri.Length(); - } - if ( uriTemplate.Find( KSimpleDomainTag ) != KErrNotFound ) - { - TPtrC p8( KSimpleDomainTag ); - uriSize = uriSize - p8.Length() + aDomain.Length(); - } - - // allocate new buffer for URI - // Temporarily the buffer might need more space then the final URI length - // (when tags are longer than the real values replacing them). - if ( uriSize < uriTemplate.Length() + KMyLenPrefix ) - { - uriSize = uriTemplate.Length() + KMyLenPrefix + - aGroup.Length() + aPresentityUri.Length() + aDomain.Length(); - } - HBufC16* buf = HBufC16::NewLC( uriSize ); - TPtr16 pBuf(buf->Des()); - - // Append "sip:" prefix - pBuf.Append( KMySip ); - - // Append template - pBuf.Append( uriTemplate ); - - // Replace tags in URI template with the real values. - ReplaceGroupTag( buf, aGroup ); - ReplaceDomainTag( buf, aDomain ); - ReplaceUserTag( buf, aPresentityUri ); - - return buf; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoesUserListExistsL -// --------------------------------------------------------------------------- -// -TBool CSimplePluginXdmUtils::DoesUserListExistsL( const TDesC& aName ) - { - CXdmDocumentNode* buddylist = DoGetBuddyListL(); - CXdmDocumentNode* foundNode = SearchListUnderParentL( buddylist, aName ); - return foundNode ? ETrue : EFalse; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::AuxBuffer -// --------------------------------------------------------------------------- -// -TPtrC CSimplePluginXdmUtils::AuxBuffer( ) - { - return iAuxBuffer ? iAuxBuffer->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RemoveRlsServiceByResourceListL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::RemoveRlsServiceByResourceListL( - const TDesC& aGroup, TRequestStatus& aStatus ) - { - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: RemoveRlsServiceByResourceListL")); -#endif - - TBool ret( EFalse ); - - iOperation = EXdmRlsRemove; - iClientStatus = &aStatus; - - // convert a Group into resource-list value - HBufC* xcapUri = TXdmSettingsApi::PropertyL( iSettingsId, EXdmPropUri ); - CleanupStack::PushL( xcapUri ); // << xcapUri - - HBufC* listUri = MakeRlsBuddyUriL( xcapUri->Des(), aGroup ); - CleanupStack::PushL( listUri ); // << listUri - - // remove service-uri in the rls-services document - ret = DoRemoveRlsServiceByResourceListL( listUri->Des() ); - - CleanupStack::PopAndDestroy( listUri ); - CleanupStack::PopAndDestroy( xcapUri ); - - *iClientStatus = KRequestPending; - - if ( ret ) - { - // Update RLS document when needed. - UpdateRlsL(); - iXdmState = EUpdateRlsServices; - } - else - { - CompleteClientReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoRemoveRlsServiceByResourceListL -// --------------------------------------------------------------------------- -// -TBool CSimplePluginXdmUtils::DoRemoveRlsServiceByResourceListL( const TDesC& aResourceList ) - { - TBool ret( EFalse ); - - CDesC16Array* myArray = new (ELeave) CDesC16ArraySeg(10); - CleanupStack::PushL( myArray ); - - CDesC16Array* myValues = new (ELeave) CDesC16ArraySeg(10); - CleanupStack::PushL( myValues ); - - iRlsXdm->GetServiceUrisL( *myArray ); - TInt myCount = myArray->MdcaCount(); - - for ( TInt i=0; i < myCount && !ret; i++ ) - { - iRlsXdm->SwitchToServiceURIL( myArray->MdcaPoint( i )); - iRlsXdm->GetElementsL( KPresResourceList, *myValues); - TInt myValuesCount = myValues->MdcaCount(); - for ( TInt j=0; j < myValuesCount; j++ ) - { - if ( !myValues->MdcaPoint( i ).Compare( aResourceList ) ) - { - // delete service with the URI - iRlsXdm->RemoveServiceURIL( myArray->MdcaPoint( i ) ); - ret = ETrue; - break; - } - } - } - - CleanupStack::PopAndDestroy( myValues ); - CleanupStack::PopAndDestroy( myArray ); - - return ret; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RlsServiceByResourceListL -// --------------------------------------------------------------------------- -// -HBufC* CSimplePluginXdmUtils::RlsServiceByResourceListLC( - const TDesC& aGroup ) - { - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: :RlsServiceByResourceListLC")); -#endif - - HBufC* myRet = NULL; - - // convert a Group into resource-list value - HBufC* xcapUri = TXdmSettingsApi::PropertyL( iSettingsId, EXdmPropUri ); - CleanupStack::PushL( xcapUri ); // << xcapUri - - HBufC* listUri = MakeRlsBuddyUriL( xcapUri->Des(), aGroup ); - CleanupStack::PushL( listUri ); // << listUri - - // remove service-uri in the rls-services document - myRet = DoGetRlsServiceByResourceListL( listUri->Des() ); - - CleanupStack::PopAndDestroy( listUri ); - CleanupStack::PopAndDestroy( xcapUri ); - - CleanupStack::PushL( myRet ); - - return myRet; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::DoGetRlsServiceByResourceListL -// --------------------------------------------------------------------------- -// -HBufC* CSimplePluginXdmUtils::DoGetRlsServiceByResourceListL( const TDesC& aResourceList ) - { - - HBufC* ret = NULL; - - CDesC16Array* myArray = new (ELeave) CDesC16ArraySeg(10); - CleanupStack::PushL( myArray ); - - CDesC16Array* myValues = new (ELeave) CDesC16ArraySeg(10); - CleanupStack::PushL( myValues ); - - iRlsXdm->GetServiceUrisL( *myArray ); - TInt myCount = myArray->MdcaCount(); - - for ( TInt i=0; i < myCount && !ret; i++ ) - { - iRlsXdm->SwitchToServiceURIL( myArray->MdcaPoint( i )); - iRlsXdm->GetElementsL( KPresResourceList, *myValues); - TInt myValuesCount = myValues->MdcaCount(); - for ( TInt j=0; j < myValuesCount; j++ ) - { - if ( !myValues->MdcaPoint( i ).Compare( aResourceList ) ) - { - // save the URI - ret = myArray->MdcaPoint( i ).AllocL(); - break; - } - } - } - - CleanupStack::PopAndDestroy( myValues ); - CleanupStack::PopAndDestroy( myArray ); - - if ( !ret ) - { - User::Leave( KErrNotFound ); - } - return ret; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::RlsServiceUriNegotiationL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::RlsServiceUriNegotiationL() - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: :RlsServiceUriNegotiationL")); -#endif - // Handle RLS Service URI negotiation - - HBufC16* buf = CreateRlsDocumentUri16LC( - AuxBuffer(), iConnSets.CurrentSipPresentity(), iConnSets.CurrentDomain() ); - - TRAP_IGNORE( iRlsXdm->RemoveServiceURIL( buf->Des() )); - - TInt errx = iRlsXdm->AddServiceURIL( iRlsXdm->NegotiatedServiceUri() ); - if ( errx && errx != KErrAlreadyExists ) - { - User::Leave( errx ); - } - User::LeaveIfError( iRlsXdm->SwitchToServiceURIL( iRlsXdm->NegotiatedServiceUri() )); - - HBufC* xcapUri = TXdmSettingsApi::PropertyL( iSettingsId, EXdmPropUri ); - CleanupStack::PushL( xcapUri ); // << xcapUri - - HBufC* listUri = MakeRlsBuddyUriL( xcapUri->Des(), AuxBuffer() ); - CleanupStack::PushL( listUri ); // << listUri - - TInt err = iRlsXdm->AddElementL( KPresResourceList, listUri->Des(), AuxBuffer() ); - if ( err && err != KErrAlreadyExists ) - { - User::Leave( err ); - } - - CleanupStack::PopAndDestroy( listUri ); // >> listUri - CleanupStack::PopAndDestroy( xcapUri ); // >> xcapUri - CleanupStack::PopAndDestroy( buf ); - - delete iAuxBuffer; - iAuxBuffer = NULL; - iAuxBuffer = iRlsXdm->NegotiatedServiceUri().AllocL(); - - UpdateRlsL(); - iXdmState = EReUpdateRlsServices; - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::MakeDefaultRuleL -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::MakeDefaultRuleL( - TDes& aRuleId, - TPresenceActionXDM& aAction, - TPresenceTransformXDM& aTransform, - TPresCondMisc& aMisc ) - { - -#ifdef _DEBUG - PluginLogger::Log(_L("PluginXdm: :MakeDefaultRuleL")); -#endif - - iPresenceXdm->CreateNewRuleL( aRuleId ); - User::LeaveIfError( aMisc.AddOtherIdentityL(aRuleId) ); - - // use run-time variation for rule action - CSimplePluginVariation::TSimplePluginAuthRule authRule = - iConnSets.Variation().DefaultRuleAction(); - - switch (authRule) - { - case CSimplePluginVariation::ERuleConfirm: - User::LeaveIfError( aAction.AddOrReplaceActionL(aRuleId, KPresConfirm )); - break; - case CSimplePluginVariation::ERulePoliteBlock: - User::LeaveIfError( aAction.AddOrReplaceActionL(aRuleId, KPresPoliteBlock )); - break; - case CSimplePluginVariation::ERuleBlock: - User::LeaveIfError( aAction.AddOrReplaceActionL(aRuleId, KPresBlock )); - break; - default: - User::LeaveIfError( aAction.AddOrReplaceActionL(aRuleId, KPresAllow )); - }; - User::LeaveIfError( aTransform.AddOrRepProvideAllTransComplexL( - aRuleId, KPresProvideAllAttributes )); - User::LeaveIfError( aTransform.AddOrRepProvideAllTransComplexL( - aRuleId, KPresProvidePersons )); - User::LeaveIfError( aTransform.AddOrRepProvideAllTransComplexL( - aRuleId, KPresProvideDevices )); - User::LeaveIfError( aTransform.AddOrRepProvideAllTransComplexL( - aRuleId, KPresProvideServices )); - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::ReplaceGroupTag -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::ReplaceGroupTag( HBufC16* aBuf, const TDesC16& aGroup ) - { - // Replace group if found - TPtr pBuf( aBuf->Des() ); - TInt pos = pBuf.Find( KSimpleGroupTag ); - if ( pos != KErrNotFound ) - { - TPtrC p8( KSimpleGroupTag ); - pBuf.Replace( pos, p8.Length(), aGroup ); - } - else - { - // No tag - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::ReplaceDomainTag -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::ReplaceDomainTag( HBufC16* aBuf, const TDesC16& aDomain ) - { - // Replace domain if found - TPtr pBuf( aBuf->Des() ); - TInt pos = pBuf.Find( KSimpleDomainTag ); - if ( pos != KErrNotFound ) - { - // remove leading "@" - TPtrC p8( KSimpleDomainTag ); - if ( aDomain[0] == '@') - { - pBuf.Replace( pos, p8.Length(), aDomain.Mid( 1 )); - } - else - { - pBuf.Replace( pos, p8.Length(), aDomain ); - } - } - else - { - // No tag - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::ReplaceUserTag -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::ReplaceUserTag( - HBufC16* aBuf, const TDesC16& aPresentityUri ) - { - TPtr pBuf( aBuf->Des() ); - TInt presentityUriLen = aPresentityUri.Length(); - // Replace user if found - TInt pos = pBuf.Find( KSimpleUserTag ); - if ( pos != KErrNotFound ) - { - TPtrC p8( KSimpleUserTag ); - - // Remove leading "sip:" or "tel:" prefix and strip off domain part from aPresentityUri. - TInt domainPos = presentityUriLen; - TInt userIdPos = 0; - - if ( !aPresentityUri.Left( KMyLenPrefix ).CompareF( KMySip ) || - !aPresentityUri.Left( KMyLenPrefix ).CompareF( KMyTel )) - { - userIdPos = KMyLenPrefix; - } - - for ( TInt i = userIdPos; i < presentityUriLen; i++ ) - { - if ( aPresentityUri[i] == '@' ) - { - domainPos = i; - break; - } - } - - TPtrC userId( aPresentityUri.Mid( userIdPos, domainPos - userIdPos )); - pBuf.Replace( pos, p8.Length(), userId ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginXdmUtils::CompleteClientReq -// --------------------------------------------------------------------------- -// -void CSimplePluginXdmUtils::CompleteClientReq( TInt aStatus ) - { - iXdmState = EStateIdle; - iOperation = ENoOperation; - TRequestStatus* s = iClientStatus; - User::RequestComplete( s, aStatus ); - } - - -// End of file - diff -r 2580314736af -r 2669f8761a99 presencesettingsui/data/10281ef0.rss --- a/presencesettingsui/data/10281ef0.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 1028 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: ECOM plugin resource file for Presence Settings UI GS plugin. -* -*/ - - - -#include -#include "psuigspluginids.hrh" - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = PSUIGSPluginDllUid; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x10207236;//KGSPluginInterfaceUid - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = PSUIGSPluginImplUid; - version_no = 1; - display_name = "Presence Settings GS plugin"; - default_data = "0x10283341";//KGSAdminPluginUid; - opaque_data = "30"; // Order number - } - }; - } - }; - } - diff -r 2580314736af -r 2669f8761a99 presencesettingsui/data/psuigspluginrsc.rss --- a/presencesettingsui/data/psuigspluginrsc.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,496 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: Resource file for Presence Settings UI GS plugin -* -*/ - - - - -// RESOURCE IDENTIFIER -NAME UIPS // 4 letter ID - -// INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // Common GS resource structures -#include -#include -#include "psuigsplugin.hrh" - -// CONSTANTS -#define KPSUICompulsoryChar "*" -#define KPSUIMaxServerNameLength 100 -#define KPSUIURILength 255 -#define KPSUIMaxObjectSize 999999999 -#define KPSUIObjectSizeEditorLength 9 -#define KPSUIPublIntervalEditorLength 6 -#define KPSUISubscriptionsEditorLength 4 - -// RESOURCE DEFINITIONS - -// --------------------------------------------------------------------------- -// RSS_SIGNATURE -// --------------------------------------------------------------------------- -// -RESOURCE RSS_SIGNATURE {} - -// --------------------------------------------------------------------------- -// r_psui_mainview_menubar - menubar -// Settings mainview's titles -// --------------------------------------------------------------------------- -// -RESOURCE MENU_BAR r_psui_mainview_menubar - { - titles = - { - MENU_TITLE { menu_pane = r_psui_mainview_menupane; } - }; - } - -// --------------------------------------------------------------------------- -// r_psui_mainview_menupane - menupane -// Settings mainview's menuitems -// --------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_psui_mainview_menupane - { - items = - { - MENU_ITEM - { - command = EPSUICmdEdit; - txt = qtn_presence_settings_edit; - flags = EEikMenuItemAction; - }, - MENU_ITEM - { - command = EPSUICmdNewSettings; - txt = qtn_presence_settings_new; - cascade = r_psui_newsettings_menu; - }, - MENU_ITEM - { - command = EPSUICmdDelete; - txt = qtn_presence_settings_delete; - }, - MENU_ITEM - { - command = EAknCmdHelp; - txt = qtn_options_help; - }, - MENU_ITEM - { - command = EAknCmdExit; - txt = qtn_options_exit; - } - }; - } - -// --------------------------------------------------------------------------- -// r_psui_newsettings_menu - titlepane -// Settings mainview's menuitems in New Settings cascade menu -// --------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_psui_newsettings_menu - { - items = - { - MENU_ITEM - { - command = EPSUICmdNewSettingsDefault; - txt = qtn_presence_settings_new_default; - }, - MENU_ITEM - { - command = EPSUICmdNewSettingsExisting; - txt = qtn_presence_settings_new_existing; - } - }; - } - -// --------------------------------------------------------------------------- -// r_psui_mainview_title - titlepane -// Settings mainview's title -// --------------------------------------------------------------------------- -// -RESOURCE TITLE_PANE r_psui_mainview_title - { - txt = qtn_presence_settings_title; - } - -// --------------------------------------------------------------------------- -// r_psui_main_view - view -// Settings mainview's menubar and command button area definitions -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_VIEW r_psui_main_view - { - menubar = r_psui_mainview_menubar; - cba = r_psui_mainview_softkeys; - } - -// --------------------------------------------------------------------------- -// r_psui_mainview_softkeys - cba -// Settings mainview's command button area definitions -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_psui_mainview_softkeys - { - flags = 0; - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOptions; txt= text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyBack; txt= text_softkey_back;}, - CBA_BUTTON {id=EPSUICmdEdit; txt= qtn_msk_edit ;} - }; - } - -// --------------------------------------------------------------------------- -// r_psui_setting_view - view -// Setting view's menubar and command button area definitions -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_VIEW r_psui_setting_view - { - menubar = r_psui_settingview_menubar; - cba = r_psui_settingview_softkeys; - } - -// --------------------------------------------------------------------------- -// r_psui_settingview_softkeys - cba -// Settings mainview's command button area definitions -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_psui_settingview_softkeys - { - flags = 0; - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOptions; txt= text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyBack; txt= text_softkey_back;}, - CBA_BUTTON {id=EPSUICmdChange; txt= qtn_msk_change ;} - }; - } - -// --------------------------------------------------------------------------- -// r_psui_settingview_menubar - menubar -// Settingview's titles -// --------------------------------------------------------------------------- -// -RESOURCE MENU_BAR r_psui_settingview_menubar - { - titles = - { - MENU_TITLE { menu_pane = r_psui_settingview_menupane; } - }; - } - -// --------------------------------------------------------------------------- -// r_psui_settingview_menupane - menupane -// Settingview's menuitems -// --------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_psui_settingview_menupane - { - items = - { - MENU_ITEM - { - command = EPSUICmdChange; - txt = qtn_presence_settings_change; - flags = EEikMenuItemAction; - }, - MENU_ITEM - { - command = EAknCmdHelp; - txt = qtn_options_help; - }, - MENU_ITEM - { - command = EEikCmdExit; - txt = qtn_options_exit; - } - }; - } - -// --------------------------------------------------------------------------- -// r_psui_setting_items - AVKON_SETTING_ITEM_LIST -// Setting items for presence settings -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_SETTING_ITEM_LIST r_psui_setting_items - { - items = - { - AVKON_SETTING_ITEM - { - identifier = EPSUIServerNameId; - setting_page_resource = r_psui_server_name_setting_page; - name = qtn_presence_settings_name; - compulsory_ind_string = KPSUICompulsoryChar; - empty_item_text = qtn_selec_setting_compulsory; - }, - AVKON_SETTING_ITEM - { - identifier = EPSUISIPProfileId; - setting_page_resource = r_radiobutton_setting_page; - name = qtn_presence_settings_sip_profile; - compulsory_ind_string = KPSUICompulsoryChar; - empty_item_text = qtn_selec_setting_compulsory; - }, - AVKON_SETTING_ITEM - { - identifier = EPSUIXDMSettingsId; - setting_page_resource = r_radiobutton_setting_page; - name = qtn_presence_settings_xdm_settings; - }, - AVKON_SETTING_ITEM - { - identifier = EPSUIObjectSizeId; - setting_page_resource = r_psui_object_size_setting_page; - name = qtn_presence_settings_object_size; - compulsory_ind_string = KPSUICompulsoryChar; - empty_item_text = qtn_selec_setting_compulsory; - }, -/* server address disabled - AVKON_SETTING_ITEM - { - identifier = EPSUIServerAddrId; - setting_page_resource = r_psui_server_addr_setting_page; - name = qtn_presence_settings_url; - },*/ - AVKON_SETTING_ITEM - { - identifier = EPSUIPublishingIntervalId; - setting_page_resource = r_psui_publ_interval_setting_page; - name = qtn_presence_settings_time_interval; - }, - AVKON_SETTING_ITEM - { - identifier = EPSUIMaxSubscriptionsId; - setting_page_resource = r_psui_subscriptions_setting_page; - name = qtn_presence_settings_number_subscriptions; - }, - AVKON_SETTING_ITEM - { - identifier = EPSUIMaxContactsInListId; - setting_page_resource = r_psui_subscriptions_list_setting_page; - name = qtn_presence_settings_number_subsc_lists; - }, - AVKON_SETTING_ITEM - { - identifier = EPSUIDomainSyntaxId; - setting_page_resource = r_psui_domain_syntax_setting_page; - name = qtn_presence_settings_domain; - compulsory_ind_string = KPSUICompulsoryChar; - empty_item_text = qtn_selec_setting_compulsory; - } - }; - } - -// --------------------------------------------------------------------------- -// r_psui_server_name_setting_page -// --------------------------------------------------------------------------- -RESOURCE AVKON_SETTING_PAGE r_psui_server_name_setting_page - { - label= qtn_presence_settings_name; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - type = EEikCtEdwin; - editor_resource_id = r_psui_server_name_editor; - } - -RESOURCE EDWIN r_psui_server_name_editor - { - flags = EEikEdwinNoLineOrParaBreaks; - width = 0; - lines = 0; - maxlength = KPSUIMaxServerNameLength; - } - -// --------------------------------------------------------------------------- -// r_radiobutton_setting_page -// --------------------------------------------------------------------------- -RESOURCE AVKON_SETTING_PAGE r_radiobutton_setting_page - { - number = EAknSettingPageNoOrdinalDisplayed; - label = qtn_presence_settings_sip_profile; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - type = EAknSetListBox; - editor_resource_id = r_setting_listbox; - } - -RESOURCE LISTBOX r_setting_listbox - { - flags = EAknListBoxMultiselectionList;//no actual multiselection, just to make radiobutton visible in previously chosen item - } - -// --------------------------------------------------------------------------- -// r_psui_object_size_setting_page -// --------------------------------------------------------------------------- -RESOURCE AVKON_SETTING_PAGE r_psui_object_size_setting_page - { - label= qtn_presence_settings_object_size; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - type = EAknCtIntegerEdwin; - editor_resource_id = r_psui_object_size_editor; - } - -RESOURCE AVKON_INTEGER_EDWIN r_psui_object_size_editor - { - maxlength = KPSUIObjectSizeEditorLength; - min = 1; - max = KPSUIMaxObjectSize;// needed since default value is smaller - unset_value = -1;//KErrNotFound - } - -// --------------------------------------------------------------------------- -// r_server_addr_setting_page -// --------------------------------------------------------------------------- -/* server address disabled -RESOURCE AVKON_SETTING_PAGE r_psui_server_addr_setting_page - { - label= qtn_presence_settings_url; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - type = EEikCtEdwin; - editor_resource_id = r_psui_uri_editor; - }*/ - -RESOURCE EDWIN r_psui_uri_editor - { - width = 0; - lines = 0; - maxlength = KPSUIURILength; - flags = EEikEdwinAutoSelection | EAknEditorLowerCase | EEikEdwinNoLineOrParaBreaks; - allowed_case_modes = EAknEditorLowerCase | EAknEditorUpperCase; - numeric_keymap=EAknEditorCalculatorNumberModeKeymap; - allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode; - default_input_mode = EAknEditorTextInputMode; - special_character_table = R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG; - default_case = EAknEditorLowerCase; - avkon_flags = EAknEditorFlagLatinInputModesOnly; - } - -// --------------------------------------------------------------------------- -// r_psui_publ_interval_setting_page -// --------------------------------------------------------------------------- -RESOURCE AVKON_SETTING_PAGE r_psui_publ_interval_setting_page - { - label= qtn_presence_settings_time_interval; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - type = EAknCtIntegerEdwin; - editor_resource_id = r_psui_publ_interval_editor; - } - -RESOURCE AVKON_INTEGER_EDWIN r_psui_publ_interval_editor - { - maxlength = KPSUIPublIntervalEditorLength; - min = 1; - unset_value = -1;//KErrNotFound - } - -// --------------------------------------------------------------------------- -// r_psui_subscriptions_setting_page -// --------------------------------------------------------------------------- -RESOURCE AVKON_SETTING_PAGE r_psui_subscriptions_setting_page - { - label= qtn_presence_settings_number_subscriptions; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - type = EAknCtIntegerEdwin; - editor_resource_id = r_psui_subscriptions_editor; - } - -RESOURCE AVKON_INTEGER_EDWIN r_psui_subscriptions_editor - { - maxlength = KPSUISubscriptionsEditorLength; - min = 0; - unset_value = -1;//KErrNotFound - } - -// --------------------------------------------------------------------------- -// r_psui_subscriptions_setting_page -// --------------------------------------------------------------------------- -RESOURCE AVKON_SETTING_PAGE r_psui_subscriptions_list_setting_page - { - label= qtn_presence_settings_number_subsc_lists; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - type = EAknCtIntegerEdwin; - editor_resource_id = r_psui_subscriptions_editor; - } - -// --------------------------------------------------------------------------- -// r_psui_domain_syntax_setting_page -// --------------------------------------------------------------------------- -RESOURCE AVKON_SETTING_PAGE r_psui_domain_syntax_setting_page - { - label= qtn_presence_settings_domain; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - type = EEikCtEdwin; - editor_resource_id = r_psui_uri_editor; - } - -// --------------------------------------------------------- -// r_deletesettingsconf_query - query -// Query when deleting settings -// --------------------------------------------------------- -// -RESOURCE DIALOG r_psui_conf_query - { - flags=EGeneralQueryFlags; - buttons=R_AVKON_SOFTKEYS_YES_NO; - items= - { - DLG_LINE - { - type=EAknCtQuery; - id=EGeneralQuery; - control= AVKON_CONFIRMATION_QUERY - { - layout = EConfirmationLayout; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// resource texts -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_qtn_presence_settings_empty_primary { buf = qtn_presence_settings_empty_primary; } -RESOURCE TBUF r_qtn_presence_settings_empty_secondary { buf = qtn_presence_settings_empty_secondary; } -RESOURCE TBUF r_qtn_presence_propmt_use_exist { buf = qtn_presence_propmt_use_exist; } -RESOURCE TBUF r_qtn_presence_name_default { buf = qtn_presence_name_default; } -RESOURCE TBUF r_qtn_presence_name_default_number { buf = qtn_presence_name_default_number; } -RESOURCE TBUF r_qtn_query_common_conf_delete { buf = qtn_query_common_conf_delete; } -RESOURCE TBUF r_qtn_presence_settings_delete_last { buf = qtn_presence_settings_delete_last; } -RESOURCE TBUF r_qtn_presence_settings_not_filled { buf = qtn_presence_settings_not_filled; } -RESOURCE TBUF r_qtn_presence_settings_name_exists { buf = qtn_presence_settings_name_exists; } -RESOURCE TBUF r_qtn_set_folder_presence { buf = qtn_set_folder_presence; } - -//End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/group/bld.inf --- a/presencesettingsui/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2006-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: Build information file for Presence Settings UI GS plugin. -* -*/ - - - - -#include - -PRJ_PLATFORMS -DEFAULT -// Help exports -#include "../help/group/bld.inf" - -PRJ_EXPORTS -// IBYs -../rom/psuigsplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(psuigsplugin.iby) -../rom/psuigspluginresources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(psuigspluginresources.iby) -// LOC -../loc/psuigsplugin.loc MW_LAYER_LOC_EXPORT_PATH(psuigsplugin.loc) - -PRJ_EXTENSIONS -START EXTENSION s60/mifconv - OPTION TARGETFILE psuigsplugin.mif - OPTION HEADERFILE psuigsplugin.mbg - OPTION SOURCES -c8,8 qgn_prop_set_conn_presence -END - -PRJ_MMPFILES -psuigsplugin.mmp - -PRJ_TESTMMPFILES -//../internal/tsrc/test/group/ut_presencesettingsui.mmp - -PRJ_TESTEXPORTS -// none diff -r 2580314736af -r 2669f8761a99 presencesettingsui/group/psuigsplugin.mmp --- a/presencesettingsui/group/psuigsplugin.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: This is project specification file for Presence UI Settings GS plugin. -* -*/ - - - -#include -#include - -// definitions -CAPABILITY CAP_ECOM_PLUGIN -TARGET psuigsplugin.dll -TARGETTYPE PLUGIN -UID 0x10009D8D 0x10281EF0 //PSUIGSPluginDllUid -VENDORID VID_DEFAULT - -// sources -SOURCEPATH ../data -SOURCEPATH ../src -SOURCE psuigspluginimplementationtable.cpp -SOURCE psuigsplugin.cpp -SOURCE psuigsplugincontainer.cpp -SOURCE psuigspluginmodel.cpp -SOURCE psuigspluginsettingview.cpp -SOURCE psuigspluginsettingviewcontainer.cpp -SOURCE psuisipxdmsettingitem.cpp -SOURCE psuiintegersettingitem.cpp - -// includes -USERINCLUDE ../inc -USERINCLUDE ../data -APP_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom - -//ECOM resource definition -START RESOURCE ../data/10281ef0.rss -TARGET psuigsplugin.rsc -END - -// resources -START RESOURCE ../data/psuigspluginrsc.rss -HEADER -TARGETPATH RESOURCE_FILES_DIR -LANGUAGE_IDS -END - -// dependancies -LIBRARY euser.lib -LIBRARY avkon.lib -LIBRARY bafl.lib -LIBRARY cone.lib -LIBRARY eikcoctl.lib -LIBRARY eikcore.lib -LIBRARY commonengine.lib -LIBRARY featmgr.lib -LIBRARY hlplch.lib -LIBRARY gsframework.lib -LIBRARY gsecomplugin.lib -LIBRARY aknskins.lib -LIBRARY sipprofilecli.lib -LIBRARY inetprotutil.lib -LIBRARY xdmsettingsapi.lib -LIBRARY presencesettingsapi.lib -LIBRARY serviceprovidersettings.lib - -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/group/psuigspluginicons.mk --- a/presencesettingsui/group/psuigspluginicons.mk Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -# -# Copyright (c) 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: Icons for presence settings ui gs plugin -# - -ifeq (WINS,$(findstring WINS, $(PLATFORM))) -ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z -else -ZDIR=\epoc32\data\z -endif - -TARGETDIR=$(ZDIR)\resource\apps -HEADERDIR=\epoc32\include -ICONTARGETFILENAME=$(TARGETDIR)\psuigsplugin.mif -HEADERFILENAME=$(HEADERDIR)\psuigsplugin.mbg - -do_nothing : - @rem do_nothing - -MAKMAKE : do_nothing - -BLD : do_nothing - -CLEAN : - if exist $(ICONTARGETFILENAME) erase $(ICONTARGETFILENAME) - if exist $(HEADERFILENAME) erase $(HEADERFILENAME) - -LIB : do_nothing - -CLEANLIB : do_nothing - -RESOURCE : - mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \ - /c8,8 qgn_prop_set_conn_presence.bmp - -FREEZE : do_nothing - -SAVESPACE : do_nothing - -RELEASABLES : - @echo $(HEADERFILENAME)&& \ - @echo $(ICONTARGETFILENAME) - -FINAL : do_nothing diff -r 2580314736af -r 2669f8761a99 presencesettingsui/help/data/xhtml.zip Binary file presencesettingsui/help/data/xhtml.zip has changed diff -r 2580314736af -r 2669f8761a99 presencesettingsui/help/group/bld.inf --- a/presencesettingsui/help/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -/* -* Copyright (c) 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: -* Export help related files. -* -*/ - -#include -PRJ_EXPORTS -:zip ../data/xhtml.zip /epoc32/data/z/resource/ overwrite -:zip ../data/xhtml.zip /epoc32/winscw/c/resource/ overwrite - -../inc/pre.hlp.hrh MW_LAYER_PLATFORM_EXPORT_PATH(csxhelp/pre.hlp.hrh) -../rom/presencesettingsuihelps_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(presencesettingsuihelps_variant.iby) diff -r 2580314736af -r 2669f8761a99 presencesettingsui/help/inc/pre.hlp.hrh --- a/presencesettingsui/help/inc/pre.hlp.hrh Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - -// -// pre.hlp.hrh generated by CSXHelp Utilities. -// - -#ifndef __PRE_HLP_HRH__ -#define __PRE_HLP_HRH__ - -_LIT(KPRE_HLP_EDIT_SET, "PRE_HLP_EDIT_SET"); // -_LIT(KPRE_HLP_LIST_VIEW, "PRE_HLP_LIST_VIEW"); // - -#endif \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 presencesettingsui/help/rom/presencesettingsuihelps_variant.iby --- a/presencesettingsui/help/rom/presencesettingsuihelps_variant.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - -#ifndef __PRESENCESETTINGSUIHELPS_VARIANT_IBY__ -#define __PRESENCESETTINGSUIHELPS_VARIANT_IBY__ - -#if defined(FF_S60_HELPS_IN_USE) - data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x10281EF0/contents.zip, RESOURCE_FILES_DIR/xhtml/%02d/0x10281EF0/contents.zip) - data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x10281EF0/index.xml, RESOURCE_FILES_DIR/xhtml/%02d/0x10281EF0/index.xml) - data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x10281EF0/keywords.xml, RESOURCE_FILES_DIR/xhtml/%02d/0x10281EF0/keywords.xml) - data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x10281EF0/meta.xml, RESOURCE_FILES_DIR/xhtml/%02d/0x10281EF0/meta.xml) -#endif - -#endif \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 presencesettingsui/inc/psuigsplugin.h --- a/presencesettingsui/inc/psuigsplugin.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,226 +0,0 @@ -/* -* Copyright (c) 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: GSFW plugin header for Presence Settings UI GS plugin. -* -*/ - - - - -#ifndef PSUIGSPLUGIN_H -#define PSUIGSPLUGIN_H - -// INCLUDES -#include -#include -#include - -// FORWARD DECLARATIONS -class CPSUIGSPluginContainer; -class CPSUIGSPluginModel; - -// CLASS DECLARATION - -/** -* Header of CPSUIGSPlugin which implements the CGSPluginInterface. -* -* @lib PSUIGSPlugin.lib -* @since Series60_3.2 -*/ -class CPSUIGSPlugin : - public CGSBaseView, - public MCoeViewDeactivationObserver, - public MEikListBoxObserver - { - - public: // Constructors and destructor - - /** - * Symbian OS two-phased constructor - */ - static CPSUIGSPlugin* NewL( TAny* aAppUi ); - - /** - * Destructor. - */ - ~CPSUIGSPlugin(); - - private: // Functions from base classes - - /** - * From CAknView - * See base class. - */ - TUid Id() const; - - /** - * From CAknView - * See base class. - */ - void DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - - /** - * From CAknView - * See base class. - */ - void DoDeactivate(); - - /** - * From CAknView - * See base class. - */ - void HandleCommandL( TInt aCommand ); - - /** - * From CGSBaseView - * See base class. - */ - void NewContainerL(); - - /** - * From CGSBaseView - * See base class. - */ - void HandleListBoxSelectionL(); - - /** - * From CGSPluginInterface - * See base class. - */ - void GetCaptionL( TDes& aCaption ) const; - - /** - * From CGSPluginInterface - * See base class. - */ - TInt PluginProviderCategory() const; - - /** - * From CGSPluginInterface - * See base class. - */ - CGulIcon* CreateIconL( const TUid aIconType ); - - /** - * From MEikMenuObserver - * See base class. - */ - void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane *aMenuPane ); - - /** - * From MCoeViewDeactivationObserver - * Used to be able to free memory when plugin get's closed. - * See base class. - */ - void HandleViewDeactivation ( - const TVwsViewId& aViewIdToBeDeactivated, - const TVwsViewId& aNewlyActivatedViewId ); - - /** - * From MEikListBoxObserver - * See base class. - */ - void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); - - public: // New - - /** - * Gives a handle to PS Model. Ownership is not transferred. - * - * @return handle to PS Model - */ - CPSUIGSPluginModel* PSModel(); - - /** - * Takes care of settings deletion. - */ - void DeleteSettingsL(); - - private: // New - - /** - * Returns count and index of current item in listbox. - * - * @param aIndex returns the index. If no items, KErrNotFound. - * @return TInt containing the count. - */ - TInt SettingCountAndIndex( TInt& aIndex ); - - /** - * Shows the delete certain setting set confirmation note. - * - * @param aCount is the amount of all settings - * @param aIndex is the to be deleted setting set - * @return TBool about proceed with deletion. - */ - TBool AcceptDeletionL( TInt aCount, TInt aIndex ); - - /** - * Constructs the setting view - */ - void ConstructSettingViewL(); - - /** - * Removes the setting view - */ - void RemoveSettingView(); - - /** - * Create new default settings and launch setting view - */ - void CreateNewDefaultSettingsL(); - - /** - * Create new a copy of existing settings and launch setting view - */ - void CreateCopyOfExistingSettingsL(); - - /** - * Toggles visibility of MSK depending on the amount of setting sets - */ - void UpdateMSK(); - - private: // Constructors - - /** - * C++ default constructor. - */ - CPSUIGSPlugin(); - - /** - * Symbian OS default constructor. - */ - void ConstructL(); - - private: // Data - - // Presence UI model - CPSUIGSPluginModel* iPSModel; - // Presence Setting view - CAknView* iSettingView; - // Indicates when PSUIGSPlugin's views are closed - TBool iClosing; - // Previous view - TVwsViewId iPSUIGSPrevViewId; - -#ifdef _DEBUG - friend class UT_CPSUIGSPlugin; - friend class UT_CPSUIGSPluginContainer; -#endif - }; - -#endif // PSUIGSPLUGIN_H -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/inc/psuigsplugin.hrh --- a/presencesettingsui/inc/psuigsplugin.hrh Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 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: Presence Settings UI command definitions. -* -*/ - - - - -#ifndef PSUIGSPLUGIN_HRH -#define PSUIGSPLUGIN_HRH - -/** -* Commands used from menus -*/ -enum TPSUIMenuCommands - { - EPSUICmdEdit = 100, - EPSUICmdNewSettings, - EPSUICmdNewSettingsDefault, - EPSUICmdNewSettingsExisting, - EPSUICmdDelete, - EPSUICmdChange - }; - -/** -* Ids for different setting fields -*/ -enum TPSUISettingItemId - { - EPSUIServerNameId, - EPSUISIPProfileId, - EPSUIXDMSettingsId, - EPSUIObjectSizeId, - EPSUIServerAddrId, - EPSUIPublishingIntervalId, - EPSUIMaxSubscriptionsId, - EPSUIMaxContactsInListId, - EPSUIDomainSyntaxId - }; - -#endif //PSUIGSPLUGIN_HRH - diff -r 2580314736af -r 2669f8761a99 presencesettingsui/inc/psuigsplugincontainer.h --- a/presencesettingsui/inc/psuigsplugincontainer.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 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 for Presence Settings UI GS plugin container. -* -*/ - - - - -#ifndef PSUIGSPLUGINCONTAINER_H -#define PSUIGSPLUGINCONTAINER_H - -// INCLUDES -#include -#include - -// FORWARD DECLARATIONS -class CPSUIGSPlugin; - -// CLASS DECLARATION - -/** -* CPSUIGSPluginContainer container class -* @since Series60_3.2 -*/ -class CPSUIGSPluginContainer : public CGSBaseContainer, - public MEikMenuObserver - { - public: // Constructors and destructor - - /** - * Default constructor. - */ - CPSUIGSPluginContainer( CPSUIGSPlugin* aView ); - - /** - * Destructor. - */ - ~CPSUIGSPluginContainer(); - - private: // Functions from base classes - - /** - * From CGSBaseContainer - * See base class. - */ - void ConstructListBoxL( TInt aResLbxId ); - - /** - * From CGSBaseContainer - * See base class. - */ - TKeyResponse OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aType ); - - /** - * From CCoeControl - * See base class. - */ - void GetHelpContext( TCoeHelpContext& aContext ) const; - - /** - * From MEikMenuObserver - */ - void SetEmphasis( CCoeControl* /*aMenuControl*/, TBool /*aEmphasis*/ ){}; - - - /** - * From MEikMenuObserver - */ - void ProcessCommandL( TInt /*aCommandId*/ ){}; - - private: // New - - /** - * Sets empty texts to listbox - * - * @param none - */ - void SetEmptyTextsToListboxL(); - - private: // Constructor - - /** - * Symbian OS constructor. - * - * @param aRect Listbox's rect. - */ - void ConstructL( const TRect& aRect ); - - private: // Data - - // Handle to view - CPSUIGSPlugin* iView; // not owned - - /** - * Menubar. - * Own. - */ - CEikMenuBar* iEikMenuBar; - -#ifdef _DEBUG - friend class UT_CPSUIGSPluginContainer; -#endif - }; - -#endif //PSUIGSPLUGINCONTAINER_H -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/inc/psuigspluginids.hrh --- a/presencesettingsui/inc/psuigspluginids.hrh Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* -* Copyright (c) 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 Presence Settings GS plugin id consts -* -*/ - - - - -#ifndef __PSUIGSPLUGINIDS_HRH_ -#define __PSUIGSPLUGINIDS_HRH_ - -/** -* UID of the Presence Settings GS plugin dll -*/ -#define PSUIGSPluginDllUid 0x10281EF0 - -/** -* UID of the Presence Settings GS plugin implementation -*/ -#define PSUIGSPluginImplUid 0x10281EF1 - -#endif // PSUIGSPLUGINIDS_HRH_ - diff -r 2580314736af -r 2669f8761a99 presencesettingsui/inc/psuigspluginmodel.h --- a/presencesettingsui/inc/psuigspluginmodel.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,390 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: Presence settings UI model header. -* -*/ - - - - -#ifndef PSUIGSPLUGINMODEL_H -#define PSUIGSPLUGINMODEL_H - -// INCLUDES -#include -#include -#include -#include -#include "psuigsplugin.hrh" - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class RPresenceSettingsArray; -class CSIPManagedProfileRegistry; -class CSIPManagedProfile; - -// Constants -_LIT( KPSUIGSPluginPanicCategory, "PSUIGSPlugin" ); - -/** -* Presence settings UI model -* -* @lib PSUIGSPlugin.lib -* @since Series60_3.2 -*/ -class CPSUIGSPluginModel : - public CBase, - public MDesCArray, - public MSIPProfileRegistryObserver - { - - public: // Constructors and destructor - - /** - * Symbian OS two-phased constructor - */ - static CPSUIGSPluginModel* NewL(); - - /** - * Destructor. - */ - ~CPSUIGSPluginModel(); - - public: // New - - // - // - // Presence settings related - - /** - * Retrieves current presence settings from system - */ - void RetrieveSettingsL(); - - /** - * Stores current presence settings to system - */ - void SaveSettingsL(); - - /** - * Checks are the compulsory fields filled. - * - * @return boolean about filled fields - */ - TBool AllCompulsoryFieldsFilled(); - - /** - * Prepares iSettingSet for editing - * - * @param aIndex of presence settings to be edited - */ - void EditSettingsL( TInt aIndex ); - - /** - * Refreshes the presence settings related arrays - */ - void RefreshPSArraysL(); - - /** - * Prepares the iSettingSet and iSettingId - * with default values - */ - void CreateDefaultSettingsL(); - - /** - * Prepares the iSettingSet and iSettingId - * with values from indexed presence setting - * - * @param aIndex is the presence settings to be duplicated - */ - void DuplicateExistingSettingsL( TInt aIndex ); - - /** - * Creates new name for to be created settings. If aOriginal - * provided, then will use that as a base. If not, then will - * create the name based on default naming. Adds numbering to - * end of name if needed. - * Note : aOriginal will be stored to cleanupstack if provided - * - * @param aOriginal is optional base name - * - */ - HBufC* CreateSettingNameLC( HBufC* aOriginal = NULL ); - - /** - * Deletes indexed settings through presence settings API. - * - * @param aToBeDeleted to be deleted settings - * @param aIsIndex tells is aToBeDeleted index or id - */ - void DeleteSettingsL( TInt aToBeDeleted, TBool aIsIndex ); - - /** - * Returns name of the indexed settings. - * - * @param aIndex of the wanted name - * @return HBufC* containing the name - */ - HBufC* SettingNameLC( TInt aIndex ); - - /** - * Checks if there already is settings with the same name. - */ - TBool IsItDuplicatePSName(); - - /** - * Returns iPSNameArray, which contains names of the - * different setting sets. Ownership of array stays in - * CPSUIGSPluginModel. - * - * @return CDesCArray* containing the names of the settings - */ - CDesCArray* SettingNames(); - - /** - * Returns a reference to iSettingSet. - * - * @return TPresSettingsSet& containing one set of the settings - */ - TPresSettingsSet& SettingsSet(); - - /** - * Checks the validity of SIP- and XDM-fields, - * if not valid empties the fields. - */ - void ClearInvalidSIPAndXDMSettingsL(); - - /** - * Returns a reference to iSettingSetId. - * - * @return TInt& containing setting id - */ - TInt& SettingsId(); - - /** - * Returns a reference to iPSIdArray. - * - * @return RArray& containing iPSIdArray - */ - RArray& SettingsIDArray(); - - // - // - // SIP related - - /** - * Fetches names of defined SIP-profiles - * Refreshes also SIP related arrays. - * - * @return descriptor array of names - */ - CDesCArray* SipProfilesLC(); - - /** - * Fetches the ID of indexed SIP profile - * - * @param aIndex is the index in the array - * @return ID of the SIP profile - */ - TInt SipProfileId( TInt aIndex ); - - /** - * Fetches the index of ID'ed SIP profile - * - * @param aId is ID of the SIP profile - * @return index in the array - */ - TInt SipProfileIndex( TInt aId ); - - /** - * Fetches the name of ID'ed SIP profile - * Refreshes also SIP related arrays. - * - * @param aId is ID of the SIP profile - * @return descriptor containing the name - */ - HBufC* SipProfileNameL( TInt aId ); - - /** - * Checks if SIP profile used by presence settings is in use - * - * @param aIndex is the index in the array - * @return ETrue if profile is registered - */ - TBool IsSipProfileRegisteredL( TInt aIndex ); - - // - // - // XDM related - - /** - * Fetches names of defined XDM settings. - * Refreshes also XDM related arrays. - * - * @return descriptor array of names - */ - CDesCArray* XdmCollectionNamesL(); - - /** - * Fetches the name of ID'ed XDM setting - * - * @param aId is ID of the SIP profile - * @return descriptor containing the name - */ - HBufC* XdmCollectionNameL( TInt aId ); - - /** - * Fetches the index of ID'ed XDM setting - * - * @param aId is ID of the SIP profile - * @return index in the array - */ - TInt XdmSettingIndex( TInt aId ); - - /** - * Fetches the ID of indexed XDM setting - * - * @param aIndex is the index in the array - * @return ID of the SIP profile - */ - TInt XdmSettingId( TInt aIndex ); - - private: // New - - /** - * Destroys given array. Used with TCleanupItem. - * - * @param pointerarray to be deleted - */ - static void ResetAndDestroy( TAny* aPointerArray ); - - /** - * Refreshes the SIP profile array. Needs to be - * called before calling most of the SIP-related methods. - */ - void ReadSipArrayFromEngineL(); - - /** - * Checks if there is ordinal numbering at the end of - * descriptor and rips it off if there is. - * - * @return HBufC* containing the name ready for the numbering - */ - HBufC* GetPrefixL( HBufC* aName ); - - /** - * Re-arranges presence settings (name and id arrays) - * to alphabetical order. - */ - void ReArrangePresenceSettingsL(); - - /** - * Cleans links to specific presence settings for - * service provider settings. - * - * @param aPresenceId presence settings id. - */ - void CleanServiceProviderSettingsDataL( TInt aPresenceId ); - - private: // Functions from base classes - - /** - * from MSIPProfileRegistryObserver - * Refreshes in most cases SIP related arrays. - * - * See base class. - */ - void ProfileRegistryEventOccurred( - TUint32 aSIPProfileId, - TEvent aEvent ); - - /** - * from MSIPProfileRegistryObserver - * Refreshes SIP related arrays. - * - * See base class. - */ - void ProfileRegistryErrorOccurred( - TUint32 aSIPProfileId, - TInt aError); - - /** - * from MDesCArray - * See base class. - */ - TInt MdcaCount() const; - - /** - * from MDesCArray - * See base class. - */ - TPtrC16 MdcaPoint( TInt aIndex ) const; - - private: // Constructors - - /** - * C++ default constructor. - */ - CPSUIGSPluginModel(); - - /** - * Symbian OS default constructor. - */ - void ConstructL(); - - private: // Data - - // Currently edited presence settings - TPresSettingsSet iSettingSet; - // Setting identifier - TInt iSettingId; - // SIP profile registry - CSIPManagedProfileRegistry* iSIPEngine; - // SIP profile array - CArrayPtrFlat* iSIPProfiles; - // XDM ID array - RArray iXdmIdArray; - // XDM name array - CDesCArray* iXdmNameArray; - // Presence settings id array - RArray iPSIdArray; - // Presence settings name array - CDesCArray* iPSNameArray; - // Texts for the MDesCArray - HBufC* iVisibleSettingName; - - }; - -/** -* Small utility class to store presence settings -* name and id. -* Used in CPSUIGSPluginModel::ReArrangePresenceSettingsL(). -* -* @lib PSUIGSPlugin.lib -* @since Series60_3.2 -*/ -class CPSUINameIDPair : - public CBase - { - public : - inline ~CPSUINameIDPair() { delete iName; }; - - public : - TInt iID; - HBufC* iName; - }; - -#endif // PSUIGSPLUGINMODEL_H -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/inc/psuigspluginsettingview.h --- a/presencesettingsui/inc/psuigspluginsettingview.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ -/* -* Copyright (c) 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: Presence Settings UI's setting view. -* -*/ - - - - -#ifndef PSUIGSPLUGINSETTINGVIEW_H -#define PSUIGSPLUGINSETTINGVIEW_H - -// INCLUDES -#include - -// FORWARD DECLARATIONS -class CPSUIGSPluginContainer; -class CPSUIGSPluginSettingViewContainer; -class CPSUIGSPlugin; - -const TUid KPreSettingViewId = {313}; - -// CLASS DECLARATION - -/** -* Header of CPSUIGSPluginSettingView. -* -* @lib PSUIGSPlugin.lib -* @since Series60_3.2 -*/ -class CPSUIGSPluginSettingView : - public CAknView - { - - public: // Constructors and destructor - - /** - * Symbian OS two-phased constructor - */ - static CPSUIGSPluginSettingView* NewL( CPSUIGSPlugin* aMainView ); - - /** - * Destructor. - */ - ~CPSUIGSPluginSettingView(); - - private: // Functions from base classes - - /** - * From CAknView - * See base class. - */ - TUid Id() const; - - /** - * From CAknView - * See base class. - */ - void DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - - /** - * From CAknView - * See base class. - */ - void DoDeactivate(); - - /** - * From CAknView - * See base class. - */ - void HandleCommandL( TInt aCommand ); - - /** - * From CAknView - * See base class. - */ - void HandleViewRectChange(); - - public : // New - - /** - * Gives a handle to plugin main view. Ownership is not transferred. - * - * @return handle to plugin main view - */ - CPSUIGSPlugin* MainView(); - - /** - * Uses model to check if name is a duplicate and if it - * is shows a note. - * - * @return TBool about if duplicates were found - */ - TBool HandleDuplicatePSNamesL(); - - private: // New - - /** - * Creates the setting view container - * - * @param none - */ - void CreateContainerL(); - - /** - * Handles back-key presses. Checks if all compulsory - * fields are filled and if there is duplicates. Based on - * this saves and switches view back to main view. - */ - void HandleBackKeyL(); - - /** - * Handles saving funtionality when Exit is chosen from Menu. - * Checks if all compulsory fields are filled and in case of - * duplicate changes name, after this saves settings. - */ - void HandleMenuExitL(); - - private: // Constructors - - /** - * C++ default constructor. - */ - CPSUIGSPluginSettingView( CPSUIGSPlugin* aMainView ); - - /** - * Symbian OS default constructor. - */ - void ConstructL(); - - private: // Data - - // Previous view ID - TVwsViewId iPrevViewId; - // Pointer to application UI. - CAknViewAppUi* iAppUi; - // Presence setting view container - CPSUIGSPluginSettingViewContainer* iPSUIContainer; - // Handle to main view - CPSUIGSPlugin* iMainView; // not owned - }; - -#endif // PSUIGSPLUGINSETTINGVIEW_H -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/inc/psuigspluginsettingviewcontainer.h --- a/presencesettingsui/inc/psuigspluginsettingviewcontainer.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 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 for Presence Settings UI setting view container. -* -*/ - - - - -#ifndef PSUIGSPLUGINSETTINGVIEWCONTAINER_H -#define PSUIGSPLUGINSETTINGVIEWCONTAINER_H - -// INCLUDES -#include - -// FORWARD DECLARATIONS -class CAknColumnListBox; -class CPSUIGSPluginSettingView; - -// CLASS DECLARATION - -/** -* CPSUIGSPluginSettingViewContainer container class -* @since Series60_3.2 -*/ -class CPSUIGSPluginSettingViewContainer : - public CAknSettingItemList - { - public: // Constructors and destructor - - /** - * Default constructor. - */ - CPSUIGSPluginSettingViewContainer( CPSUIGSPluginSettingView* aView ); - - /** - * Destructor. - */ - ~CPSUIGSPluginSettingViewContainer(); - - private: // Functions from base classes - - /** - * From CAknSettingItemList - * See base class. - */ - CAknSettingItem* CreateSettingItemL( TInt aSettingId ); - - /** - * From CCoeControl - * See base class. - */ - void GetHelpContext( TCoeHelpContext& aContext ) const; - - /** - * From CCoeControl - * See base class. - */ - void HandleResourceChange(TInt aType); - - /** - * From CCoeControl - * See base class. - */ - void SizeChanged(); - - private: // New - - /** - * Update titlepane with setting name - * - * @param none - */ - void UpdateTitleL(); - - public: // Functions from base classes - - /** - * From CAknSettingItemList - * See base class. - */ - void EditItemL( TInt aIndex, TBool aCalledFromMenu ); - - public: // New - - /** - * Edit setting which is currently under focus. - * - * @param none - */ - void EditCurrentItemL(); - - public: // Constructor - - /** - * Symbian OS constructor. - * - * @param aRect Listbox's rect. - */ - void ConstructL( const TRect& aRect ); - - private: // Data - - // Pointer to view - CPSUIGSPluginSettingView* iView; - }; - -#endif //PSUIGSPLUGINSETTINGVIEWCONTAINER_H -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/inc/psuiintegersettingitem.h --- a/presencesettingsui/inc/psuiintegersettingitem.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* -* Copyright (c) 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: Setting item for integer values -* -*/ - - - - -#ifndef PSUIINTEGERSETTINGITEM_H -#define PSUIINTEGERSETTINGITEM_H - -// INCLUDES -#include - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* CPSUIIntegerSettingItem setting class. Needed to be able to -* keep default values invisible. -* @since Series60_3.2 -*/ -class CPSUIIntegerSettingItem : public CAknIntegerEdwinSettingItem - { - public : // Constructors and destructor - - /* - * C++ default constructor. - */ - CPSUIIntegerSettingItem( TInt aIdentifier, TInt& aValue ); - - /** - * Destructor - */ - ~CPSUIIntegerSettingItem(); - - private: // Functions from base classes - - /** - * From CAknSettingItem - * See base class. - */ - virtual const TDesC& SettingTextL(); - - /** - * From CAknSettingItem - * See base class. - */ - virtual void CompleteConstructionL(); - - private: // Data - - // since no access to base classes descriptors, - // here are similar ones - HBufC* iPSUIInternalText; - TPtr iPSUIInternalTextPtr; - }; - -#endif //PSUIINTEGERSETTINGITEM_H -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/inc/psuisipxdmsettingitem.h --- a/presencesettingsui/inc/psuisipxdmsettingitem.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* -* Copyright (c) 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: Setting item for SIP / XDM settings -* -*/ - - - - -#ifndef PSUISIPXDMSETTINGITEM_H -#define PSUISIPXDMSETTINGITEM_H - -// INCLUDES -#include - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class CPSUIGSPluginModel; - -/** -* CPSUISipXdmSettingItem setting class -* @since Series60_3.2 -*/ -class CPSUISipXdmSettingItem : public CAknSettingItem - { - - public: // Constructors and destructor - - /* - * C++ default constructor. - */ - CPSUISipXdmSettingItem( TInt aIdentifier, TInt& aId, CPSUIGSPluginModel* iPSModel ); - - /** - * Destructor - */ - ~CPSUISipXdmSettingItem(); - - private: // New - - /** - * Like in CAknSettingItem, but SIP specific. - */ - void EditSipItemL(); - - /** - * Like in CAknSettingItem, but XDM specific. - */ - void EditXdmItemL(); - - /** - * Launches the actual radio button setting dialog with data given. - * - * @param aIndex is currently selected setting - * @param aArray contains the settings to choose from - */ - void LaunchSettingDlgL( TInt& aIndex, CDesCArray* aArray ); - - private: // Functions from base classes - - /** - * From CAknSettingItem - * See base class. - */ - virtual void StoreL(); - - /** - * From CAknSettingItem - * See base class. - */ - virtual void LoadL(); - - /** - * From CAknSettingItem - * See base class. - */ - virtual const TDesC& SettingTextL(); - - /** - * From CAknSettingItem - * See base class. - */ - virtual void EditItemL( TBool aCalledFromMenu ); - - protected: // Data - - // reference to external value - TInt& iExtChosenSettingID; - // internal value - TInt iIntChosenSettingID; - // pointer to PSUI model - CPSUIGSPluginModel* iPSModel;// owned elsewhere - // internal text having the listbox text - HBufC* iPSUIInternalText;// owned -}; - -#endif //PSUISIPXDMSETTINGITEM_H -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/loc/psuigsplugin.loc --- a/presencesettingsui/loc/psuigsplugin.loc Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,197 +0,0 @@ -/* -* Copyright (c) 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: Localisation strings for Presence Settings UI -* -*/ - - - - - -///////////////////////////////////////////////// -// Main view related - -// d:Title shown in title pane of main state. -// l:title_pane_t2/opt9 -// r:3.2 -// -#define qtn_presence_settings_title "Presence settings" - -// d:This is shown in listbox when no settings are defined. Primary text. -// l:main_pane_empty_t1/opt2 -// r:3.2 -// -#define qtn_presence_settings_empty_primary "No presence settings" - -// d:This is shown in listbox when no settings are defined. Secondary text. -// l:main_list_empty_pane/opt2 -// r:3.2 -// -#define qtn_presence_settings_empty_secondary "Please contatct your service provider for Presence settings" - -// d:Command in options menu for editing one set of presence settings -// l:list_single_pane_t1_cp2 -// r:3.2 -// -#define qtn_presence_settings_edit "Edit" - -// d:Submenu in options menu for commands for creating new settings. -// l:list_single_pane_t1_cp2/opt3 -// r:3.2 -// -#define qtn_presence_settings_new "New settings" - -// d:Command in submenu for creating new settings based on default settings. -// l:list_single_popup_submenu_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_new_default "Default settings" - -// d:Command in submenu for creating new settings based on settings chosen by user. -// l:list_single_popup_submenu_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_new_existing "Use existing" - -// d:Command in options menu for deleting one setting set. -// l:list_single_pane_t1_cp2 -// r:3.2 -// -#define qtn_presence_settings_delete "Delete" - -// d:Title of listbox when selecting which set to copy as a base of new settings. -// l:heading_pane_t1 -// r:3.2 -// -#define qtn_presence_propmt_use_exist "Use existing set" - - -///////////////////////////////////////////////// -// Setting view related - -// d:Command in options menu for changing setting values. -// l:list_single_pane_t1_cp2 -// r:3.2 -// -#define qtn_presence_settings_change "Change" - -// d:Title for the service name setting field in setting listbox. -// l:list_setting_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_name "Service Name" - -// d:Title of chosen SIP profile -setting field in setting listbox. -// l:list_setting_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_sip_profile "SIP Profile" - -// d:Title of chosen XDM settings -setting field in setting listbox. -// l:list_setting_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_xdm_settings "XDM Settings" - -// d:Title of object size -setting field in setting listbox. This defines -// d:the maximum size of the MIME object data in bytes when PUBLISH and NOTIFY methods are used. -// l:list_setting_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_object_size "Object size" - -// d:Title of server address -setting field in setting listbox. This -// d:defines the HTTP URL of the content server. -// l:list_setting_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_url "Server address" - -// d:Title of publishing interval -setting field in setting listbox. This defines -// d:the minimum time interval (in seconds) between two consecutive publications. -// l:list_setting_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_time_interval "Publishing interval (sec)" - -// d:Title of maximum subscriptions -setting field in setting listbox. This -// d:defines the maximum number of presence subscriptions. -// l:list_setting_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_number_subscriptions "Maximum subscriptions" - -// d:Title of max contacts in list -setting field in setting listbox. This -// d:defines the maximum number of contacts in the subscription list. -// l:list_setting_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_number_subsc_lists "Max. contacts in list" - -// d:Title for the domain name setting field in setting listbox. -// d:This defines the domain name part of the service URL including the at-sign. -// l:list_setting_pane_t1 -// r:3.2 -// -#define qtn_presence_settings_domain "Domain Name" - -// d:Confirmation query text for deleting the last setting set defined. -// l:popup_note_window -// r:3.2 -// -#define qtn_presence_settings_delete_last "%U is the last presence settings. Are you sure to delete it?" - -// d:Confirmation query text shown when trying to go back from edit view -// d:to main view (saves settings) without all the compulsory setting fields filled. -// l:popup_note_window -// r:3.2 -// -#define qtn_presence_settings_not_filled "Presence settings are incomplete. Delete created settings?" - -// d:Confirmation query text shown when trying to go back from edit view -// d:to main view (saves settings) and there are already a setting set named with same name. -// l:popup_note_window -// r:3.2 -// -#define qtn_presence_settings_name_exists "Name %U already in use" - - -///////////////////////////////////////////////// -// Both main and setting view related - -// d:Default name for the presence settings. -// d:Used in couple of different layouts and the smallest space available is in list_set_graphic_pane_t1. -// l:list_set_graphic_pane_t1 -// r:3.2 -// -#define qtn_presence_name_default "Default name" - -// d:Version with numbering if the default name for settings is already used. -// d:Used in couple of different layouts and the smallest space available is in list_set_graphic_pane_t1. -// l:list_set_graphic_pane_t1 -// r:3.2 -// -#define qtn_presence_name_default_number "Default name(%N)" - - -///////////////////////////////////////////////// -// Other - -// d:Title of presence settings in general settings/connection tab. -// l:list_single_large_graphic_pane_t1 -// r:3.2 -// -#define qtn_set_folder_presence "Presence" - -// End of file diff -r 2580314736af -r 2669f8761a99 presencesettingsui/rom/psuigsplugin.iby --- a/presencesettingsui/rom/psuigsplugin.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* -* Copyright (c) 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: ROM creation file for presence settings ui -* -*/ - - - - -#ifndef __PSUIGSPLUGIN_IBY__ -#define __PSUIGSPLUGIN_IBY__ - -#include - -#ifdef RD_GS_RENOVATION_PHASE2 -#ifdef __SIP_SIMPLE_PRESENCE_PROTOCOL - -ECOM_PLUGIN(psuigsplugin.dll,10281ef0.rsc) -data=DATAZ_/BITMAP_DIR/psuigsplugin.mif BITMAP_DIR/psuigsplugin.mif - -#endif RD_GS_RENOVATION_PHASE2 -#endif __SIP_SIMPLE_PRESENCE_PROTOCOL - -#endif //__PSUIGSPLUGIN_IBY__ diff -r 2580314736af -r 2669f8761a99 presencesettingsui/rom/psuigspluginresources.iby --- a/presencesettingsui/rom/psuigspluginresources.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -/* -* Copyright (c) 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: ROM creation file for presence settings ui resources -* -*/ - - - - -#ifndef __PSUIGSPLUGINRESOURCES_IBY__ -#define __PSUIGSPLUGINRESOURCES_IBY__ - -#include - -#ifdef RD_GS_RENOVATION_PHASE2 -#ifdef __SIP_SIMPLE_PRESENCE_PROTOCOL - -data=DATAZ_/RESOURCE_FILES_DIR/psuigspluginrsc.rsc RESOURCE_FILES_DIR/psuigspluginrsc.rsc - -#endif RD_GS_RENOVATION_PHASE2 -#endif __SIP_SIMPLE_PRESENCE_PROTOCOL - -#endif //__PSUIGSPLUGINRESOURCES_IBY__ diff -r 2580314736af -r 2669f8761a99 presencesettingsui/src/psuigsplugin.cpp --- a/presencesettingsui/src/psuigsplugin.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,561 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: GSFW implementation for Presence Settings UI GS plugin. -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "psuigsplugin.h" -#include "psuigsplugin.hrh" -#include "psuigsplugincontainer.h" -#include "psuigspluginids.hrh" -#include "psuigspluginmodel.h" -#include "psuigspluginsettingview.h" - -// CONSTANTS -_LIT( KPSUIGSPluginResourceFileName, "z:\\resource\\psuigspluginrsc.rsc" ); - -#ifdef __SCALABLE_ICONS -// bitmap -_LIT( KPSUIGSPluginIconFileName, "\\resource\\apps\\psuigsplugin.mif"); -#else //__SCALABLE_ICONS -// svg file -_LIT( KPSUIGSPluginIconFileName, "\\resource\\apps\\psuigsplugin.mbm"); -#endif //__SCALABLE_ICONS - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::CPSUIGSPlugin() -// C++ default constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------------------------- -// -CPSUIGSPlugin::CPSUIGSPlugin() - : iClosing ( EFalse ) - { - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::~CPSUIGSPlugin() -// Destructor -// --------------------------------------------------------------------------- -// -CPSUIGSPlugin::~CPSUIGSPlugin() - { - delete iPSModel; - FeatureManager::UnInitializeLib(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::ConstructL -// Symbian 2nd phase constructor can leave. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::ConstructL() - { - // preparing resources for use - TFileName fileName( KPSUIGSPluginResourceFileName ); - BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName ); - iResourceLoader.OpenL( fileName ); - // base construct (base needs the resources to be loaded 1st) - BaseConstructL( R_PSUI_MAIN_VIEW ); - FeatureManager::InitializeLibL(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::NewL() -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CPSUIGSPlugin* CPSUIGSPlugin::NewL( TAny* /*aAppUi*/ ) - { - CPSUIGSPlugin* self = new( ELeave ) CPSUIGSPlugin(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::Id() -// See header for details. -// --------------------------------------------------------------------------- -// -TUid CPSUIGSPlugin::Id() const - { - return TUid::Uid( PSUIGSPluginImplUid ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::NewContainerL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::NewContainerL() - { - iContainer = new ( ELeave ) CPSUIGSPluginContainer( this ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::DoActivateL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ) - { - if ( KPreSettingViewId != aPrevViewId.iViewUid ) - { - iPSUIGSPrevViewId = aPrevViewId; - } - - // model & observer constructed only when needed - if ( !iPSModel ) - { - iPSModel = CPSUIGSPluginModel::NewL(); - iAppUi->AddViewDeactivationObserverL( this ); - } - - const TInt id = iPSModel->SettingsId(); - if ( id ) - {// readjust the focus - SetCurrentItem( iPSModel->SettingsIDArray().Find( id )); - } - - iClosing = EFalse; - CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage ); - UpdateMSK(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::DoDeactivate() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::DoDeactivate() - { - CGSBaseView::DoDeactivate(); - if ( iClosing ) - {// PSUI plugin is going to be closed so it is safe to free some memory - delete iPSModel; - iPSModel = NULL; - delete iSettingView; - iSettingView = NULL; - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::HandleViewDeactivation() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::HandleViewDeactivation( - const TVwsViewId& aViewIdToBeDeactivated, - const TVwsViewId& aNewlyActivatedViewId) - { - if ( TUid::Uid( PSUIGSPluginImplUid ) == aViewIdToBeDeactivated.iViewUid && - iPSUIGSPrevViewId.iViewUid == aNewlyActivatedViewId.iViewUid ) - { - iClosing = ETrue; - iAppUi->RemoveViewDeactivationObserver( this ); - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::HandleCommandL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case EAknSoftkeyBack: - { - RemoveSettingView(); - iAppUi->ActivateLocalViewL( iPSUIGSPrevViewId.iViewUid ); - break; - } - case EPSUICmdEdit: - { - HandleListBoxSelectionL(); - break; - } - case EPSUICmdDelete: - { - DeleteSettingsL(); - break; - } - case EPSUICmdNewSettingsDefault: - { - CreateNewDefaultSettingsL(); - break; - } - case EPSUICmdNewSettingsExisting: - { - CreateCopyOfExistingSettingsL(); - break; - } - case EAknCmdHelp: - { - if( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - HlpLauncher::LaunchHelpApplicationL( - iEikonEnv->WsSession(), iAppUi->AppHelpContextL() ); - } - break; - } - default: - { - iAppUi->HandleCommandL( aCommand ); - break; - } - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::SettingCountAndIndex() -// See header for details. -// --------------------------------------------------------------------------- -// -TInt CPSUIGSPlugin::SettingCountAndIndex( TInt& aIndex ) - { - CEikTextListBox* listbox = Container()->iListBox;// not owned - TInt count = listbox->Model()->NumberOfItems(); - aIndex = count ? listbox->CurrentItemIndex() : KErrNotFound; - - return count; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::HandleListBoxSelectionL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::HandleListBoxSelectionL() - { - TInt index = KErrNotFound; - if ( SettingCountAndIndex( index )) - { - iPSModel->EditSettingsL( index ); - - ConstructSettingViewL(); - iAppUi->ActivateLocalViewL( KPreSettingViewId ); - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::DeleteSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::DeleteSettingsL() - { - TInt index = KErrNotFound; - TInt count = SettingCountAndIndex( index ); - if ( count ) - { - if ( AcceptDeletionL( count, index )) - { - iPSModel->DeleteSettingsL( index, ETrue ); - CEikTextListBox* listbox = Container()->iListBox;// not owned - AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( - listbox, index, ETrue ); - listbox->DrawNow(); - UpdateMSK(); - } - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::AcceptDeletionL() -// See header for details. -// --------------------------------------------------------------------------- -// -TBool CPSUIGSPlugin::AcceptDeletionL( TInt aCount, TInt aIndex ) - { - HBufC* currentName = iPSModel->SettingNameLC( aIndex ); - HBufC* string = NULL; - if ( aCount == 1 ) - { - string = StringLoader::LoadLC( R_QTN_PRESENCE_SETTINGS_DELETE_LAST, *currentName ); - } - else - { - string = StringLoader::LoadLC( R_QTN_QUERY_COMMON_CONF_DELETE, *currentName ); - } - - CAknQueryDialog* query = CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone ); - TInt ok = query->ExecuteLD( R_PSUI_CONF_QUERY, *string ); - - CleanupStack::PopAndDestroy( 2, currentName );//currentName, string - - return ( ok ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::GetCaptionL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::GetCaptionL( TDes& aCaption ) const - { - StringLoader::Load( aCaption, R_QTN_SET_FOLDER_PRESENCE ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::PluginProviderCategory() -// See header for details. -// --------------------------------------------------------------------------- -// -TInt CPSUIGSPlugin::PluginProviderCategory() const - { - return KGSPluginProviderInternal; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::CreateIconL() -// See header for details. -// --------------------------------------------------------------------------- -// -CGulIcon* CPSUIGSPlugin::CreateIconL( const TUid aIconType ) - { - CGulIcon* icon = NULL; - if( aIconType == KGSIconTypeLbxItem ) - { - icon = AknsUtils::CreateGulIconL( - AknsUtils::SkinInstance(), - KAknsIIDQgnPropSetConnPresence, - KPSUIGSPluginIconFileName, - EMbmPsuigspluginQgn_prop_set_conn_presence, - EMbmPsuigspluginQgn_prop_set_conn_presence_mask ); - } - else - { - icon = CGSPluginInterface::CreateIconL( aIconType ); - } - - return icon; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::DynInitMenuPaneL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane *aMenuPane ) - { - // remove some of the items if no settings available - const TInt count = Container()->iListBox->Model()->NumberOfItems(); - if ( aResourceId == R_PSUI_MAINVIEW_MENUPANE && - 0 == count ) - { - aMenuPane->DeleteMenuItem( EPSUICmdEdit ); - aMenuPane->DeleteMenuItem( EPSUICmdDelete ); - } - if ( aResourceId == R_PSUI_NEWSETTINGS_MENU && - 0 == count ) - { - aMenuPane->DeleteMenuItem( EPSUICmdNewSettingsExisting ); - } - - // help-item handling - if ( aResourceId == R_PSUI_MAINVIEW_MENUPANE && - !FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - aMenuPane->DeleteMenuItem( EAknCmdHelp ); - } - - TInt index( KErrNotFound ); - SettingCountAndIndex( index ); - - if ( KErrNotFound < index ) - { - // Hide delete option if sip profile used with presence settings - // is registered. - if ( iPSModel->IsSipProfileRegisteredL( index ) ) - { - TInt pos( KErrNotFound ); - if ( aMenuPane->MenuItemExists( EPSUICmdDelete, pos ) ) - { - aMenuPane->SetItemSpecific( EPSUICmdDelete, EFalse ); - aMenuPane->SetItemDimmed( EPSUICmdDelete, ETrue ); - } - } - else - { - TInt pos( KErrNotFound ); - if ( aMenuPane->MenuItemExists( EPSUICmdDelete, pos ) ) - { - aMenuPane->SetItemSpecific( EPSUICmdDelete, ETrue ); - aMenuPane->SetItemDimmed( EPSUICmdDelete, EFalse ); - } - } - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::PSModel() -// See header for details. -// --------------------------------------------------------------------------- -// -CPSUIGSPluginModel* CPSUIGSPlugin::PSModel() - { - __ASSERT_DEBUG( iPSModel,User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound )); - return iPSModel; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::ConstructSettingViewL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::ConstructSettingViewL() - { - if ( !iSettingView ) - {// no view yet, construct it - CAknView* view = CPSUIGSPluginSettingView::NewL( this ); - CleanupStack::PushL( view ); - iAppUi->AddViewL( view ); - CleanupStack::Pop( view ); - iSettingView = view; - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::RemoveSettingView() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::RemoveSettingView() - { - // Remove view from iAppUi -> View is deleted by iAppUi automatically. - if ( iSettingView ) - { - iAppUi->RemoveView( KPreSettingViewId ); - iSettingView = NULL; - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::CreateNewDefaultSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::CreateNewDefaultSettingsL() - { - iPSModel->CreateDefaultSettingsL(); - ConstructSettingViewL(); - iAppUi->ActivateLocalViewL( KPreSettingViewId ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::CreateCopyOfExistingSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::CreateCopyOfExistingSettingsL() - { - CAknSinglePopupMenuStyleListBox* list = - new ( ELeave ) CAknSinglePopupMenuStyleListBox; - CleanupStack::PushL( list ); - - CAknPopupList* popupList = - CAknPopupList::NewL( list, R_AVKON_SOFTKEYS_OK_CANCEL ); - CleanupStack::PushL( popupList ); - - HBufC* title = StringLoader::LoadLC( R_QTN_PRESENCE_PROPMT_USE_EXIST ); - popupList->SetTitleL( *title ); - CleanupStack::PopAndDestroy( title ); - - list->ConstructL( popupList, CEikListBox::ELeftDownInViewRect ); - list->CreateScrollBarFrameL( ETrue ); - list->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, - CEikScrollBarFrame::EAuto ); - - CTextListBoxModel* model = list->Model(); - model->SetItemTextArray( iPSModel->SettingNames() );// setting names not owned - model->SetOwnershipType( ELbmDoesNotOwnItemArray ); - list->HandleItemAdditionL(); - - CleanupStack::Pop( popupList ); - TInt keyPress = popupList->ExecuteLD(); - - if ( keyPress ) - { - iPSModel->DuplicateExistingSettingsL( list->CurrentItemIndex() ); - ConstructSettingViewL(); - iAppUi->ActivateLocalViewL( KPreSettingViewId ); - } - - CleanupStack::PopAndDestroy( list ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::UpdateMSK() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::UpdateMSK() - { - if ( !Cba() ) - { - return; - } - - TBool showEdit = ( 0 < Container()->iListBox->Model()->NumberOfItems()); - CEikCba* cba = static_cast< CEikCba* >( Cba()->ButtonGroup() ); - cba->MakeCommandVisible( EPSUICmdEdit, showEdit ); - cba->DrawNow(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPlugin::HandleListBoxEventL() -// --------------------------------------------------------------------------- -// -void CPSUIGSPlugin::HandleListBoxEventL( - CEikListBox* /*aListBox*/, TListBoxEvent aListBoxEvent) - { - // if the Select Key has been pressed - if ((aListBoxEvent == MEikListBoxObserver::EEventEnterKeyPressed) || - (aListBoxEvent == MEikListBoxObserver::EEventItemSingleClicked)) - { - HandleListBoxSelectionL(); - } - } - -// End of file diff -r 2580314736af -r 2669f8761a99 presencesettingsui/src/psuigsplugincontainer.cpp --- a/presencesettingsui/src/psuigsplugincontainer.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ -/* -* Copyright (c) 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: Presence Settings UI GS plugin container implementation -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include "psuigsplugincontainer.h" -#include "psuigspluginmodel.h" -#include "psuigsplugin.h" -#include "psuigspluginids.hrh" -#include - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CPSUIGSPluginContainer::CPSUIGSPluginContainer() -// Default constructor. -// --------------------------------------------------------------------------- -// -CPSUIGSPluginContainer::CPSUIGSPluginContainer( CPSUIGSPlugin* aView ) - : iView ( aView ) - { - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginContainer::ConstructL(const TRect& aRect) -// Symbian OS phase 2 constructor -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginContainer::ConstructL( const TRect& aRect ) - { - iListBox = new ( ELeave ) CAknSingleStyleListBox();// base needs the iListBox to be prepared 1st - BaseConstructL( aRect, R_PSUI_MAINVIEW_TITLE, 0 );// last parameter 0, since dynamic listbox - - iEikMenuBar = new ( ELeave ) CEikMenuBar(); - iEikMenuBar->ConstructL( this, NULL, R_PSUI_MAINVIEW_MENUBAR ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginContainer::~CPSUIGSPluginContainer() -// Destructor -// --------------------------------------------------------------------------- -// -CPSUIGSPluginContainer::~CPSUIGSPluginContainer() - { - delete iEikMenuBar; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginContainer::ConstructListBoxL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginContainer::ConstructListBoxL( TInt /*aResLbxId*/ ) - { - // listbox creation and initialization - iListBox->SetContainerWindowL( *this ); - iListBox->ConstructL( this, EAknListBoxLoopScrolling ); - iListBox->CreateScrollBarFrameL( ETrue ); - iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto ); - - SetEmptyTextsToListboxL(); - - CPSUIGSPluginModel* psuiModel = iView->PSModel();// not owned - CTextListBoxModel* model = iListBox->Model(); - model->SetItemTextArray( psuiModel ); - model->SetOwnershipType( ELbmDoesNotOwnItemArray ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginContainer::SetEmptyTextsToListboxL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginContainer::SetEmptyTextsToListboxL() - { - // empty texts - _LIT ( KPSUIEmptyStringHeader, "%S\n%S" ); - HBufC* emptyText = iEikonEnv->AllocReadResourceLC( - R_QTN_PRESENCE_SETTINGS_EMPTY_PRIMARY ); - HBufC* emptyText2 = iEikonEnv->AllocReadResourceLC( - R_QTN_PRESENCE_SETTINGS_EMPTY_SECONDARY ); - HBufC* emptyFinal = HBufC::NewLC( - emptyText->Length() + emptyText2->Length() + 2 );// 2 is length of "\n" - emptyFinal->Des().Format( KPSUIEmptyStringHeader, emptyText, emptyText2 ); - iListBox->View()->SetListEmptyTextL( *emptyFinal ); - CleanupStack::PopAndDestroy( 3, emptyText );// emptyText, emptyText2, emptyFinal - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginContainer::OfferKeyEventL() -// See header for details. -// --------------------------------------------------------------------------- -// -TKeyResponse CPSUIGSPluginContainer::OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - if ( iView && aType == EEventKey - && aKeyEvent.iCode == EKeyBackspace && - iEikMenuBar->ItemSpecificCommandsEnabled() ) - { - iView->DeleteSettingsL(); - return EKeyWasConsumed; - } - else - { - return iListBox->OfferKeyEventL( aKeyEvent, aType ); - } - } - -// ----------------------------------------------------------------------------- -// CPSUIGSPluginContainer::GetHelpContext() -// See header for details. -// ----------------------------------------------------------------------------- -// -void CPSUIGSPluginContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - aContext.iMajor = TUid::Uid( PSUIGSPluginDllUid ); - aContext.iContext = KPRE_HLP_LIST_VIEW; - } - -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/src/psuigspluginimplementationtable.cpp --- a/presencesettingsui/src/psuigspluginimplementationtable.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 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: -* ECOM proxy table for this plugin -* -*/ - - - - -// System includes -#include -#include -#include "psuigspluginids.hrh" -#include "psuigsplugin.h" - -// Constants -const TImplementationProxy PSUIGSPluginImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY( PSUIGSPluginImplUid, CPSUIGSPlugin::NewL ) - }; - -// --------------------------------------------------------------------------- -// ImplementationGroupProxy -// Gate/factory function -// -// --------------------------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( - TInt& aTableCount ) - { - aTableCount = sizeof( PSUIGSPluginImplementationTable ) - / sizeof( TImplementationProxy ); - return PSUIGSPluginImplementationTable; - } - -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/src/psuigspluginmodel.cpp --- a/presencesettingsui/src/psuigspluginmodel.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,877 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: Presence settings UI model implementation. -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "psuigspluginmodel.h" - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::CPSUIGSPluginModel() -// C++ default constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------------------------- -// -CPSUIGSPluginModel::CPSUIGSPluginModel() - { - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::~CPSUIGSPluginModel() -// Destructor -// --------------------------------------------------------------------------- -// -CPSUIGSPluginModel::~CPSUIGSPluginModel() - { - delete iSIPEngine; - if ( iSIPProfiles ) - { - iSIPProfiles->ResetAndDestroy(); - delete iSIPProfiles; - } - - iXdmIdArray.Close(); - delete iXdmNameArray; - - iPSIdArray.Close(); - delete iPSNameArray; - delete iVisibleSettingName; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::ConstructL -// Symbian 2nd phase constructor can leave. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::ConstructL() - { - RetrieveSettingsL(); - ReadSipArrayFromEngineL(); - iVisibleSettingName = HBufC::NewL( - KPresSetNameMaxLength + 2 );// max chars + KColumnListSeparator - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::NewL() -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CPSUIGSPluginModel* CPSUIGSPluginModel::NewL() - { - CPSUIGSPluginModel* self = new ( ELeave ) CPSUIGSPluginModel(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); // self - return self; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::RetrieveSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::RetrieveSettingsL() - { - RefreshPSArraysL(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::SaveSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::SaveSettingsL() - { - if ( iSettingId == 0 ) - {// new settings - iSettingId = PresSettingsApi::CreateSetL( iSettingSet ); - } - else - {// old & edited settings - PresSettingsApi::UpdateSetL( iSettingSet, iSettingId ); - } - RefreshPSArraysL(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::CreateDefaultSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::CreateDefaultSettingsL() - { - iSettingId = 0; // new settings - - iSettingSet.iSetName.Zero(); - HBufC* name = CreateSettingNameLC(); - iSettingSet.iSetName.Append( *name ); - CleanupStack::PopAndDestroy( name );// name - - iSettingSet.iSipProfile = KErrNotFound; - iSettingSet.iXDMSetting = KErrNotFound; - iSettingSet.iObjectSize = KErrNotFound; - iSettingSet.iContSrvrAdd.Zero(); - iSettingSet.iPublicationInt = KErrNotFound; - iSettingSet.iMaxSubscriptions = KErrNotFound; - iSettingSet.iMaxContactsInList = KErrNotFound; - iSettingSet.iDomainSyntax.Zero(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::DuplicateExistingSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::DuplicateExistingSettingsL( TInt aIndex ) - { - __ASSERT_DEBUG( aIndex < iPSIdArray.Count() ,User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow )); - - iSettingId = 0; // new settings - TPresSettingsSet originalSettings; - PresSettingsApi::SettingsSetL( iPSIdArray[ aIndex ], originalSettings ); - - iSettingSet.iSetName.Zero(); - HBufC* name = CreateSettingNameLC( originalSettings.iSetName.AllocL() ); - iSettingSet.iSetName.Append( *name ); - CleanupStack::PopAndDestroy( name );// name - - iSettingSet.iSipProfile = originalSettings.iSipProfile; - iSettingSet.iXDMSetting = originalSettings.iXDMSetting; - iSettingSet.iObjectSize = originalSettings.iObjectSize; - iSettingSet.iContSrvrAdd = originalSettings.iContSrvrAdd; - iSettingSet.iPublicationInt = originalSettings.iPublicationInt; - iSettingSet.iMaxSubscriptions = originalSettings.iMaxSubscriptions; - iSettingSet.iMaxContactsInList = originalSettings.iMaxContactsInList; - iSettingSet.iDomainSyntax = originalSettings.iDomainSyntax; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::AllCompulsoryFieldsFilled() -// See header for details. -// --------------------------------------------------------------------------- -// -TBool CPSUIGSPluginModel::AllCompulsoryFieldsFilled() - { - TBool returnValue = ETrue; - for ( TInt i = EPSUIServerNameId ; i <= EPSUIDomainSyntaxId && returnValue ; i++ ) - { - switch( i ) - { - case EPSUIServerNameId: - returnValue = ( iSettingSet.iSetName.Length() != 0 ); - break; - case EPSUISIPProfileId: - returnValue = ( iSettingSet.iSipProfile != KErrNotFound ); - break; - case EPSUIObjectSizeId: - returnValue = ( iSettingSet.iObjectSize != KErrNotFound ); - break; - case EPSUIDomainSyntaxId: - returnValue = ( iSettingSet.iDomainSyntax.Length() != 0 ); - break; - default: - // do nothing with non-compulsory ones - break; - } - } - return returnValue; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::IsItDuplicatePSName() -// See header for details. -// --------------------------------------------------------------------------- -// -TBool CPSUIGSPluginModel::IsItDuplicatePSName() - { - TBool found = KErrNone; - TInt pos = 0; - found = ( iPSNameArray->Find( iSettingSet.iSetName, pos ) == KErrNone ); - if ( found ) - {// dupe found, let's check it's not the same setting - __ASSERT_DEBUG( pos < iPSIdArray.Count() ,User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow )); - found = !( iSettingId == iPSIdArray[ pos ]); - } - return found; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::EditSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::EditSettingsL( TInt aIndex ) - { - __ASSERT_DEBUG( aIndex < iPSIdArray.Count() ,User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow )); - TInt settingId = iPSIdArray[ aIndex ]; - PresSettingsApi::SettingsSetL( settingId, iSettingSet ); - iSettingId = settingId; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::DeleteSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::DeleteSettingsL( TInt aToBeDeleted, TBool aIsIndex ) - { - if ( aIsIndex ) - {// is index - __ASSERT_DEBUG( aToBeDeleted < iPSIdArray.Count() , - User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow )); - PresSettingsApi::RemoveSetL( iPSIdArray[ aToBeDeleted ]); - CleanServiceProviderSettingsDataL( iPSIdArray[ aToBeDeleted ] ); - } - else - {// is id - PresSettingsApi::RemoveSetL( aToBeDeleted ); - CleanServiceProviderSettingsDataL( aToBeDeleted ); - } - RefreshPSArraysL(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::RefreshPSArraysL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::RefreshPSArraysL() - { - delete iPSNameArray; - iPSNameArray = NULL; - iPSIdArray.Reset(); - - iPSNameArray = PresSettingsApi::GetAllSetsNamesLC( iPSIdArray ); - CleanupStack::Pop( iPSNameArray );// iPSNameArray - ReArrangePresenceSettingsL(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::ReArrangePresenceSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::ReArrangePresenceSettingsL() - { - const TInt settingsCount = iPSNameArray->Count(); - __ASSERT_DEBUG( - settingsCount == iPSIdArray.Count(), - User::Panic( KPSUIGSPluginPanicCategory, KErrArgument )); - - // make a tables of the original pairs - RPointerArray pairArray; - TCleanupItem clItem( ResetAndDestroy, &pairArray ); - CleanupStack::PushL( clItem ); - CPSUINameIDPair* pair = NULL; - for( TInt i = 0;i < settingsCount;i++ ) - { - pair = new ( ELeave ) CPSUINameIDPair; - CleanupStack::PushL( pair ); - pair->iID = iPSIdArray[ i ]; - pair->iName = iPSNameArray->MdcaPoint( i ).AllocL(); - pairArray.AppendL( pair ); - CleanupStack::Pop( pair );// pair is in array's responsibility now - } - - // sort the original - iPSNameArray->Sort( ECmpCollated ); - - // re-arrange the iPSIdArray based on order of iPSNameArray - iPSIdArray.Reset(); - for( TInt i = 0;i < settingsCount;i++ ) - { - for( TInt ii = 0;ii < pairArray.Count();ii++ ) - { - if ( !iPSNameArray->MdcaPoint( i ).Compare( - *pairArray[ii]->iName )) - { - iPSIdArray.AppendL( pairArray[ii]->iID ); - delete pairArray[ii]; - pairArray.Remove(ii); - break;// no need to go through if already found - } - } - } - CleanupStack::PopAndDestroy( &pairArray ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::CleanServiceProviderSettingsDataL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::CleanServiceProviderSettingsDataL( TInt aPresenceId ) - { - CSPSettings* spSettings = CSPSettings::NewLC(); - - RArray serviceIds; - CleanupClosePushL( serviceIds ); - spSettings->FindServiceIdsL( serviceIds ); - - for ( TInt i( 0 ) ; i < serviceIds.Count() ; i++ ) - { - CSPEntry* spEntry = CSPEntry::NewLC(); - CSPProperty* property1 = CSPProperty::NewLC(); - - TInt err = spSettings->FindPropertyL( - serviceIds[ i ], - ESubPropertyPresenceSettingsId, - *property1 ); - - if ( KErrNone == err ) - { - User::LeaveIfError( - spSettings->FindEntryL( serviceIds[ i ], *spEntry ) ); - - TInt presenceId( 0 ); - User::LeaveIfError( property1->GetValue( presenceId ) ); - - if ( presenceId == aPresenceId ) - { - // Delete all presence related properties from services which - // has this presence id (ESubPropertyPresenceSettingsId). - RPropertyNameArray propertyNameArray; - CleanupClosePushL( propertyNameArray ); - RPropertyNameArray propertyNameArrayToBeDeleted; - CleanupClosePushL( propertyNameArrayToBeDeleted ); - - // presence properties to be removed if found - propertyNameArray.Append( EPropertyPCSPluginId ); - propertyNameArray.Append( EPropertyPresenceSubServicePluginId ); - propertyNameArray.Append( ESubPropertyPresenceSettingsId ); - propertyNameArray.Append( ESubPropertyPresencePreferredSNAPId ); - propertyNameArray.Append( ESubPropertyPresencePreferredIAPId ); - propertyNameArray.Append( ESubPropertyPresencePresentityIDFieldType ); - propertyNameArray.Append( ESubPropertyPresenceLaunchMethod ); - propertyNameArray.Append( ESubPropertyPresenceLaunchUid ); - propertyNameArray.Append( ESubPropertyPresenceAddrScheme ); - propertyNameArray.Append( ESubPropertyPresenceEnabled ); - propertyNameArray.Append( ESubPropertyPresenceRequestPreference ); - - for ( TInt j( 0 ) ; j < propertyNameArray.Count() ; j++ ) - { - CSPProperty* property2 = CSPProperty::NewLC(); - - TInt err = spSettings->FindPropertyL( - serviceIds[ i ], - propertyNameArray[ j ], - *property2 ); - - // if property found add to be deleted array - if ( !err ) - { - propertyNameArrayToBeDeleted.Append( - propertyNameArray[ j ] ); - } - - CleanupStack::PopAndDestroy( property2 ); - } - - spSettings->DeleteServicePropertiesL( - serviceIds[ i ], propertyNameArrayToBeDeleted ); - - CleanupStack::PopAndDestroy( &propertyNameArrayToBeDeleted ); - CleanupStack::PopAndDestroy( &propertyNameArray ); - } - } - - CleanupStack::PopAndDestroy( property1 ); - CleanupStack::PopAndDestroy( spEntry ); - } - - CleanupStack::PopAndDestroy( &serviceIds ); - CleanupStack::PopAndDestroy( spSettings ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::MdcaCount() -// See header for details. -// --------------------------------------------------------------------------- -// -TInt CPSUIGSPluginModel::MdcaCount() const - { - return iPSNameArray->MdcaCount(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::MdcaPoint() -// See header for details. -// --------------------------------------------------------------------------- -// -TPtrC16 CPSUIGSPluginModel::MdcaPoint( TInt aIndex ) const - { - TPtr tempText = iVisibleSettingName->Des(); - tempText.Zero(); - tempText.Append( KColumnListSeparator ); - tempText.Append( iPSNameArray->MdcaPoint( aIndex )); - - return tempText; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::CreateSettingNameLC() -// See header for details. -// --------------------------------------------------------------------------- -// -HBufC* CPSUIGSPluginModel::CreateSettingNameLC( HBufC* aOriginalName ) - { - _LIT( KPSUIGSPluginNumbering, "(%N)" ); - const TInt KPSUIFormattingExtraLength = 6; - - // prepare - HBufC* settingName = aOriginalName ? - aOriginalName : - StringLoader::LoadL( R_QTN_PRESENCE_NAME_DEFAULT ); - - if ( settingName->Length() + KPSUIFormattingExtraLength > KPresSetNameMaxLength ) - {//if there is no room for duplicate-numbering, let user take care of that when saving settings - CleanupStack::PushL( settingName ); - return settingName; - } - - settingName = settingName->ReAlloc( - settingName->Length() + KPSUIFormattingExtraLength );// enough for formatting - CleanupStack::PushL( settingName ); - HBufC* tempSetName = NULL; - TInt pos = 0;// used as dummy - TInt found = 0; - TInt index = 1; - TPtr ptr = settingName->Des(); - - // do the actual checking of name - found = iPSNameArray->Find( *settingName, pos ); - while ( found == 0 ) - { - if ( !tempSetName ) - { - if ( aOriginalName ) - {// aOriginalName given - tempSetName = GetPrefixL( settingName ); - tempSetName = tempSetName->ReAlloc( - tempSetName->Length() + KPSUIFormattingExtraLength );// enough for formatting - CleanupStack::PushL( tempSetName ); - tempSetName->Des().Append( KPSUIGSPluginNumbering ); - } - else - {// aOriginalName not given - tempSetName = StringLoader::LoadLC( R_QTN_PRESENCE_NAME_DEFAULT_NUMBER ); - } - } - StringLoader::Format( ptr, *tempSetName, -1, index ); - found = iPSNameArray->Find( *settingName, pos ); - index++; - } - - // cleanup - if ( tempSetName ) - { - CleanupStack::PopAndDestroy( tempSetName ); //tempSetName - } - - return settingName; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::GetPrefixL() -// See header for details. -// --------------------------------------------------------------------------- -// -HBufC* CPSUIGSPluginModel::GetPrefixL( HBufC* aName ) - { - TPtrC prefix = aName->Des(); - TInt lastBrace = aName->LocateReverse('('); - if ( lastBrace != KErrNotFound ) - { - // aName looks like "". - // See if is an integer number and - // ends to a brace. - TPtrC num = aName->Right( aName->Length() - lastBrace - 1 ); - TInt val; - TLex lex( num ); - if ( lex.Val( val ) == KErrNone && num.Locate(')') == num.Length() - 1 ) - { - // Yes, the trailer is an integer. - prefix.Set( aName->Left( lastBrace ) ); - } - } - return prefix.AllocL(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::CurrentSettingName() -// See header for details. -// --------------------------------------------------------------------------- -// -HBufC* CPSUIGSPluginModel::SettingNameLC( TInt aIndex ) - { - return iPSNameArray->MdcaPoint( aIndex ).AllocLC(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::SettingNames() -// See header for details. -// --------------------------------------------------------------------------- -// -CDesCArray* CPSUIGSPluginModel::SettingNames() - { - return iPSNameArray;// ownership stays in CPSUIGSPluginModel - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::SettingsSet() -// See header for details. -// --------------------------------------------------------------------------- -// -TPresSettingsSet& CPSUIGSPluginModel::SettingsSet() - { - return iSettingSet; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::ClearInvalidSIPAndXDMSettingsL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::ClearInvalidSIPAndXDMSettingsL() - { - // SIP - ReadSipArrayFromEngineL(); - if ( iSettingSet.iSipProfile != KErrNotFound && - KErrNotFound == SipProfileIndex( iSettingSet.iSipProfile )) - { - iSettingSet.iSipProfile = KErrNotFound; - } - // XDM - XdmCollectionNamesL(); - if ( iSettingSet.iXDMSetting != KErrNotFound && - KErrNotFound == XdmSettingIndex( iSettingSet.iXDMSetting )) - { - iSettingSet.iXDMSetting = KErrNotFound; - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::SettingsId() -// See header for details. -// --------------------------------------------------------------------------- -// -TInt& CPSUIGSPluginModel::SettingsId() - { - return iSettingId; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::SettingsIDArray() -// See header for details. -// --------------------------------------------------------------------------- -// -RArray& CPSUIGSPluginModel::SettingsIDArray() - { - return iPSIdArray; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::SipProfilesLC() -// See header for details. -// --------------------------------------------------------------------------- -// -CDesCArray* CPSUIGSPluginModel::SipProfilesLC() - { - ReadSipArrayFromEngineL(); - CDesCArray* array = new ( ELeave ) CDesCArrayFlat( 2 ); - CleanupStack::PushL( array ); - const TInt arrayCount = iSIPProfiles->Count(); - for ( TInt i = 0; i < arrayCount; i++ ) - { - const TDesC8* profileName; - iSIPProfiles->At( i )->GetParameter( KSIPProviderName, profileName ); - HBufC* profileName16 = - EscapeUtils::ConvertToUnicodeFromUtf8L( *profileName ); - CleanupStack::PushL( profileName16 ); - array->AppendL( profileName16->Des() ); - CleanupStack::PopAndDestroy( profileName16 );// profileName16 - } - return array; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::SipProfileId() -// See header for details. -// --------------------------------------------------------------------------- -// -TInt CPSUIGSPluginModel::SipProfileId( TInt aIndex ) - { - __ASSERT_DEBUG( iSIPProfiles, User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound )); - - TUint32 id = 0; - if ( aIndex < iSIPProfiles->Count()) - { - iSIPProfiles->At( aIndex )->GetParameter( KSIPProfileId, id ); - } - - __ASSERT_DEBUG( id < KMaxTInt ,User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow )); - return id ? TInt( id ) : KErrNotFound; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::SipProfileIndex() -// See header for details. -// --------------------------------------------------------------------------- -// -TInt CPSUIGSPluginModel::SipProfileIndex( TInt aId ) - { - __ASSERT_DEBUG( iSIPProfiles, User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound )); - const TInt arrayCount = iSIPProfiles->Count(); - TUint32 idValue = aId; - for ( TInt i = 0; i < arrayCount; i++ ) - { - TUint32 tempValue; - iSIPProfiles->At( i )->GetParameter( KSIPProfileId, tempValue ); - if ( tempValue == idValue ) - { - return i; - } - } - return KErrNotFound; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::SipProfileNameL() -// See header for details. -// --------------------------------------------------------------------------- -// -HBufC* CPSUIGSPluginModel::SipProfileNameL( TInt aId ) - { - const TInt arrayCount = iSIPProfiles->Count(); - TUint32 idValue = aId; - for ( TInt i = 0; i < arrayCount; i++ ) - { - TUint32 tempValue; - iSIPProfiles->At( i )->GetParameter( KSIPProfileId, tempValue ); - if ( tempValue == idValue ) - { - const TDesC8* profileName; - iSIPProfiles->At( i )->GetParameter( KSIPProviderName, profileName ); - return EscapeUtils::ConvertToUnicodeFromUtf8L( *profileName );// name found - } - } - return HBufC::NewL( 0 );// name not found - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::IsSipProfileRegisteredL() -// See header for details. -// --------------------------------------------------------------------------- -// -TBool CPSUIGSPluginModel::IsSipProfileRegisteredL( TInt aIndex ) - { - TBool registered( EFalse ); - TInt sipProfileId = SipProfileId( aIndex ); - const TInt arrayCount = iSIPProfiles->Count(); - - for ( TInt i = 0; i < arrayCount; i++ ) - { - TUint32 tempValue; - iSIPProfiles->At( i )->GetParameter( KSIPProfileId, tempValue ); - - if ( tempValue == sipProfileId ) - { - iSIPProfiles->At( i )->GetParameter( - KSIPProfileRegistered, registered ); - } - } - - return registered; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::ReadSipArrayFromEngineL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::ReadSipArrayFromEngineL() - { - RArray array; - CleanupClosePushL( array ); - - if ( !iSIPEngine ) - { - iSIPEngine = CSIPManagedProfileRegistry::NewL( *this ); - } - - // Get the supported profile types - iSIPEngine->SupportedProfileTypesL( array ); - - // check iSIPProfiles, if exists delete - if ( iSIPProfiles ) - { - iSIPProfiles->ResetAndDestroy(); - delete iSIPProfiles; - } - - // Create the profile pointer array - iSIPProfiles = - new ( ELeave ) CArrayPtrFlat( 2 ); - - RPointerArray profilePointerArray; - TCleanupItem clItem( ResetAndDestroy, &profilePointerArray ); - CleanupStack::PushL( clItem ); - - // Get all profiles based on profile types - const TInt arrayCount = array.Count(); - for ( TInt i = 0; i < arrayCount; i++ ) - { - iSIPEngine->ProfilesL( array[i], profilePointerArray ); - while ( profilePointerArray.Count() > 0 ) - { - CSIPManagedProfile* profile = - static_cast( profilePointerArray[ 0 ]); - iSIPProfiles->AppendL( profile ); - profilePointerArray.Remove( 0 ); - } - profilePointerArray.Reset(); - } - - CleanupStack::PopAndDestroy( 2, &array ); // array - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::ResetAndDestroy() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::ResetAndDestroy( - TAny* aPointerArray ) - { - RPointerArray* array = - static_cast*>( aPointerArray ); - array->ResetAndDestroy(); - array->Close(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::ProfileRegistryEventOccurred() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::ProfileRegistryEventOccurred( - TUint32 /*aSIPProfileId*/, TEvent aEvent ) - { - switch( aEvent ) - { - case EProfileCreated: - case EProfileUpdated: - case EProfileDestroyed: - // update sip profile array - TRAP_IGNORE( ReadSipArrayFromEngineL() ); - break; - default: - // do nothing. - break; - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::ProfileRegistryErrorOccurred() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginModel::ProfileRegistryErrorOccurred( - TUint32 /*aSIPProfileId*/, - TInt /*aError*/ ) - { - // update sip profile array - TRAP_IGNORE( ReadSipArrayFromEngineL() ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::XdmCollectionNamesL() -// See header for details. -// --------------------------------------------------------------------------- -// -CDesCArray* CPSUIGSPluginModel::XdmCollectionNamesL() - { - delete iXdmNameArray; - iXdmNameArray = NULL; - iXdmIdArray.Reset(); - - iXdmNameArray = TXdmSettingsApi::CollectionNamesLC( iXdmIdArray ); - CleanupStack::Pop( iXdmNameArray );// iXdmNameArray - return iXdmNameArray;// pointer is given, but ownership stays here - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::XdmCollectionNameL() -// See header for details. -// --------------------------------------------------------------------------- -// -HBufC* CPSUIGSPluginModel::XdmCollectionNameL( TInt aId ) - { - HBufC* buf = NULL; - TRAPD( err, buf = TXdmSettingsApi::PropertyL( aId, EXdmPropName )); - return ( err == KErrNone ) ? buf : HBufC::NewL( 0 ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::XdmSettingIndex() -// See header for details. -// --------------------------------------------------------------------------- -// -TInt CPSUIGSPluginModel::XdmSettingIndex( TInt aId ) - { - const TInt arrayCount = iXdmIdArray.Count(); - for ( TInt i = 0; i < arrayCount; i++ ) - { - if ( aId == iXdmIdArray[ i ] ) - { - return i; - } - } - return KErrNotFound; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginModel::XdmSettingId() -// See header for details. -// --------------------------------------------------------------------------- -// -TInt CPSUIGSPluginModel::XdmSettingId( TInt aIndex ) - { - TInt id = KErrNotFound; - if ( aIndex+1 <= iXdmIdArray.Count()) - { - id = iXdmIdArray[ aIndex ]; - } - return id; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 presencesettingsui/src/psuigspluginsettingview.cpp --- a/presencesettingsui/src/psuigspluginsettingview.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,319 +0,0 @@ -/* -* Copyright (c) 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: Presence Settings UI setting view implementation. -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include "psuigsplugin.h" -#include "psuigspluginsettingview.h" -#include "psuigspluginmodel.h" -#include "psuigspluginsettingviewcontainer.h" - -// CONSTANTS - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::CPSUIGSPluginSettingView() -// C++ default constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------------------------- -// -CPSUIGSPluginSettingView::CPSUIGSPluginSettingView( CPSUIGSPlugin* aMainView ) - : iMainView ( aMainView ) - { - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::~CPSUIGSPluginSettingView() -// Destructor -// --------------------------------------------------------------------------- -// -CPSUIGSPluginSettingView::~CPSUIGSPluginSettingView() - { - // iAppUi, iMainView deleted elsewhere - if ( iPSUIContainer && iAppUi ) - { - iAppUi->RemoveFromViewStack( *this, iPSUIContainer ); - delete iPSUIContainer; - iPSUIContainer = NULL; - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::ConstructL -// Symbian 2nd phase constructor can leave. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingView::ConstructL() - { - // base construct - BaseConstructL( R_PSUI_SETTING_VIEW ); - iAppUi = AppUi(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::NewL() -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CPSUIGSPluginSettingView* CPSUIGSPluginSettingView::NewL( CPSUIGSPlugin* aMainView ) - { - CPSUIGSPluginSettingView* self = new( ELeave ) CPSUIGSPluginSettingView( aMainView ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::Id() -// See header for details. -// --------------------------------------------------------------------------- -// -TUid CPSUIGSPluginSettingView::Id() const - { - return KPreSettingViewId; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::HandleViewRectChange() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingView::HandleViewRectChange() - { - if ( iPSUIContainer && iPSUIContainer->ListBox() ) - { - iPSUIContainer->SetRect( ClientRect() ); - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::DoActivateL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingView::DoActivateL( const TVwsViewId& aPrevViewId, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - iPrevViewId = aPrevViewId; - - CreateContainerL(); - iAppUi->AddToViewStackL( *this, iPSUIContainer ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::DoDeactivate() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingView::DoDeactivate() - { - if ( iPSUIContainer ) - { - iAppUi->RemoveFromViewStack( *this, iPSUIContainer ); - delete iPSUIContainer; - iPSUIContainer = NULL; - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::HandleCommandL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingView::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case EAknSoftkeyBack: - { - HandleBackKeyL(); - break; - } - case EPSUICmdChange: - { - iPSUIContainer->EditCurrentItemL(); - break; - } - case EAknCmdHelp: - { - if( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - HlpLauncher::LaunchHelpApplicationL( - iEikonEnv->WsSession(), iAppUi->AppHelpContextL() ); - } - break; - } - default: - { - if ( EEikCmdExit == aCommand ) - { - HandleMenuExitL(); - } - - iAppUi->HandleCommandL( aCommand ); - break; - } - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::CreateContainerL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingView::CreateContainerL() - { - // delete container if present - if( iPSUIContainer ) - { - iAppUi->RemoveFromViewStack( *this, iPSUIContainer ); - delete iPSUIContainer; - iPSUIContainer = NULL; - } - - // check the data - iMainView->PSModel()->ClearInvalidSIPAndXDMSettingsL(); - - // create container - iPSUIContainer = new ( ELeave ) CPSUIGSPluginSettingViewContainer( this ); - iPSUIContainer->SetMopParent( this ); - iPSUIContainer->ConstructL( ClientRect() ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::HandleBackKeyL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingView::HandleBackKeyL() - { - CPSUIGSPluginModel* psModel = iMainView->PSModel();// not owned - - TBool okToGoBack = ETrue; - TBool okToSave = ETrue; - psModel->ClearInvalidSIPAndXDMSettingsL(); - const TInt id = psModel->SettingsId(); - - // compulsory-field handling - if ( !psModel->AllCompulsoryFieldsFilled()) - {// empty compulsory fields found - okToSave = EFalse; - HBufC* string = StringLoader::LoadLC( - R_QTN_PRESENCE_SETTINGS_NOT_FILLED ); - CAknQueryDialog* query = CAknQueryDialog::NewL( - CAknQueryDialog::EConfirmationTone ); - if ( !query->ExecuteLD( R_PSUI_CONF_QUERY, *string )) - { - okToGoBack = EFalse; - } - CleanupStack::PopAndDestroy( string );// string - } - - // same name checking - if ( okToSave && HandleDuplicatePSNamesL() ) - {// same name found - okToGoBack = EFalse; - okToSave = EFalse; - iPSUIContainer->EditItemL( EPSUIServerNameId, ETrue ); - } - - if ( okToSave ) - {// save settings - psModel->SaveSettingsL(); - } - else if ( !okToSave && okToGoBack && id ) - {// old settings, delete and go back - psModel->DeleteSettingsL( id, EFalse ); - } - if ( okToGoBack ) - {// go back, no save or delete - iAppUi->ActivateLocalViewL( iPrevViewId.iViewUid ); - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::HandleMenuExitL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingView::HandleMenuExitL() - { - CPSUIGSPluginModel* psModel = iMainView->PSModel();// not owned - if ( !psModel ) - {// no model, can't do anything - // (leaving would stop exiting, so just return) - return; - } - - if ( psModel->AllCompulsoryFieldsFilled() ) - {// needed fields filled, proceed saving - if ( psModel->IsItDuplicatePSName() ) - {// a dupe name -> change name - HBufC* newName = psModel->CreateSettingNameLC( - psModel->SettingsSet().iSetName.AllocL() ); - psModel->SettingsSet().iSetName.Copy( newName->Des() ); - CleanupStack::PopAndDestroy( newName ); - } - // save settings - psModel->SaveSettingsL(); - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::HandleDuplicatePSNamesL() -// See header for details. -// --------------------------------------------------------------------------- -// -TBool CPSUIGSPluginSettingView::HandleDuplicatePSNamesL() - { - TBool found = iMainView->PSModel()->IsItDuplicatePSName(); - if ( found ) - { - HBufC* fullText = StringLoader::LoadLC( - R_QTN_PRESENCE_SETTINGS_NAME_EXISTS, - iMainView->PSModel()->SettingsSet().iSetName ); - CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue ); //wait-flag on - note->ExecuteLD( *fullText ); - CleanupStack::PopAndDestroy( fullText ); - } - return found; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingView::MainView() -// See header for details. -// --------------------------------------------------------------------------- -// -CPSUIGSPlugin* CPSUIGSPluginSettingView::MainView() - { - return iMainView; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 presencesettingsui/src/psuigspluginsettingviewcontainer.cpp --- a/presencesettingsui/src/psuigspluginsettingviewcontainer.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,221 +0,0 @@ -/* -* Copyright (c) 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: Presence Settings UI view container implementation -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include "psuigspluginsettingviewcontainer.h" -#include "psuigspluginsettingview.h" -#include "psuigspluginmodel.h" -#include "psuisipxdmsettingitem.h" -#include "psuiintegersettingitem.h" -#include "psuigsplugin.h" -#include "psuigspluginids.hrh" -#include -#include - - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::CPSUIGSPluginSettingViewContainer() -// Default constructor. -// --------------------------------------------------------------------------- -// -CPSUIGSPluginSettingViewContainer::CPSUIGSPluginSettingViewContainer( - CPSUIGSPluginSettingView* aView ) - : iView ( aView ) - { - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::ConstructL(const TRect& aRect) -// Symbian OS phase 2 constructor -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingViewContainer::ConstructL( const TRect& aRect ) - { - UpdateTitleL(); - CreateWindowL(); - ConstructFromResourceL( R_PSUI_SETTING_ITEMS ); - SetRect( aRect ); - ActivateL(); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::~CPSUIGSPluginSettingViewContainer() -// Destructor -// --------------------------------------------------------------------------- -// -CPSUIGSPluginSettingViewContainer::~CPSUIGSPluginSettingViewContainer() - { - // iView is deleted elsewhere - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::CreateSettingItemL() -// See header for details. -// --------------------------------------------------------------------------- -// -CAknSettingItem* CPSUIGSPluginSettingViewContainer::CreateSettingItemL( - TInt aSettingId ) - { - CAknSettingItem* settingItem = NULL; - TPresSettingsSet& settingSet = iView->MainView()->PSModel()->SettingsSet(); - - switch ( aSettingId ) - { - case EPSUIServerNameId: - settingItem = new (ELeave) CAknTextSettingItem( - aSettingId, settingSet.iSetName ); - break; - case EPSUISIPProfileId: - settingItem = new (ELeave) CPSUISipXdmSettingItem( - aSettingId, settingSet.iSipProfile, iView->MainView()->PSModel() ); - break; - case EPSUIXDMSettingsId: - settingItem = new (ELeave) CPSUISipXdmSettingItem( - aSettingId, settingSet.iXDMSetting, iView->MainView()->PSModel() ); - break; - case EPSUIObjectSizeId: - settingItem = new (ELeave) CPSUIIntegerSettingItem( - aSettingId, settingSet.iObjectSize ); - break; -/* server address disabled - case EPSUIServerAddrId: - settingItem = new (ELeave) CAknTextSettingItem( - aSettingId, settingSet.iContSrvrAdd ); - break;*/ - case EPSUIPublishingIntervalId: - settingItem = new (ELeave) CPSUIIntegerSettingItem( - aSettingId, settingSet.iPublicationInt ); - break; - case EPSUIMaxSubscriptionsId: - settingItem = new (ELeave) CPSUIIntegerSettingItem( - aSettingId, settingSet.iMaxSubscriptions ); - settingItem->SetSettingPageFlags( - CAknIntegerSettingPage::EEmptyValueAllowed);// Empty input allowed - break; - case EPSUIMaxContactsInListId: - settingItem = new (ELeave) CPSUIIntegerSettingItem( - aSettingId, settingSet.iMaxContactsInList ); - settingItem->SetSettingPageFlags( - CAknIntegerSettingPage::EEmptyValueAllowed);// Empty input allowed - break; - case EPSUIDomainSyntaxId: - settingItem = new (ELeave) CAknTextSettingItem( - aSettingId, settingSet.iDomainSyntax ); - break; - default: - __ASSERT_DEBUG( 0, User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound )); - break; - } - - return settingItem; - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::EditItemL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingViewContainer::EditItemL( - TInt aIndex, TBool aCalledFromMenu ) - { - CAknSettingItemList::EditItemL( aIndex, aCalledFromMenu ); - - // update setting to setting-object - (*SettingItemArray())[aIndex]->StoreL(); - (*SettingItemArray())[aIndex]->UpdateListBoxTextL(); - ListBox()->DrawNow(); - - if ( EPSUIServerNameId == aIndex ) - { - UpdateTitleL(); - } - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::EditCurrentItemL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingViewContainer::EditCurrentItemL() - { - EditItemL( ListBox()->CurrentItemIndex(), ETrue ); - } - -// --------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::UpdateTitleL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingViewContainer::UpdateTitleL() - { - // title construction - static_cast( - iAvkonAppUi->StatusPane()->ControlL( TUid::Uid( - EEikStatusPaneUidTitle )))->SetTextL( - iView->MainView()->PSModel()->SettingsSet().iSetName ); - } - -// ----------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::GetHelpContext() -// See header for details. -// ----------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingViewContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - aContext.iMajor = TUid::Uid( PSUIGSPluginDllUid ); - aContext.iContext = KPRE_HLP_EDIT_SET; - } - -// ----------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::HandleResourceChange() -// See header for details. -// ----------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingViewContainer::HandleResourceChange(TInt aType) - { - CAknSettingItemList::HandleResourceChange( aType ); - if ( aType == KAknsMessageSkinChange || - aType == KEikDynamicLayoutVariantSwitch ) - { - TRect mainPaneRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, - mainPaneRect); - SetRect( mainPaneRect ); - } - } - -// ----------------------------------------------------------------------------- -// CPSUIGSPluginSettingViewContainer::SizeChanged() -// See header for details. -// ----------------------------------------------------------------------------- -// -void CPSUIGSPluginSettingViewContainer::SizeChanged() - { - ListBox()->SetRect( Rect() ); - } - -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/src/psuiintegersettingitem.cpp --- a/presencesettingsui/src/psuiintegersettingitem.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* Copyright (c) 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: Setting item for integer settings -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include "psuigspluginmodel.h" -#include "psuiintegersettingitem.h" - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CPSUIIntegerSettingItem::CPSUIIntegerSettingItem() -// See header for details. -// --------------------------------------------------------------------------- -// -CPSUIIntegerSettingItem::CPSUIIntegerSettingItem( TInt aIdentifier, TInt& aValue ) - : CAknIntegerEdwinSettingItem ( aIdentifier, aValue ), - iPSUIInternalTextPtr( 0,0 ) - { - } - -// --------------------------------------------------------------------------- -// CPSUIIntegerSettingItem::~CPSUIIntegerSettingItem() -// See header for details. -// --------------------------------------------------------------------------- -// -CPSUIIntegerSettingItem::~CPSUIIntegerSettingItem() - { - delete iPSUIInternalText; - } - -// --------------------------------------------------------------------------- -// CPSUIIntegerSettingItem::CompleteConstructionL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUIIntegerSettingItem::CompleteConstructionL() - { - const TInt KPSUIMaxIntegerDigits = 2 * EAknMaxIntegerDigits;// a bit longer for storing also empty texts - iPSUIInternalText = HBufC::NewMaxL( KPSUIMaxIntegerDigits ); - } - -// --------------------------------------------------------------------------- -// CPSUIIntegerSettingItem::SettingTextL() -// See header for details. -// --------------------------------------------------------------------------- -// -const TDesC& CPSUIIntegerSettingItem::SettingTextL() - { - _LIT( KAknIntegerFormat, "%d" ); - iPSUIInternalTextPtr.Set( iPSUIInternalText->Des() ); - TInt& intValueRef = InternalValueRef(); - if ( intValueRef == KErrNotFound ) - { - iPSUIInternalTextPtr.Zero(); - iPSUIInternalTextPtr.Append( EmptyItemText() ); - iPSUIInternalTextPtr.Append( KColumnListSeparator ); - } - else - { - iPSUIInternalTextPtr.Format( KAknIntegerFormat, intValueRef ); - AknTextUtils::DisplayTextLanguageSpecificNumberConversion( - iPSUIInternalTextPtr ); - } - - return iPSUIInternalTextPtr; - } - -// End of File diff -r 2580314736af -r 2669f8761a99 presencesettingsui/src/psuisipxdmsettingitem.cpp --- a/presencesettingsui/src/psuisipxdmsettingitem.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,193 +0,0 @@ -/* -* Copyright (c) 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: Setting item for SIP / XDM settings -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include "psuigspluginmodel.h" -#include "psuisipxdmsettingitem.h" - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CPSUISipXdmSettingItem::CPSUISipXdmSettingItem() -// Default constructor. -// --------------------------------------------------------------------------- -// -CPSUISipXdmSettingItem::CPSUISipXdmSettingItem( - TInt aIdentifier, TInt& aId, CPSUIGSPluginModel* aPSModel ): - CAknSettingItem( aIdentifier ), - iExtChosenSettingID ( aId ), - iPSModel ( aPSModel ) - { - } - -// --------------------------------------------------------------------------- -// CPSUISipXdmSettingItem::~CPSUISipXdmSettingItem() -// Destructor -// --------------------------------------------------------------------------- -// -CPSUISipXdmSettingItem::~CPSUISipXdmSettingItem() - { - // iPSModel deleted elsewhere - delete iPSUIInternalText; - } - -// --------------------------------------------------------------------------- -// CPSUISipXdmSettingItem::LoadL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUISipXdmSettingItem::LoadL() - { - delete iPSUIInternalText; - iPSUIInternalText = 0; - - TInt id = Identifier(); - if ( id == EPSUISIPProfileId ) - {// SIP - iPSUIInternalText = iPSModel->SipProfileNameL( iExtChosenSettingID ); - } - else if ( id == EPSUIXDMSettingsId ) - {// XDM - iPSUIInternalText = iPSModel->XdmCollectionNameL( iExtChosenSettingID ); - } - else - { - __ASSERT_DEBUG( 0,User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound )); - } - - iIntChosenSettingID = iExtChosenSettingID; - } - -// --------------------------------------------------------------------------- -// CPSUISipXdmSettingItem::StoreL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUISipXdmSettingItem::StoreL() - { - iExtChosenSettingID = iIntChosenSettingID; - } - -// --------------------------------------------------------------------------- -// CPSUISipXdmSettingItem::SettingTextL() -// See header for details. -// --------------------------------------------------------------------------- -// -const TDesC& CPSUISipXdmSettingItem::SettingTextL() - { - if ( iPSUIInternalText->Length() > 0 ) - return *iPSUIInternalText; - else - return EmptyItemText(); - } - -// --------------------------------------------------------------------------- -// CPSUISipXdmSettingItem::EditItemL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUISipXdmSettingItem::EditItemL( TBool /*aCalledFromMenu*/ ) - { - TInt id = Identifier(); - if ( id == EPSUISIPProfileId ) - {// SIP - EditSipItemL(); - } - else if ( id == EPSUIXDMSettingsId ) - {// XDM - EditXdmItemL(); - } - else - { - __ASSERT_DEBUG( 0,User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound )); - } - } - -// --------------------------------------------------------------------------- -// CPSUISipXdmSettingItem::EditSipItemL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUISipXdmSettingItem::EditSipItemL() - { - CDesCArray* array = iPSModel->SipProfilesLC(); - TInt index = iPSModel->SipProfileIndex( iIntChosenSettingID ); - LaunchSettingDlgL( index, array ); - CleanupStack::PopAndDestroy( array ); // array - - if ( index != KErrNotFound ) - {// update only if index available - iIntChosenSettingID = iPSModel->SipProfileId( index ); - - delete iPSUIInternalText; - iPSUIInternalText = 0; - iPSUIInternalText = iPSModel->SipProfileNameL( iIntChosenSettingID ); - - UpdateListBoxTextL(); - } - } - -// --------------------------------------------------------------------------- -// CPSUISipXdmSettingItem::EditXdmItemL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUISipXdmSettingItem::EditXdmItemL() - { - CDesCArray* array = iPSModel->XdmCollectionNamesL();// array not owned - TInt index = iPSModel->XdmSettingIndex( iIntChosenSettingID ); - LaunchSettingDlgL( index, array ); - - if ( index != KErrNotFound ) - {// update only if index available - iIntChosenSettingID = iPSModel->XdmSettingId( index ); - - delete iPSUIInternalText; - iPSUIInternalText = 0; - iPSUIInternalText = iPSModel->XdmCollectionNameL( iIntChosenSettingID ); - - UpdateListBoxTextL(); - } - } - -// --------------------------------------------------------------------------- -// CPSUISipXdmSettingItem::LaunchSettingDlgL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CPSUISipXdmSettingItem::LaunchSettingDlgL( TInt& aIndex, CDesCArray* aArray ) - { - CAknRadioButtonSettingPage* dlg = new (ELeave ) CAknRadioButtonSettingPage( - R_RADIOBUTTON_SETTING_PAGE, - aIndex, - aArray ); - CleanupStack::PushL( dlg ); - dlg->SetSettingTextL( SettingName() ); - SetSettingPage( dlg ); - SettingPage()->SetSettingPageObserver( this ); - CleanupStack::Pop( dlg ); // dlg - SettingPage()->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ); - SetSettingPage( 0 ); // dlg deleted - } - -// End of File diff -r 2580314736af -r 2669f8761a99 pressrv_plat/registration_api/inc/simplefactory.h --- a/pressrv_plat/registration_api/inc/simplefactory.h Thu Aug 19 10:19:02 2010 +0300 +++ b/pressrv_plat/registration_api/inc/simplefactory.h Tue Aug 31 15:35:50 2010 +0300 @@ -162,15 +162,6 @@ IMPORT_C static MSimpleContent* NewContentL( const TDesC8& aContentID, const TDesC8& aContentType ); - /** - * Create new simple engine Connection entity. - * @since S60 3.2 - * @param aObserver client callback observer - * @param aServiceId serviceId of current service - * @return MSimpleConnection, ownership is transferred. - */ - IMPORT_C static MSimpleConnection* NewConnectionL( - MSimpleConnectionObserver& aObserver, TInt32 aServiceId ); }; #endif diff -r 2580314736af -r 2669f8761a99 pressrv_plat/simple_documents_api/inc/msimplecontent.h --- a/pressrv_plat/simple_documents_api/inc/msimplecontent.h Thu Aug 19 10:19:02 2010 +0300 +++ b/pressrv_plat/simple_documents_api/inc/msimplecontent.h Tue Aug 31 15:35:50 2010 +0300 @@ -22,7 +22,7 @@ #define M_simplecontent_H #include -// #include +// #include // FORWARD DECLARATION diff -r 2580314736af -r 2669f8761a99 pressrv_plat/xdm_api/inc/XdmDocument.h --- a/pressrv_plat/xdm_api/inc/XdmDocument.h Thu Aug 19 10:19:02 2010 +0300 +++ b/pressrv_plat/xdm_api/inc/XdmDocument.h Tue Aug 31 15:35:50 2010 +0300 @@ -40,9 +40,7 @@ EXdmIetfCommonPolicy, EXdmOmaCommonPolicy, EXdmIetfPresenceRules, - EXdmOmaPresenceRules, - EXdmPresContent, - EXdmPresContentNSN + EXdmOmaPresenceRules }; //Helper class for searching documents; 16-bit diff -r 2580314736af -r 2669f8761a99 pressrv_plat/xdm_api/inc/XdmProtocolUidList.h --- a/pressrv_plat/xdm_api/inc/XdmProtocolUidList.h Thu Aug 19 10:19:02 2010 +0300 +++ b/pressrv_plat/xdm_api/inc/XdmProtocolUidList.h Tue Aug 31 15:35:50 2010 +0300 @@ -43,8 +43,6 @@ const TInt KXdmOmaCommonPolicyUsageUid = 0x10275082; const TInt KXdmIetfPresRulesUsageUid = 0x10275083; const TInt KXdmOmaPresRulesUsageUid = 0x102750AB; -const TInt KXdmUsageUid = 0x20028701; -const TInt KXdmNSNUsageUid = 0x20028702; #endif //__XDMPROTOCOLUIDLIST__ diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/group/10275464.rss --- a/simpledatamodeladapter/group/10275464.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) 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: ECOM registery info for SIP/Presence Protocol Plugin -* -*/ - - -#include -#include - -#include "presenceplugin_resource.hrh" - - - -// --------------------------------------------------------------------------- -// ECOM registery info for Presence Framework ECOM hook -// --------------------------------------------------------------------------- -// -RESOURCE REGISTRY_INFO theInfo - { - resource_format_version = RESOURCE_FORMAT_VERSION_2; - dll_uid = PRESENCEPLUGIN_DLL_UID_PRESENCE_PROTOCOL; - - interfaces = - { - INTERFACE_INFO - { - // implemented interface - interface_uid = XIMP_ECOM_IF_UID_PROTOCOL_PLUGIN_BASE_INTERFACE; - - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = PRESENCEPLUGIN_1_IMPLEMENTATION_UID; - version_no = PRESENCEPLUGIN_1_VERSION_NO; - display_name = PRESENCEPLUGIN_1_DISPLAY_NAME; - default_data = PRESENCEPLUGIN_1_DEFAULT_DATA; - opaque_data = PRESENCEPLUGIN_1_OPAQUE_DATA; - } - }; - } - }; - } diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/group/bld.inf --- a/simpledatamodeladapter/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* -* Copyright (c) 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: Build information file for SIP/Simple Protocol Plugin -* -*/ - - -#include - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS -#ifdef GC_AREA_PARTIAL_INCLUDE_CHANGE_ON -#else -#endif - -../rom/simpledatamodeladapter.iby CORE_MW_LAYER_IBY_EXPORT_PATH(simpledatamodeladapter.iby) - -PRJ_MMPFILES -presenceplugin.mmp -#include "../simpleimplugin/group/bld.inf" - -PRJ_TESTMMPFILES -//../internal/tsrc/group/T_SIMPLEDataModelAdapter.mmp diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/group/presenceplugin.mmp --- a/simpledatamodeladapter/group/presenceplugin.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: Project definition file for SIP/Simple Protocol Plugin -* -*/ - - -// To get the APP_LAYER_SYSTEMINCLUDE-definition -#include -#include "presenceplugin_resource.hrh" - -TARGET presenceplugin.dll -TARGETTYPE plugin - -UID PRESENCEPLUGIN_DLL_UID_ECOM_PLUGIN PRESENCEPLUGIN_DLL_UID_PRESENCE_PROTOCOL -VENDORID VID_DEFAULT -CAPABILITY CAP_ECOM_PLUGIN - -// RESOURCE -START RESOURCE 10275464.rss -TARGET presenceplugin -TARGETPATH resource/plugins -END - -SOURCEPATH ../src -SOURCE presenceplugin.cpp -SOURCE presencepluginconnection.cpp -SOURCE presencepluginsession.cpp -SOURCE presencepluginwinfo.cpp -SOURCE presencepluginwatcher.cpp -SOURCE presencepluginauthorization.cpp -SOURCE presencepluginpublisher.cpp -SOURCE presencepluginentitywatcher.cpp -SOURCE presenceplugindata.cpp -SOURCE presencepluginxdmutils.cpp -SOURCE presencepluginxdmpresrules.cpp -SOURCE presenceplugingroup.cpp -SOURCE presencepluginwatcherinfo.cpp -SOURCE presencepluginvirtualgroup.cpp -SOURCE presenceconnectioninfo.cpp -SOURCE presencepluginutility.cpp -SOURCE presenceplugincontacts.cpp -SOURCE presenceplugincontactstatehandler.cpp -SOURCE presenceplugincontactstate.cpp -SOURCE presenceplugincontactstateopen.cpp -SOURCE presenceplugincontactstateresolve.cpp -SOURCE presenceplugincontactstatesearch.cpp -SOURCE presenceplugincontactstateend.cpp -SOURCE presensepluginlocalstore.cpp - -USERINCLUDE . -USERINCLUDE ../inc -USERINCLUDE ../simpleimplugin/inc - -// Default system include paths for middleware layer modules. -APP_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom - -LIBRARY euser.lib // Base -LIBRARY ecom.lib -LIBRARY simpleengine.lib -LIBRARY estor.lib -LIBRARY bafl.lib -LIBRARY charconv.lib - -LIBRARY xdmengine.lib -LIBRARY xdmsettingsapi.lib -LIBRARY presencesettingsapi.lib - -LIBRARY efsrv.lib -LIBRARY edbms.lib -LIBRARY avkon.lib - -//presence cache -LIBRARY presencecacheclient2.lib -LIBRARY presencecacheutils.lib - -// access to service table -LIBRARY serviceprovidersettings.lib - -// access to uiservicetabsettings -LIBRARY vimpstsettings.lib - -// access to Virtual Phonebook contact database -LIBRARY vpbkeng.lib -LIBRARY inetprotutil.lib - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/group/presenceplugin_resource.hrh --- a/simpledatamodeladapter/group/presenceplugin_resource.hrh Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* -* Copyright (c) 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: resource definitions -* -*/ - -#ifndef PRESENCEPLUGIN_RESOURCE_HRH -#define PRESENCEPLUGIN_RESOURCE_HRH - -/** - * System wide UID 2:s for ECom plugin dlls. - */ -#define PRESENCEPLUGIN_DLL_UID_ECOM_PLUGIN 0x10009D8D - -/** - * Officially reserved UID 3 for the Presence Framework - * PRESENCE protocol dll. - */ -#define PRESENCEPLUGIN_DLL_UID_PRESENCE_PROTOCOL 0x10275464 - - -/** - * Resource file compatible defintions for ximp test protocols. - * - * This must be kept in-sync with definitions in - * "ximptestprotocols.h" - */ - -#define PRESENCEPLUGIN_1_IMPLEMENTATION_UID 0x10282EF2 -#define PRESENCEPLUGIN_1_VERSION_NO 1 -#define PRESENCEPLUGIN_1_DISPLAY_NAME "IETF SIMPLE PRESENCE protocol" -#define PRESENCEPLUGIN_1_DEFAULT_DATA "PRESENCE" - -// Protocol capabilities: "valuevalue..." -// -//

Provider -// Feature id -// Supported schema -// -// Example: -// "

Nokiafeat/pres/foofeat/pres/barsip" -// -#define PRESENCEPLUGIN_1_OPAQUE_DATA "

Nokiafeat/pres/pubfeat/pres/fetchfeat/pres/subssip" - - -#endif // SIMPLEPLUGIN_RESOURCE_HRH - diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/mpresencepluginconnectionobs.h --- a/simpledatamodeladapter/inc/mpresencepluginconnectionobs.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,247 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef MPRESENCEPLUGINCONNECTIONOBS_H -#define MPRESENCEPLUGINCONNECTIONOBS_H - -#include -#include -#include - -class TXIMPRequestId; -class MXIMPObjectFactory; -class CPresencePluginWinfo; -class MSimpleWinfo; -class MXIMPProtocolConnectionHost; -class CPresencePluginXdmUtils; -class CPresencePluginWatcher; -class MPresenceObjectFactory; -class MProtocolPresenceDataHost; -class MProtocolPresenceAuthorization; -class CPresencePluginVirtualGroup; -class CPresencePluginAuthorization; -class CPresencePluginGroups; - -/** - * MPresencePluginConnectionObs - * - * presence engine connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( MPresencePluginConnectionObs ) - { - -public: - - enum TReqType - { - /** undefined */ - ENoReq = 0, - /** Connection initializing */ - EOpenSess, - /** Connection close */ - ECloseSess, - /** Publish own data */ - EPublish, - /** Subscribe Own data */ - ESubscribeOwn, - /** Subscribe other user */ - ESubscribeOther - }; - - /** - * CPresencePluginWatcher accessor - * @return CPresencePluginWatcher - */ - virtual CPresencePluginWatcher* WatcherHandlerL() = 0; - - /** - * Complete the request - * - * @param aType request type - * @param aStatus status - */ - virtual void CompleteReq(TReqType aType, TInt aStatus ) = 0; - - /** - * Complete the request - * - * @param aReqId ximp request id - * @param aStatus status - */ - virtual void CompleteReq(TXIMPRequestId aReqId, TInt aStatus ) = 0; - - /** - * XIMP Object Factory accessor - * @return ximp Object Factory - */ - virtual MXIMPObjectFactory& ObjectFactory()=0; - - /** - * XIMP Object Factory accessor - * @return PrFw Object Factory - */ - virtual MPresenceObjectFactory& PresenceObjectFactoryOwn()=0; - - /** - * XIMP presence authorization accessor - * @return PrFw Protocol Presence Authorization - */ - virtual MProtocolPresenceAuthorization& PresenceAuthorization() = 0; - - /** - * XIMP presence authorization accessor as own internal type - * @return Presence Authorization - */ - virtual CPresencePluginAuthorization& InternalPresenceAuthorization() = 0; - - /** - * Gets reference to - * MProtocolPresenceDataHost interface. - * - * Presence protocol connection implementation uses returned - * data host interface to manage the Presence connection's - * presence auhtorization data. - * - * @return MProtocolPresenceAuthorizationDataHost interface. - * Interface ownership is not returned caller. - * Returned interface is guaranteed to remain valid (usable) - * as long as this source interface. - */ - virtual MProtocolPresenceDataHost& ProtocolPresenceHost() = 0; - - /** - * CPresencePluginWinfo accessor - * @return CPresencePluginWinfo, ownership is not transferred. - */ - virtual CPresencePluginWinfo* WinfoHandlerL()=0; - - /** - * CPresencePluginWinfoObserver is terminated - * @param aReason reason code - */ - virtual void WinfoTerminatedL( TInt aReason )=0; - - /** - * Watcher info subscription notification is received - * @aWinfo notification content - */ - virtual void WinfoNotification( MSimpleWinfo& aWinfo ) = 0; - - /** - * Current registered SIP entity - */ - virtual TPtrC8 CurrentSipPresentity8() = 0; - - /** - * Access connection host - * @return MximpProtocolConnectionHost - */ - virtual MXIMPProtocolConnectionHost* Host() = 0; - - /** - * Current domain syntax accessor - */ - virtual TPtrC16 CurrentDomain() = 0; - - /** - * Access CPresencePluginXdmUtils - * @return CPresencePluginXdmUtils entity - */ - virtual CPresencePluginXdmUtils* XdmUtilsL() = 0; - - /** - * Get ETag - * @return TDesC8, etag value - */ - virtual const TDesC8& GetETag() const = 0; - - /** - * Set ETag - * @return none - */ - virtual void SetETag( const TDesC8& aETag ) = 0; - - /** - * Get client session time tupleId - * @return TInt, tuple value - */ - virtual TInt GetTupleId() const = 0; - - /** - * Set session time tupleId - * @return none - */ - virtual void SetTupleId( const TInt aTupleId ) =0; - - /** - * Get Stop publish state - * @return TBool, stop publish state - */ - virtual TBool GetStopPublishState() = 0; - - /** - * Is Stop publish called - * @return TBool, stop publish called state - */ - virtual TBool IsStopPublishCalled() = 0; - - /** - * Get Stop publish state - * @return TBool, stop publish state - */ - virtual void SetStopPublishState( TBool aState ) = 0; - - /** - * Get Stop publish state - * @return TBool, session status - */ - virtual TBool GetSessionStatus( ) = 0; - - /** - * Return instace of subcribed contact - * @return TBool, session status - */ - virtual CPresencePluginVirtualGroup* SubscribedContacts( ) = 0; - - /** - * Get grand request list subscribe state - */ - virtual TBool GrandListState() = 0; - - /** - * Terminate connection - */ - virtual void TerminateConnectionL( ) = 0; - - /** - * Return Groups API implemention - */ - virtual CPresencePluginGroups& GroupsL( ) = 0; - - /** - * Return service id - */ - virtual TInt& ServiceId( ) = 0; - }; - -#endif - -// End of File \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/mpresrulesasynchandler.h --- a/simpledatamodeladapter/inc/mpresrulesasynchandler.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef __MPRESRULESASYNCHANDLER_H__ -#define __MPRESRULESASYNCHANDLER_H__ - -class CXdmDocument; -// Class declaration - -NONSHARABLE_CLASS( MPresRulesAsyncHandler ) - { - public: - - /** - * This method handles the async. - * call to function CPresenceXDM::UpdateToServerL - * and CPresenceXDM::UpdateAllFromServerL. - * Clients should implement this method to get a callback. - * - * @param aErrorCode, XDMengine error codes - */ - virtual void HandlePresUpdateDocumentL( - TInt aErrorCode ) = 0; - - }; - -#endif //__MPRESRULESASYNCHANDLER_H__ \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceconnectioninfo.h --- a/simpledatamodeladapter/inc/presenceconnectioninfo.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,190 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCECONNECTIONARRAY_H -#define CPRESENCECONNECTIONARRAY_H - -#include -#include "presencelogger.h" -#include "presenceplugincommon.h" -#include "presencepluginconnection.h" - -class MXIMPProtocolConnection; - -/** - * CPresencePlugin - * - * Implementation of CXIMPProtocolPluginBase - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ - - -NONSHARABLE_CLASS( CPresenceConnectionInfo ) : public CBase - { - public: - - /** - * Two-phased constructor. - * - * @param none - */ - static CPresenceConnectionInfo* NewL( - MXIMPProtocolConnection* aConnection ); - - /** - * SetConnectionStatus() - * - * @since S60 3.2 - * @param TConnectionStatus - * @return none - */ - void SetConnectionStatus( - CPresencePluginConnection::TConnectionStatus aStatus ); - - /** - * SetConnectionETag() - * - * @since S60 3.2 - * @param TDesC8 aETag - * @return none - */ - void SetConnectionETag( const TDesC8& aETag ); - - /** - * GetConnectionStatus() - * - * @since S60 3.2 - * @param none - * @return TConnectionStatus connection status - */ - CPresencePluginConnection::TConnectionStatus GetConnectionStatus(); - - /** - * GetConnectionEtag() - * - * @since S60 3.2 - * @param none - * @return TDesC8 ETag - */ - TDesC8* GetConnectionEtag(); - - /** - * GetConnection() - * - * @since S60 3.2 - * @param none - * @return MXIMPProtocolConnection connection instance - */ - MXIMPProtocolConnection* GetConnection(); - - /** - * IncreaseClientCount() - * - * @since S60 3.2 - * @param none - * @return none - */ - void IncreaseClientCount(); - - /** - * DecreaseClientCount() - * - * @since S60 3.2 - * @param none - * @return none - */ - void DecreaseClientCount(); - - /** - * GenerateClientId() - * - * @since S60 3.2 - * @param none - * @return TInt uniqueclient id - */ - TInt GenerateClientId(); - - /** - * GenerateClientId() - * - * @since S60 3.2 - * @param none - * @return TInt uniqueclient id - */ - TInt GetClientId(); - - /** - * GenerateClientId() - * - * @since S60 3.2 - * @param none - * @return TInt client count - */ - TInt ClientCount(); - - /** - * Standard C++ destructor - */ - ~CPresenceConnectionInfo(); - - private: - - /** - * Standard C++ constructor - */ - CPresenceConnectionInfo( MXIMPProtocolConnection* aConnection ); - - public: // data - - /** - * Connection ETag - * Own. - */ - HBufC8* iETag; - - /** - * Connection - * Own. - */ - MXIMPProtocolConnection* iConnection; - - /** - * Connection status - * Own. - */ - CPresencePluginConnection::TConnectionStatus iConnectStatus; - - /** - * Connection status - * Own. - */ - TInt iClientCount; - - /** - * Client id - * Own. - */ - TUint iClientId; - - SIMPLE_UNIT_TEST( T_CPresenceConnectionInfo ) - - }; - -#endif // CPRESENCEPLUGIN_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencecontactscontextbase.h --- a/simpledatamodeladapter/inc/presencecontactscontextbase.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* -* Copyright (c) 20010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef M_MPRESENCECONTACTSCONTEXTBASE_H -#define M_MPRESENCECONTACTSCONTEXTBASE_H - - -class MVPbkContactLinkArray; -class MVPbkContactLink; - - -/** - * Base class to state context - * - * @lib presenceplugin.dll - * @since S60 v5.0 - */ -class MPresenceContactsContextBase - { - -public: - - /** - * Open virtual phonebook contact stores - * - * @since S60 v5.0 - */ - virtual void OpenL() = 0; - - /** - * Start virtual phonebook contacts search - * - * @since S60 v5.0 - */ - virtual void SearchL() = 0; - - /** - * Return virtual phonebook contact links - * - * @since S60 v5.0 - * @return virtual phonebook contact links - */ - virtual const MVPbkContactLinkArray& ContactLinkArrayL() = 0; - - /** - * Resolve virtual phonebook contact from contact link - * - * @since S60 v5.0 - * @param aContactLink contact link to resolve - */ - virtual void RetrieveContactL( - const MVPbkContactLink& aContactLink ) = 0; - - }; - - -#endif // M_MPRESENCECONTACTSCONTEXTBASE_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencelogger.h --- a/simpledatamodeladapter/inc/presencelogger.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef DATAMODELADAPTERLOGGER_H -#define DATAMODELADAPTERLOGGER_H - -#define DP_TP_PRINT(s) L##s -#define DP_STRA_PRINT(s) DP_TP_PRINT(s) -#define DP_STR_PRINT(t) DP_STRA_PRINT("[PrwAdapter]") L##t -#define DP_LIT_PRINT(s) TPtrC((const TText *) DP_STR_PRINT(s)) -#ifdef _DEBUG - #include - #define _DEBUG_SIMPLE_DATAMODEL_ADAPTER -#endif - -#ifdef _DEBUG_SIMPLE_DATAMODEL_ADAPTER - #define DP_SDA(a) {RDebug::Print(DP_LIT_PRINT(a));} - #define DP_SDA2(a, b) {RDebug::Print(DP_LIT_PRINT(a),b);} - #define DP_SDA3(a, b, c) RDebug::Print(DP_LIT_PRINT(a), b, c); -#else - #define DP_SDA(a); - #define DP_SDA2(a, b); - #define DP_SDA3(a, b, c); -#endif - -#ifdef SIMPLE_EUNIT -#define SIMPLE_UNIT_TEST(ClassName) friend class ClassName; -#else -#define SIMPLE_UNIT_TEST(ClassName) -#endif // SIMPLE_EUNIT - -#endif //DATAMODELADAPTERLOGGER_H - diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugin.h --- a/simpledatamodeladapter/inc/presenceplugin.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGIN_H -#define CPRESENCEPLUGIN_H - -#include -#include - -#include "presencelogger.h" - -class CPresencePluginConnection; -class MXIMPProtocolConnection; -class MXIMPServiceInfo; -class CPresenceConnectionInfo; - -/** - * CPresencePlugin - * - * Implementation of CXIMPProtocolPluginBase - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePlugin ) : public CXIMPProtocolPluginBase - { - public: - - /** - * Two-phased constructor. - * - * @param none - */ - static CPresencePlugin* NewL(); - - /** - * Two-phased constructor. - * - * @param none - */ - static CPresencePlugin* NewLC(); - - /** - * Standard C++ destructor - */ - ~CPresencePlugin(); - - private: - - /** - * Standard C++ constructor - */ - CPresencePlugin(); - - /** - * Delete connection from arrays - * @param TInt aIndex, array index - * @return none - */ - void DeleteConnection( TInt aIndex ); - - public: // from base class MXIMPProtocolPlugin - - /** - * Defined in a base class - */ - void PrimeHost( MXIMPProtocolPluginHost& aHost ); - - /** - * Defined in a base class - */ - MXIMPProtocolConnection& AcquireConnectionL( - const MXIMPServiceInfo& aService, - const MXIMPContextClientInfo& aContextClient ); - - /** - * Defined in a base class - */ - void ReleaseConnection( MXIMPProtocolConnection& aConnection ); - - public: // from base class MXIMPBase - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - private: // Data - - /** - * Prime host - * Own. - */ - MXIMPProtocolPluginHost* iHost; - - /** - * connection array - * Own. - */ - RPointerArray< CPresencePluginConnection > iConnections; - - /** - * connection data array - * Own. - */ - RPointerArray< CPresenceConnectionInfo > iConnectionArray; - - SIMPLE_UNIT_TEST( T_CPresencePlugin ) - - }; -#endif // CPRESENCEPLUGIN_H \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginauthorization.h --- a/simpledatamodeladapter/inc/presencepluginauthorization.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,660 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINAUTHORIZATION_H -#define CPRESENCEPLUGINAUTHORIZATION_H - -#include -#include -#include -#include "mpresencepluginconnectionobs.h" -#include "presenceplugincontactsobs.h" -#include "presencelogger.h" - -class TXIMPRequestId; -class MXIMPIdentity; -class MPresenceInfoFilter; -class MProtocolPresenceAuthorizationDataHost; -class MSimpleWinfo; -class CPresencePluginData; -class CPresencePluginContacts; - -/** - * CPresencePluginAuthorization - * - * Simple Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginAuthorization ) : - public CActive, - public MProtocolPresenceAuthorization, - public MPresencePluginContactsObs - { - public: // Constructor and destructor - - /** - * Current operation - */ - enum TPluginAuthOperation - { - ENoOperation, - EGrantPresenceForPresentity, - EGrantPresenceForPresentityGroupMembers, - EWithdrawFromPresentity, - EWithdrawFromGroupMembers, - EGrantForEveryone, - EWithdrawFromEveryone, - ESubscribeBlockList, - EUnsubscribeBlockList, - EBlockPresentity, - EUnblockPresentity - }; - - /** - * Block state - */ - enum TPluginAuthState - { - EStateIdle, - EStateBlocked, - EStateDoBlock, - EStateIsContactBlockedBuddyRequest, - EStateDoUnBlock, - EStatePresenceGranted, - EStateRemovePresentityFromGranted, - EStateAcceptBuddyRequest, - EStateSubscribe - }; - - /** - * Constructor. - * @param aObs callback for complete requests - */ - static CPresencePluginAuthorization* NewL( - MPresencePluginConnectionObs& aObs, - CPresencePluginData* aPresenceData ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginAuthorization(); - - /** - * SetDataHost - * - * @since S60 3.2 - * @param aDataHost, XIMP Plugin Authorization Data Host - */ - void SetDataHost( MProtocolPresenceAuthorizationDataHost& aDataHost ); - - /** - * WinfoTerminatedL - * - * @since S60 3.2 - * SIMPLE Winfo watcher sunscription is terminated - * @param aReason reason code - */ - void WinfoTerminatedL( TInt aReason ); - - /** - * WINFO received from SIMPLE - * @since S60 3.2 - * @param aWinfo WINFO - */ - void WinfoNotificationL( MSimpleWinfo& aWinfo ); - - /** - * Return List subscribe state - * - * @since S60 3.2 - * @param none - * @return TBool subscribe state - */ - TBool ReturnListSubsState(); - - /** - * Returns plugin data handler. - * - * @since S60 5.0 - * @param none - * @return CPresencePluginData data handler reference - */ - CPresencePluginData& PluginData(); - - /** - * Internal grant operation for group operation. - * - * @since S60 5.0 - * @param aPresentityId, identity to be subscribed - * @param aClientStatus, client status to be completed - * @return none - */ - void DoPerformGrantPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aClientStatus ); - - /** - * Internal withdraw grant operation for group operation. - * - * @since S60 5.0 - * @param aPresentityId, identity to be ungranted - * @param aClientStatus, client status to be completed - * @return none - */ - void DoPerformWithdrawPresGrantFromPresentityL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aClientStatus ); - - /** - * Internal block operation for group operation. - * - * @since S60 5.0 - * @param aPresentityId, identity to be blocked - * @param aClientStatus, client status to be completed - * @return none - */ - void DoPerformBlockPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aClientStatus ); - - /** - * Internal unblock operation for group operation. - * - * @since S60 5.0 - * @param aPresentityId, identity to be unblocked - * @param aClientStatus, client status to be completed - * @return none - */ - void DoPerformCancelPresenceBlockFromPresentityL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aClientStatus ); - - /** - * Resolve is blocked contact a blocked friend request - * - * @since S60 5.0 - * @param aPresenceId, identity to be resolved - * @param aObserver, Returns results - * @param aStatus, client status - */ - void IsBlockedContactFriendRequestL( - const TDesC& aPresenceId, - MPresencePluginContactsObs& aObserver, - TRequestStatus& aStatus ); - - private: - - /** - * Standard C++ constructor - * @param aObs callback for complete requests - */ - CPresencePluginAuthorization( - MPresencePluginConnectionObs& aObs, - CPresencePluginData* aPresenceData ); - - void ConstructL(); - - public: // from base class MXIMPBase - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - - public: // from base class MXIMPProtocolPresenceAuthorization - - /** - * Defined in a base class - */ - void DoSubscribePresenceGrantRequestListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresenceGrantRequestListL( - TXIMPRequestId aReqId ); - - // Granting presence information access to single presentities - - /** - * Defined in a base class - */ - void DoGrantPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresenceGrantPifForPresentityL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoWithdrawPresenceGrantFromPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - - // Granting presence information access to presentity group members - - /** - * Defined in a base class - */ - void DoGrantPresenceForPresentityGroupMembersL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresenceGrantPifForPresentityGroupMembersL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoWithdrawPresenceGrantFromPresentityGroupMembersL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - - // Granting presence information access to everyone - - /** - * Defined in a base class - */ - void DoGrantPresenceForEveryoneL( - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresenceGrantPifForEveryoneL( - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoWithdrawPresenceGrantFromEveryoneL( - TXIMPRequestId aReqId ); - - // Subscribe presence block list - - /** - * Defined in a base class - */ - void DoSubscribePresenceBlockListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresenceBlockListL( - TXIMPRequestId aReqId ); - - // Blocking presence information access from single presentities - - /** - * Defined in a base class - */ - void DoBlockPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoCancelPresenceBlockFromPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - - public: // MPresencePluginContactsObs - - /** - * Request Complete - * - * @param aResult Result data returned, ownership changed to client. - * In operation EOperationIsPresenceStoredToContacts - * return type is TBool*. - * @param aOperation Operation type - * @param aError Completion error code - */ - void RequestComplete( TAny* aResult, - TPresenceContactsOperation aOperation, TInt aError ); - - protected: // from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - - private: - - /** - * Save presentity id - * - * @since S60 3.2 - * @param aPresentityId presentity id - * @param aFormatUri, attempt to format URI (set - * ETrue is aPresentityId is uri identity) - * @return none - */ - void SetPresIdentityL( - const MXIMPIdentity& aPresentityId, - TBool aFormatUri ); - - /** - * Complete client request - * - * @since S60 3.2 - * @param aStatus - * @return none - */ - void CompleteXIMPReq( TInt aStatus ); - - /** - * Start XDM operation - * - * @since S60 3.2 - * @param aId, XIMP identity - * @param aReqId, request id - * @param aOperation, plugin operation - * @return none - */ - void StartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginAuthOperation aOperation ); - - /** - * Start XDM operation - * - * @since S60 5.0 - * @param aId, XIMP identity - * @param aOperation, plugin operation - * @param aClientStatus, client status to complete - * @return none - */ - void StartXdmOperationL( - const MXIMPIdentity& aId, - TPluginAuthOperation aOperation, - TRequestStatus& aClientStatus ); - - /** - * Call actual xdm operation from xdm utils - * - * @since S60 3.2 - * @param none - * @return none - */ - void CallActualXdmOperationL(); - - /** - * Subscribe block list - * - * @since S60 3.2 - * @param none - * @return none - */ - void SubscribeBlockListL( ); - - /** - * Unsubscribe block list - * - * @since S60 3.2 - * @param none - * @return none - */ - void UnSubscribeBlockListL(); - - /** - * Handle full winfo notification - * - * @since S60 3.2 - * @param MSimpleWinfo winfo notification - * @return none - */ - void HandleFullWinfoNotificationL( MSimpleWinfo& aWinfo ); - - /** - * Handle partial winfo notification - * - * @since S60 3.2 - * @param MSimpleWinfo winfo notification - * @return none - */ - void HandlePartialWinfoNotificationL( MSimpleWinfo& aWinfo ); - - /** - * Handle received grant request - * - * @since S60 3.2 - * @param TDesC userid - * @return none - */ - void CallHandlePresenceGrantRequestReceivedL( const TDesC& aUserId ); - - /** - * Handle obsolated grantrequest - * - * @since S60 3.2 - * @param TDesC userid - * @return none - */ - void CallHandlePresenceGrantRequestObsoletedL( const TDesC& aUserId ); - - /** - * Grant presence for presentity - * - * @since S60 3.2 - * @param none - * @return none - */ - void GrantPresenceForPresentityL(); - - /** - * Withdraw from presentity - * - * @since S60 3.2 - * @param none - * @return none - */ - void WithdrawFromPresentityL(); - - /** - * Set presentity blocked to XIMP - * - * @since S60 5.1 - * @param none - * @return none - */ - void SetPresentityBlockedToXIMPL(); - - /** - * Block presentity - * - * @since S60 3.2 - * @param none - * @return none - */ - void BlockPresentityL(); - - /** - * Unblock presentity - * - * @since S60 3.2 - * @param none - * @return none - */ - void UnblockPresentityL(); - - /** - * Unsubscribe presentity presence - * - * @since S60 3.2 - * @param none - * @return none - */ - void UnsubscribePresentityPresenceL(); - - private: // Data - - /** - * XIMP Plugin connection observer - * Own. - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * XIMP Plugin Authorization Data Host - * Not own. - */ - MProtocolPresenceAuthorizationDataHost* iDataHost; - - /** - * XDM Settings id - * Own. - */ - TInt iSettingsId; - - /** - * PrFW request id - * Own. - */ - TXIMPRequestId iXIMPId; - - /** - * PrFW request id for own requests - * Own. - */ - TXIMPRequestId iXIMPIdOwn; - - /** - * Simple Engine request id - * Own. - */ - TInt iSimpleId; - - /** - * Subscribed items. - * Own. - */ - TBool iSubscribed; - - /** - * Current operation - * Own. - */ - TPluginAuthOperation iOperation; - - /** - * Current presentity in progress - * Own. - */ - HBufC16* iPresIdentity; - - /** - * Whether Presence XDM is up-to-date - * Own. - */ - TBool iXdmOk; - - /** - * XDM Utils - * Not own. - */ - CPresencePluginXdmUtils* iXdmUtils; - - /** - * Authorization complete - * Own. - */ - TBool iComplete; - - /** - * Presence Data - * Not Own - */ - CPresencePluginData* iPresenceData; - - /** - * client statutus. - * Not own. - */ - TRequestStatus* iClientStatus; - - /** - * Block state. - * Own. - */ - TPluginAuthState iAuthState; - - /* - * Virtual phone book contact database operations - * Own. - */ - CPresencePluginContacts* iContacts; - - /* - * Data Returned by CPresencePluginContacts - */ - TBool iContactIsStored; - - SIMPLE_UNIT_TEST( T_CPresencePluginAuthorization ) - SIMPLE_UNIT_TEST( T_CPresencePluginXdmUtils ) - - }; - -#endif // CPresencePluginAuthorization_H \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugincommon.h --- a/simpledatamodeladapter/inc/presenceplugincommon.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - -#ifndef PRESENCEPLUGINCOMMON_H -#define PRESENCEPLUGINCOMMON_H - -#include - -/** - * common definitions for Presence Plugin - */ - -//Define max tuple and person id integer -const TInt KMaxNumber = 99999999; - -//Buf size defines - -const TInt KBufSize100 = 100; -const TInt KBufSize200 = 200; -const TInt KBufSize255 = 255; -const TInt KBufSize20 = 20; -const TInt KBufSize10 = 10; - -// Presence Plugin specifications - -_LIT( KPluginName, "CPresencePlugin"); - -/** Nothing subscribed */ -const TUint KPresencePluginSubsNone = 0x00000000; -/** Grant list subscribed */ -const TUint KPresencePluginSubsGrant = 0x00000001; -/** Block list subscribed */ -const TUint KPresencePluginSubsBlock = 0x00000002; -/** Winfo list subscribed */ -const TUint KPresencePluginSubsWinfo = 0x00000004; - -//XDM Resourcelist -/** buddy list id */ -_LIT( KPresenceBuddyList, "buddylist"); -/** blocked list id */ -_LIT( KPresenceBlockedList, "blockedcontacts"); -/** for virtual online buddy group */ -_LIT( KPresenceOnlineBuddy ,"online_buddies"); -/** Subscribed buddys */ -_LIT( KPresenceSubcribedBuddys, "subs_buddys"); - -//XDM Presencerules list -/** Presence XDM block rule id */ -_LIT( KPresenceXdmBlockRule, "pres_blacklist"); -/** Presence XDM whitelist*/ -_LIT( KPresenceXdmWhiteList, "pres_whitelist"); -/** Presence XDM grant rule id */ -_LIT( KPresenceXdmGrantRule, "pres_whitelist"); -/** S60 Shared XDM list for granted entities */ -_LIT( KPresenceS60GrantedList, "s60_granted_list"); - -//For localmode check -_LIT(KLocalhost, "http://localhost"); - -// when contact goes offline this is content of aBasicElement->ContentUnicodeL() -_LIT( KClose ,"close"); - -//For own presence status NOTIFY -_LIT(KIndent, "t"); // for tupleId -_LIT(KPersonId, "p"); // for person - -// Temporary hard coded values for presence cache 2 support. Common definitions needed! -_LIT( KDefaultAvailableStatus, "available" ); - - -namespace NPresencePlugin - { - namespace NPresence - { - _LIT( KPresenceDisplayName, "display-name"); - _LIT( KPresenceIndex, "index"); - _LIT( KPresenceResourceLists, "resource-lists"); - _LIT( KPresenceResourceList, "resource-list.xml"); - _LIT( KPresenceConditions, "conditions"); - _LIT( KPresenceIdentity, "identity"); - _LIT( KPresenceRuleset, "ruleset" ); - _LIT( KPresenceRule, "rule"); - _LIT( KPresenceAction, "actions"); - _LIT( KPresenceAllow, "allow"); - _LIT8( KPresenceAllow8, "allow"); - _LIT( KPresenceBlock, "block"); - _LIT8( KPresenceBlock8, "block"); - _LIT( KPresenceSub, "sub-handling"); - _LIT( KPresencePresRules, "presrules"); - _LIT( KPresenceList, "list"); - _LIT( KPresenceName, "name"); - _LIT( KPresenceEntry, "entry"); - _LIT( KPresenceOne , "one"); - _LIT( KPresencePerson, "person"); - _LIT8( KPresencePerson8, "person"); - _LIT8( KPresenceWatcher8, "watcher"); - _LIT8( KPresenceWatherInfo8, "watcherinfo"); - _LIT8( KPresenceWatcherList8, "watcher-list"); - _LIT8( KPresenceStatus8, "status"); - _LIT8( KPresenceActive8, "active"); - _LIT8( KPresenceEvent8, "event"); - _LIT8( KPresencePending8, "pending"); - _LIT8( KPresenceBasic8, "basic"); - _LIT( KPresenceBasic, "basic"); - _LIT8( KPresenceStatusicon8, "status-icon"); - _LIT8( KPresenceNote8, "note"); - _LIT8( KPresenceSubscribe8, "subscribe"); - _LIT( KPresenceUri, "uri"); - _LIT8( KPresenceUri8, "uri"); - _LIT8( KPresenceState8, "state"); - _LIT8( KPresenceInstance8, "instance"); - _LIT8( KPresenceTerminated8, "terminated"); - _LIT8( KPresenceResource8, "resource"); - _LIT8( KPresenceList8, "list"); - _LIT8( KPresenceTuple8, "tuple"); - _LIT( KPresenceTuple, "tuple"); - _LIT( KPresenceId, "id"); - _LIT8( KPresenceId8, "id"); - _LIT( KPresenceActivities, "activities"); - _LIT8( KPresenceActivities8, "activities"); - _LIT8( KPresenceFull8, "full"); - _LIT( KPresencePartial, "partial"); - _LIT8( KPresencePartial8, "partial"); - } - namespace NPresenceStates - { - _LIT( KPresenceOpen, "open"); - _LIT( KPresenceClosed, "closed"); - _LIT( KPresenceClose, "close"); - _LIT( KPresenceOffline, "offline"); - _LIT8( KPresenceOffline8, "offline"); - _LIT( KPresenceAvailable, "available"); - _LIT8( KPresenceAvailable8, "available"); - _LIT( KPresenceUnknow, "unknown"); - _LIT8( KPresenceUnknow8, "unknown"); - _LIT( KPresenceBusy, "busy"); - _LIT8( KPresenceBusy8, "busy"); - _LIT( KPresenceOnThePhone, "on-the-phone"); - _LIT8( KPresenceOnThePhone8, "on-the-phone"); - _LIT( KPresenceAway, "away"); - _LIT8( KPresenceAway8, "away"); - _LIT( KPresenceDoNotDisturb, "do-not-disturb"); - _LIT8( KPresenceDoNotDisturb8, "do-not-disturb"); - _LIT( KPresencePending, "pending" ); - } - namespace NPresenceTransformations - { - _LIT( KPresenceTRUE, "TRUE"); - _LIT( KPresenceFALSE, "FALSE"); - _LIT( KPresenceTrasformations, "transformations"); - _LIT( KPresenceProvideServices, "provide-services"); - _LIT( KPresenceAllServices, "all-services"); - _LIT( KPresenceProvidePersons, "provide-persons"); - _LIT( KPresenceAllPersons, "all-persons"); - _LIT( KPresenceProvidedevices, "provide-devices"); - _LIT( KPresenceAlldevices, "all-devices"); - _LIT( KPresenceProvideAllAttributes, "provide-all-attributes"); - _LIT( KPresenceProvideActivities, "provide-activities"); - _LIT( KPresenceProvideNote, "provide-note"); - } - } - -#endif // PRESENCEPLUGINCOMMON_H \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginconnection.h --- a/simpledatamodeladapter/inc/presencepluginconnection.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,642 +0,0 @@ -/* -* Copyright (c) 2006-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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef PRESENCEPLUGINCONNECTION_H -#define PRESENCEPLUGINCONNECTION_H - -#include -#include -#include -//Connection obs -#include "mpresencepluginconnectionobs.h" -#include "simpleimfeatures.h" -#include "presencelogger.h" - -//FORWARD -class MXIMPServiceInfo; -class MXIMPObjectFactory; -class MXIMPProtocolConnectionHost; -class MProtocolPresenceWatching; -class MProtocolPresencePublishing; -class MProtocolPresentityGroups; -class MProtocolPresenceAuthorization; -class MProtocolPresenceFeatures; -class MProtocolPresenceDataHost; -class CPresencePluginSession; -class CPresencePluginWinfo; -class CPresencePluginWatcher; -class CPresencePluginAuthorization; -class CPresencePluginPublisher; -class CPresencePluginXdmUtils; -class CPresencePluginGroups; -class CPresencePluginVirtualGroup; -class CPresencePluginData; -class CPresenceConnectionInfo; -class MProtocolImFeatures; - - -/** - * CPrecensePluginSession - * - * presence Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CPresencePluginConnection) : public CActive, - public MXIMPProtocolConnection, - public MProtocolPresenceFeatures, - public MPresencePluginConnectionObs - { - public: - - enum TConnectionStatus - { - /** undefined */ - ENotActive = 0, - /** Connection initializing */ - EActive, - /** Connection close */ - ETerminated - }; - - /** - * Two-phased constructor. - * - * @param aServiceInfo, XIMP service info - * @param aClientCtxInfo, XIMP contex client info - */ - static CPresencePluginConnection* NewL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aClientCtxInfo ); - - /** - * Two-phased constructor loaded. - * - * @param aServiceInfo, XIMP service info - * @param aClientCtxInfo, XIMP contex client info - */ - static CPresencePluginConnection* NewL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aClientCtxInfo, - const TDesC8& aETag ); - - /** - * Standard C++ destructor - */ - ~CPresencePluginConnection(); - - /** - * Grand list subscribe state - * - * @since S60 3.2 - * @param none - * @return TBool grand list subscribe state - */ - TBool GrandListState( ); - - /** - * Set connection info array - * - * @since S60 3.2 - * @param connection info - * @return none - */ - void SetConnectionArray( CPresenceConnectionInfo* aArray ); - - /** - * Get connection info array - * - * @since S60 3.2 - * @param none - * @return return info - */ - CPresenceConnectionInfo* GetConnectionArray( ); - - - /** - * Gets protocol interface. In error cases returns NULL - * - * @since S60 5.0 - * @param none - * @return protocol interface - */ - TAny* GetProtocolInterface( TInt aInterfaceId ); - - private: - - /** - * Standard C++ constructor - */ - CPresencePluginConnection( ); - - /** - * Performs the 2nd phase of construction. - * - * @param aService, XIMP service info - * @param aClientCtxInfo, XIMP contex client info - */ - void ConstructL( - const MXIMPServiceInfo& aService, - const MXIMPContextClientInfo& aClientCtxInfo ); - - /** - * Performs the 2nd phase of construction. Overload - * - * @param aService, XIMP service info - * @param aClientCtxInfo, XIMP contex client info - */ - void ConstructL( - const MXIMPServiceInfo& aService, - const MXIMPContextClientInfo& aClientCtxInfo, - const TDesC8& aETag ); - - private: //Own private functions - - /** - * DeRegister - * - * @since S60 3.2 - * @param none - * @return none - */ - void DeRegister( ); - - /** - * CreateImFeaturesPlugin - * - * @since S60 5.0 - * @param none - * @return none - */ - void CreateImFeaturesPluginL(); - - /** - * DeleteImFeaturesPlugin - * - * @since S60 5.0 - * @param none - * @return none - */ - void DeleteImFeaturesPlugin(); - - protected: // from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - - public: // from base class MPrFwBase - - TInt32 GetPresenceSetId() const; - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - public:// from base class MPresencePluginConnectionObs - - /** - * Return subscribed buddy virtual group - * - * @since S60 3.2 - * @param none - * @return CPresencePluginVirtualGroup, virtual group - */ - CPresencePluginVirtualGroup* SubscribedContacts(); - - /** - * Get Stop Publish state - * - * @since S60 3.2 - * @param none - * @return TBOOL, Stop Publish state - */ - TBool GetStopPublishState(); - - /** - * Is stop publish called - * - * @since S60 3.2 - * @param none - * @return TBOOL, Stop Publish - */ - TBool IsStopPublishCalled(); - - /** - * Set Stop Publish state - * - * @since S60 3.2 - * @param aState, stop publish state TRUE/FALSE - * @return none - */ - void SetStopPublishState( TBool aState ); - - /** - * Get Tuple id - * - * @since S60 3.2 - * @param none - * @return TInt, tupleid - */ - TInt GetTupleId() const; - - /** - * Set Tuple id - * - * @since S60 3.2 - * @param aTupleId, generated tupleid - * @return none - */ - void SetTupleId( const TInt aTupleId ); - - /** - * Get ETag - * - * @since S60 3.2 - * @param none - * @return TDesC8, Etag value - */ - const TDesC8& GetETag() const; - - /** - * Set ETag - * - * @since S60 3.2 - * @param aEtag, Etag value - * @return none - */ - void SetETag( const TDesC8& aETag ); - - /** - * Defined in a base class - */ - void CompleteReq( TReqType aType, TInt aStatus ); - - /** - * Defined in a base class - */ - void CompleteReq( TXIMPRequestId aReqId, TInt aStatus ); - - /** - * Defined in a base class - */ - MXIMPObjectFactory& ObjectFactory(); - - /** - * Defined in a base class - */ - MPresenceObjectFactory& PresenceObjectFactoryOwn(); - - /** - * Defined in a base class - */ - CPresencePluginWinfo* WinfoHandlerL(); - - /** - * Defined in a base class - */ - CPresencePluginWatcher* WatcherHandlerL(); - - /** - * Defined in a base class - */ - void WinfoTerminatedL( TInt aReason ); - - /** - * Defined in a base class - */ - void WinfoNotification( MSimpleWinfo& aWinfo ); - - /** - * Defined in a base class - */ - TPtrC8 CurrentSipPresentity8(); - - /** - * Defined in a base class - */ - CPresencePluginXdmUtils* XdmUtilsL(); - - /** - * Defined in a base class - */ - TBool GetSessionStatus( ); - - /** - * Termiante connection - */ - void TerminateConnectionL( ); - - /** - * Returns groups api implementation. Leaves if - * pointer not available. - */ - CPresencePluginGroups& GroupsL(); - - /** - * Returns service id - */ - TInt& ServiceId(); - - public: // from MXIMPProtocolConnection - - /** - * Defined in a base class - */ - MProtocolPresenceDataHost& ProtocolPresenceHost(); - - /** - * Defined in a base class - */ - MProtocolPresenceFeatures& ProtocolPresenceFeatures(); - - /** - * PrimeHost - * - * @since S60 3.2 - * @param [in] aHost - * Reference to host interface, what this MXIMPProtocolConnection - * instance must use to communicate back to Presence Framework - * direction. - */ - void PrimeHost( MXIMPProtocolConnectionHost& aHost ); - - /** - * OpenSessionL - * - * @since S60 3.2 - * @param [in] aReqId - * Request ID identifying the request. Presence protocol - * connection implementation must cache here given ID and - * use it when completing the request later through the - * MXIMPProtocolConnectionHost::HandleRequestCompleted(). - */ - void OpenSessionL( const MXIMPContextClientInfo& aClientCtxInfo, - TXIMPRequestId aReqId ); - - /** - * OpenSessionL - * - * @since S60 3.2 - * @param [in] aReqId - * Request ID identifying the request. Presence protocol - * connection implementation must cache here given ID and - * use it when completing the request later through the - * MXIMPProtocolConnectionHost::HandleRequestCompleted(). - */ - void OpenSessionL( const TInt& aSettingsId, - TXIMPRequestId aReqId ); - - /** - * CloseSession - * - * @since S60 3.2 - * @param [in] aReqId - * Request ID identifying the request. Presence protocol - * connection implementation must cache here given ID and - * use it when completing the request later through the - * MXIMPProtocolConnectionHost::HandleRequestCompleted(). - */ - void CloseSession( const MXIMPContextClientInfo& aContextClient, - TXIMPRequestId aReqId ); - - /** - * GetSupportedFeaturesL - * - * @since S60 3.2 - * @param [out] aFeatures - * Return parameter where to append supported - * presence protocol connection features. - * Feature IDs are defined in NXIMPFeature namespace. - */ - void GetSupportedFeaturesL( CDesC8Array& aFeatures ) const; - - /** - * PresenceWatching - * - * @since S60 3.2 - * @return Requested interface. - * interface ownership is not returned caller. - */ - MProtocolPresenceWatching& PresenceWatching(); - - /** - * PresencePublishing - * - * @since S60 3.2 - * @return Requested interface. - * interface ownership is not returned caller. - */ - MProtocolPresencePublishing& PresencePublishing(); - - /** - * PresentityGroups - * - * @since S60 3.2 - * @return Requested interface. - * interface ownership is not returned caller. - */ - MProtocolPresentityGroups& PresentityGroups(); - - /** - * PresenceAuthorization - * - * @since S60 3.2 - * @return Requested interface. - * interface ownership is not returned caller. - */ - MProtocolPresenceAuthorization& PresenceAuthorization(); - - /** - * PresenceAuthorization - * - * @since S60 3.2 - * @return Requested interface as own type - * interface ownership is not returned caller. - */ - CPresencePluginAuthorization& InternalPresenceAuthorization(); - - /** - * Defined in a base class - */ - MXIMPProtocolConnectionHost* Host(); - - /** - * Defined in a base class - */ - TPtrC16 CurrentDomain(); - - /** - * Defined in a base class - */ - MXIMPServiceInfo& ServiceInfo(); - - private: //data - - /** - * Presence Engine session - * Own. - */ - CPresencePluginSession* iSession; - - /** - * CPresencePluginWinfo - * Own. - */ - CPresencePluginWinfo* iPluginWinfo; - - /** - * CPresencePluginWatcher - * Own. - */ - CPresencePluginWatcher* iWatcher; - - /** - * current request id - * Own - */ - TXIMPRequestId iXIMPId; - - /** - * Host for connection. - * Not own. - */ - MXIMPProtocolConnectionHost* iConnectionHost; - - /** - * MXIMPProtocolPresenceauthorization implementation. - * Own. - */ - CPresencePluginAuthorization* iAuth; - - /** - * CSimplePluginPublisher - * Own. - */ - CPresencePluginPublisher* iPublisher; - - /** - * CSimplePluginGroups - * Own. - */ - CPresencePluginGroups* iGroups; - - /** - * CPresencePluginImFeatures - * Own. - */ - CSimpleImFeatures* iImFeatures; - - /** - * Current user SIP identity - * Own. - */ - HBufC16* iSipPresentity; - - /** - * XDM utils - * Own. - */ - CPresencePluginXdmUtils* iXdmUtils; - - /** - * TupleId - * Own. - */ - TInt iOwnTupleId; - - /** - * Document Etag - * Own. - */ - HBufC8* iETag; - - /** - * Virtual groups - * Own - */ - CPresencePluginVirtualGroup* iSubscribedBuddys; - - /** - * Plugin Data - * Own. - */ - CPresencePluginData* iPresenceData; - - /** - * Stop publish state - * Own - */ - TBool iStopPublishState; - - /** - * Grant list subscribe state - * Own - */ - TBool iGrantListSubs; - - /** - * Is stop publish called - * Own - */ - TBool iStopPublishCall; - - /** - * Terminated state called - * Own. - */ - TBool iTerminatedCall; - - /** - * Connection Array instance - * Own. - */ - CPresenceConnectionInfo* iConnectionArray; - - SIMPLE_UNIT_TEST( T_CPresencePluginConnection ) - SIMPLE_UNIT_TEST( T_SIMPLEDataModelAdapter ) - }; - -#endif // PRESENCEPLUGINCONNECTION_H \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugincontacts.h --- a/simpledatamodeladapter/inc/presenceplugincontacts.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,344 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef C_CPRESENCEPLUGINCONTACTS_H -#define C_CPRESENCEPLUGINCONTACTS_H - - -#include -#include -#include -#include -#include "presencecontactscontextbase.h" -#include "presencelogger.h" - -class CVPbkContactManager; -class MVPbkContactOperationBase; -class MVPbkContactLinkArray; -class MVPbkStoreContact; -class CVPbkFieldTypeRefsList; -class CPresencePluginContactStateHandler; -class MPresencePluginContactsObs; - - -/** - * CPrecensePluginContacts Operation states - */ -enum TPresenceContactsOperation - { - EOperationIsPresenceStoredToContacts - }; - - -/** - * Access to virtual phonebook contacts database - * - * @lib presenceplugin.dll - * @since S60 v5.0 - */ -NONSHARABLE_CLASS( CPresencePluginContacts ) : - public CActive, - public MVPbkContactStoreListObserver, - public MVPbkContactFindObserver, - public MVPbkSingleContactOperationObserver, - public MPresenceContactsContextBase - { - -public: - - /** - * Two-phased constructor. - * @param aServiceId Service ID. - * @param aServiceName Service name - * @param aObserver Callback results - */ - static CPresencePluginContacts* NewL( - TInt aServiceId, - const TDesC& aServiceName, - MPresencePluginContactsObs& aObserver ); - - /** - * Two-phased constructor. - * @param aServiceId Service ID. - * @param aServiceName Service name - * @param aObserver Callback results - */ - static CPresencePluginContacts* NewLC( - TInt aServiceId, - const TDesC& aServiceName, - MPresencePluginContactsObs& aObserver ); - - /** - * Destructor. - */ - virtual ~CPresencePluginContacts(); - - /** - * Query to virtual bhonebook contacts database - * to ensure is the presence service stored to database - * - * Calls MPresencePluginContactsObs::RequestComplete() when comlete - * - * @since S60 v5.0 - * @param aPresenceId Presence ID. - * @param aStatus Client status - */ - void IsPresenceIdStoredL( const TDesC16& aPresenceId, - TRequestStatus& aStatus ); - -protected: - -// from base class CActive - - void RunL(); - - void DoCancel(); - - TInt RunError( TInt aError ); - -// from base class MVPbkContactStoreListObserver - - /** - * Called when the opening process is complete. - * - * Before this all stores have sent StoreReady or StoreUnavailable - * event. The client can not trust that all stores are available - * for use when this is called. - */ - void OpenComplete(); - -// from base class MVPbkContactStoreObserver ( from MVPbkContactStoreListObserver ) - - /** - * Called when a contact store is ready to use. - * - * @param aContactStore The store that is ready. - */ - void StoreReady( MVPbkContactStore& aContactStore ); - - /** - * Called when a contact store becomes unavailable. - * - * Client may inspect the reason of the unavailability and decide - * whether or not it will keep the store opened (ie. listen to - * the store events). - * - * @param aContactStore The store that became unavailable. - * @param aReason The reason why the store is unavailable. - * This is one of the system wide error codes. - */ - void StoreUnavailable( MVPbkContactStore& aContactStore, - TInt aReason ); - - /** - * Called when changes occur in the contact store. - * - * @see TVPbkContactStoreEvent - * @param aContactStore A store whose event it is. - * @param aStoreEvent The event that has occurred. - */ - void HandleStoreEventL( - MVPbkContactStore& aContactStore, - TVPbkContactStoreEvent aStoreEvent ); - -// from base class MVPbkContactFindObserver - - /** - * Called when find is complete. Caller takes ownership of the results - * In case of an error during find, the aResults may contain only - * partial results of the find - * - * @param aResults Array of contact links that matched the find - * Callee must take ownership of this object in - * the start of the function, ie. in case the - * function leaves the results must be destroyed. - * The find operation can be destroyed at the end - * of this callback. - */ - void FindCompleteL( MVPbkContactLinkArray* aResults ); - - /** - * Called in case the find fails for some reason. The find operation - * can be destroyed at the end of this callback. - * - * @param aError One of the system wide error codes. - * KErrNotReady if store is not ready (not open or unavailable) - */ - void FindFailed( TInt aError ); - -// from base class MVPbkSingleContactOperationObserver - - /** - * Called when the operation is completed. - * - * A client has the operation as a member and it can delete the operation - * instance in this function call. If the implementation of the store - * calls the function from the operation instance it must not handle - * any member data after calling it. - * - * @param aOperation The completed operation. - * @param aContact The contact returned by the operation. - * A client must take the ownership immediately. - * - * NOTE: - * If you use CleanupStack for MVPbkStoreContact - * Use MVPbkStoreContact::PushL or - * CleanupDeletePushL from e32base.h. - * (Do Not Use CleanupStack::PushL(TAny*) because - * then the virtual destructor of the M-class - * won't be called when the object is deleted). - */ - void VPbkSingleContactOperationComplete( - MVPbkContactOperationBase& aOperation, - MVPbkStoreContact* aContact ); - - /** - * Called if the operation fails. - * - * A client has the operation as a member and it can delete the operation - * instance in this function call. If the implementation of the store - * calls the function from the operation instance it must not handle - * any member data after calling it. - * - * @param aOperation The failed operation. - * @param aError An error code of the failure. - */ - void VPbkSingleContactOperationFailed( - MVPbkContactOperationBase& aOperation, - TInt aError ); - -// from base class MPresenceContactsContextBase - - /** - * Open virtual phonebook contact stores - * - * @since S60 v5.0 - */ - void OpenL(); - - /** - * Start virtual phonebook contacts search - * - * @since S60 v5.0 - */ - void SearchL(); - - /** - * Return virtual phonebook contact links - * - * @since S60 v5.0 - * @return virtual phonebook contact links - */ - const MVPbkContactLinkArray& ContactLinkArrayL(); - - /** - * Resolve virtual phonebook contact from contact link - * - * @since S60 v5.0 - * @param aContactLink contact link to resolve - */ - void RetrieveContactL( - const MVPbkContactLink& aContactLink ); - -private: - - CPresencePluginContacts( TInt aServiceId, MPresencePluginContactsObs& aObserver ); - - void ConstructL( const TDesC& aServiceName ); - - HBufC* ContactStoreNameL(); - -private: //data - - /** - * Service id. - */ - TInt iServiceId; - - /** - * Service name. - * Own. - */ - HBufC* iServiceName; - - /** - * Text used in search - * Own. - */ - HBufC* iSearchText; - - /** - * Observer. - * Not own. - */ - MPresencePluginContactsObs* iObserver; - - /** - * Presence Plugin Contacts Operation - */ - TPresenceContactsOperation iOperation; - - /** - * Virtual Phonebook field types - * Own. - */ - CVPbkFieldTypeRefsList* iFieldTypeRefList; - - /** - * Virtual Phonebook contact manager - * Own. - */ - CVPbkContactManager* iContactManager; - - /** - * VPbk operation - * Own. - */ - MVPbkContactOperationBase* iContactOperation; - - /** - * VPbk contact links - * Own. - */ - MVPbkContactLinkArray* iContactLinkArray; - - /** - * VPbk Store contact array - * Own. - */ - RPointerArray iStoreContactArray; - - /** - * state handler - * Own. - */ - CPresencePluginContactStateHandler* iStateHandler; - - /** - * Client status - * Not own. - */ - TRequestStatus* iClientStatus; - - - SIMPLE_UNIT_TEST( UT_CPresencePluginContacts ) - - }; - - -#endif // C_CPRESENCEPLUGINCONTACTS_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugincontactsobs.h --- a/simpledatamodeladapter/inc/presenceplugincontactsobs.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef M_MPRESENCEPLUGINCONTACTSOBS_H -#define M_MPRESENCEPLUGINCONTACTSOBS_H - - -#include -#include "presenceplugincontacts.h" - - -/** - * Callback from virtual phonebook contacts handler - * - * @lib presenceplugin.dll - * @since S60 v5.0 - */ -class MPresencePluginContactsObs - { - -public: - - /** - * Informs the observer that the operation is completed - * - * @param aResult Result data returned,ownership is - * transferred to the client. - * In operation EOperationIsPresenceStoredToContacts - * return type is TBool*. - * @param aOperation Operation type - * @param aError Completion error code - */ - virtual void RequestComplete( TAny* aResult, - TPresenceContactsOperation aOperation, TInt aError ) = 0; - - }; - - -#endif // M_PRESENCEPLUGINCONTACTSOBS_H - -// End of File diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugincontactstate.h --- a/simpledatamodeladapter/inc/presenceplugincontactstate.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - -#ifndef C_CPRESENCEPLUGINCONTACTSTATE_H -#define C_CPRESENCEPLUGINCONTACTSTATE_H - -#include - -class CPresencePluginContactStateHandler; -class MPresenceContactsContextBase; - -/** - * Base class for presenceplugin contacts states - * - * @lib presenceplugin.dll - * @since S60 V5.0 - */ -class CPresencepluginContactState : public CBase - { - -public: - - CPresencepluginContactState( MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ); - - virtual ~CPresencepluginContactState(); - - virtual void HandleL() = 0; - - virtual void Complete(); - - virtual void Error( TInt aError ); - -protected: // data - - /** - * Context - * Not own. - */ - MPresenceContactsContextBase* iContext; - - /** - * State handler - * Not own. - */ - CPresencePluginContactStateHandler* iStateHandler; - - }; - - -#endif // C_CPRESENCEPLUGINCONTACTSTATE_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugincontactstateend.h --- a/simpledatamodeladapter/inc/presenceplugincontactstateend.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef C_CPRESENCEPLUGINCONTACTSTATEEND_H -#define C_CPRESENCEPLUGINCONTACTSTATEEND_H - - -#include "presenceplugincontactstate.h" - -/** - * CPresencePluginContactStateEnd - */ -class CPresencePluginContactStateEnd : - public CPresencepluginContactState - { - -public: - - /** - * Constructor - */ - CPresencePluginContactStateEnd( MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ); - - virtual ~CPresencePluginContactStateEnd(); - - void HandleL(); - - }; - - -#endif // C_CPRESENCEPLUGINCONTACTSTATEEND_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugincontactstatehandler.h --- a/simpledatamodeladapter/inc/presenceplugincontactstatehandler.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef C_CPRESENCEPLUGINCONTACTSTATEHANDLER_H -#define C_CPRESENCEPLUGINCONTACTSTATEHANDLER_H - - -#include - -class CPresencepluginContactState; - -/** - * States handler - * - * @lib presenceplugin.dll - * @since S60 v5.0 - */ -class CPresencePluginContactStateHandler : public CBase - { - -public: - - static CPresencePluginContactStateHandler* NewL(); - - /** - * Destructor. - */ - virtual ~CPresencePluginContactStateHandler(); - - /** - * Add states to queue - * - * @since S60 v5.0 - * @param aState State to add, ownership is transferred. - */ - void AddStateL( CPresencepluginContactState* aState ); - - /** - * Start State machine. - * States must be added before - * - * @since S60 v5.0 - * @param aStatus Client status - */ - void Start( TRequestStatus* aStatus ); - - /** - * States are progressed to end - * or error occured - * - * @since S60 v5.0 - * @param aError Possible error - */ - void Complete( TInt aError ); - - /** - * State getter - * - * @since S60 v5.0 - * @return State - */ - CPresencepluginContactState* State(); - - /** - * Order statehandler to move next state - * - * @since S60 v5.0 - */ - void ProgressToNextState(); - -private: - - CPresencePluginContactStateHandler(); - - void HandleNextState(); - -private: // data - - /** - * Current state index - * own. - */ - TInt iCurrentStateIndex; - - /** - * States to process - * own. - */ - RPointerArray< CPresencepluginContactState > iStateArray; - - /** - * Client status - * Not own. - */ - TRequestStatus* iClientStatus; - - }; - - -#endif // C_CPRESENCEPLUGINCONTACTSTATEHANDLER_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugincontactstateopen.h --- a/simpledatamodeladapter/inc/presenceplugincontactstateopen.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef C_CPRESENCEPLUGINCONTACTSTATEOPEN_H -#define C_CPRESENCEPLUGINCONTACTSTATEOPEN_H - - -#include "presenceplugincontactstate.h" - -/** - * CPresencePluginContactStateOpen - * - */ -class CPresencePluginContactStateOpen : - public CPresencepluginContactState - { - -public: - - /** - * Constructor - */ - CPresencePluginContactStateOpen( MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ); - - - virtual ~CPresencePluginContactStateOpen(); - - void HandleL(); - - }; - - -#endif // C_CPRESENCEPLUGINCONTACTSTATEOPEN_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugincontactstateresolve.h --- a/simpledatamodeladapter/inc/presenceplugincontactstateresolve.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef C_CPRESENCEPLUGINCONTACTSTATERESOLVE_H -#define C_CPRESENCEPLUGINCONTACTSTATERESOLVE_H - - -#include "presenceplugincontactstate.h" - -/** - * CPresencePluginContactStateResolve - * - */ -class CPresencePluginContactStateResolve : - public CPresencepluginContactState - { - -public: - - /** - * Constructor - */ - CPresencePluginContactStateResolve( MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ); - - virtual ~CPresencePluginContactStateResolve(); - - void HandleL(); - - void Complete(); - -private: // Data - - TInt iContactLinkIndex; - - TInt iContactLinkCount; - - }; - - -#endif // C_CPRESENCEPLUGINCONTACTSTATERESOLVE_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugincontactstatesearch.h --- a/simpledatamodeladapter/inc/presenceplugincontactstatesearch.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef C_CPRESENCEPLUGINCONTACTSTATESEARCH_H -#define C_CPRESENCEPLUGINCONTACTSTATESEARCH_H - - -#include "presenceplugincontactstate.h" - -/** - * CPresencePluginContactStateSearch - * - */ -class CPresencePluginContactStateSearch : - public CPresencepluginContactState - { - -public: - - /** - * Constructor - */ - CPresencePluginContactStateSearch( MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ); - - virtual ~CPresencePluginContactStateSearch(); - - void HandleL(); - - }; - - -#endif // C_CPRESENCEPLUGINCONTACTSTATESEARCH_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugindata.h --- a/simpledatamodeladapter/inc/presenceplugindata.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,470 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef C_PRESENCEPLUGINDATA_H -#define C_PRESENCEPLUGINDATA_H - -#include -#include -#include -#include - -#include "mpresencepluginconnectionobs.h" -#include "presencelogger.h" - -class MXIMPObjectFactory; -class MPresenceObjectFactory; -class MSimpleDocument; -class MPresenceInfo; -class MSimplePresenceList; -class MPresenceInfoFieldCollection; -class MXIMPObjectCollection; -class MPersonPresenceInfo; -class MPresenceInfoField; -class MSimpleElement; -class MPresenceCacheWriter2; -class MPresenceCacheReader2; - -/** - * CPresencePluginData - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginData ): public CBase - { - public: - - /** - * Two-phased constructor. - * - * @param none - * @param none - */ - static CPresencePluginData* NewL( - MPresencePluginConnectionObs& aObs, - TInt aServiceId ); - - /** - * Two-phased constructor. - * - * @param none - * @param none - */ - static CPresencePluginData* NewLC( - MPresencePluginConnectionObs& aObs, - TInt aServiceId ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginData(); - - /** - * Convert to engine notification to MXIMPPresenceInfo - * - * @since S60 5.0 - * @param aPresenceFactory object factory - * @param aPrInfo ximp info structure [out] - * @param aUnicodeNoteContent note field content [out] - */ - void NotifyToBlockedToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent = KNullDesC ); - - /** - * Convert to engine notification to MXIMPPresenceInfo - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aPrInfo ximp info structure [out] - * @param aUnicodeNoteContent note field content [out] - */ - void NotifyToPendingToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent = KNullDesC ); - - /** - * Convert to engine notification to MXIMPPresenceInfo - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aPrInfo ximp info structure [out] - * @param aUnicodeNoteContent note field content [out] - */ - void NotifyTerminatedToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent = KNullDesC ); - - /** - * Convert to engine notification to MXIMPPresenceInfo - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aPrInfo ximp info structure [out] - * @param aUnicodeNoteContent note field content [out] - * @param aAvailability availability value for cache entry [out] - */ - void NotifyToActiveToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent = KNullDesC, - NPresenceInfo::TAvailabilityValues aAvailability = - NPresenceInfo::EAvailable ); - - /** - * Convert to engine notification to MximpPresenceInfo - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aDocument notification - * @param aPrInfo ximp info structure [out] - */ - void NotifyToPrInfoL( - MXIMPObjectFactory& aFactory, - MPresenceObjectFactory& aPresenceFactory, - MSimpleDocument& aDocument, - MPresenceInfo& aPrInfo ); - - /** - * Extracts cache data entries from presence info object. - * - * @since S60 5.0 - * @param aPrInfo ximp info structure - * @param aAvailability will store cache availability - * @param aExtendedAvailability will store extended availability - * @param aStatusMessage will store custom status message - */ - void CacheEntriesFromPrInfo( - MPresenceInfo& aPrInfo, - MPresenceBuddyInfo2::TAvailabilityValues& aAvailability, - TPtr& aExtendedAvailability, - TPtr& aStatusMessage ); - - /** - * Convert to engine list notification to MximpPresenceInfo elements - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aList notification - * @param aEntities array of ximp info structure [out] - * @param aTerminated array of ximp info structure for - * terminated entities [out] - */ - void NotifyListToPrInfoL( - MXIMPObjectFactory& aFactory, - MPresenceObjectFactory& aPresenceFactory, - MSimplePresenceList& aList, - RPointerArray& aEntities, - RPointerArray& aActives, - RPointerArray& aTerminated ); - - /** - * AddPrPersToSimpleDocumentL - * - * @since S60 3.2 - * Add subscribed or blocked person to document - * @param aInfo, presence info - * @param aDocument, xml document - * @param aSipId, sip identity - * @param aTupleId, client tupleId - */ - void AddPrPersToSimpleDocumentL( - const MPersonPresenceInfo* aInfo, - MSimpleDocument& aDocument, - const TDesC8& aSipId, - TInt aTupleId ); - - /** - * Creates document. - * - * @since S60 3.2 - * @param aDocument XDM document - * @param aSipId SIP profile id - * @param aStatusField, status enum field - * @param aMessageField, message field - */ - void DoCreateDocumentL( - MSimpleDocument& aDocument, - const TDesC8& aSipId, - const MPresenceInfoField* aStatusField, - const MPresenceInfoField* aMessageField ); - - /** - * DoCheckBasicStatusValueL - * - * @since S60 3.2 - * @param aField - * @return TPtrC basic status value - */ - TPtrC DoCheckBasicStatusValueL( - const MPresenceInfoField& aField ); - - /** - * DoCheckActivitiesValueL - * - * @since S60 3.2 - * @param aField - * @return TPtrC activities value - */ - TPtrC8 DoCheckActivitiesValueL( - const MPresenceInfoField& aField ); - - /** - * DoCheckNoteValueL - * - * @since S60 3.2 - * @param aField - * @return TPtrC activities value - */ - TPtrC DoCheckNoteValueL( - const MPresenceInfoField& aField ); - - /** - * CreatePresenceUri8LC - * - * @since S60 3.2 - * @param aPresentityUri - * @return presence URI - */ - HBufC8* CreatePresenceUri8LC( - const TDesC8& aPresentityUri ); - - /** - * GenerateTupleId() - * Generate Tuple id for status document - * - * @since S60 3.2 - * @param none - * @return TInt, tupleid - */ - TInt GenerateTupleId(); - - - /** - * Removes prefix from uri. - * - * @since S60 3.2 - * @param aPresentityUri, presentity url - * @return HBufC16, URL without prefix - */ - HBufC16* RemovePrefixLC( - const TDesC& aPresentityUri ); - - /** - * Returns service id. - * - * @since S60 5.0 - * @return TInt, service id related to this data instance - */ - TInt ServiceId(); - - /** - * Resolve service name - * - * @since S60 5.0 - * @param aServiceId Service Id. - * @return resolved service name, ownership returned to caller - */ - HBufC* ServiceNameLC( TInt aServiceId ) const; - - /** - * Writes status to presence cache - * - * @since S60 5.0 - * @param aPresentityId, identity of status - * @param aAvailability, availability value to set - * @param aAvailabilityText, text for extended states - * @param aStatusMessage, status message from remote party - * @return None - */ - void WriteStatusToCacheL( - const TDesC& aPresentityId, - MPresenceBuddyInfo2::TAvailabilityValues aAvailability, - const TDesC& aAvailabilityText, - const TDesC& aStatusMessage ); - - /** - * Removes cache entries for this service. - * - * @since S60 5.0 - * @return None - */ - void RemoveCacheL(); - - /** - * Removes cache entries for certain person. - * - * @since S60 5.0 - * @param aIdentity, identity of presence entry - * @return None - */ - void DeletePresenceL( const TDesC& aIdentity ); - - /** - * Stores own presence values to permanent storage. - * - * @since S60 5.0 - * @param aServiceId, service id - * @param aAvailability, availability enumeration - * @param aStatusMessage, custom status message - * @return None - */ - void StorePresenceOwnPresenceL( - const TUint aServiceId, - NPresenceInfo::TAvailabilityValues aAvailability, - const TDesC& aStatusMessage ); - - /** - * Reads document id from permanent storage. - * - * @since S60 5.0 - * @param aServiceId, service id - * @param aDocumentId, document id - * @return None - */ - void ReadDocumentIdL( - const TInt aServiceId, - TDes8& aDocumentId ); - - /** - * Deletes permanent data from storage - * - * @since S60 5.0 - * @param aServiceId, service id - * @return None - */ - void DeletePresenceVariablesL( const TInt aServiceId ); - - private: - - /** - * Standard C++ constructor - */ - CPresencePluginData( - MPresencePluginConnectionObs& aObs, - TInt aServiceId ); - - /** - * Standard C++ constructor - */ - void ConstructL(); - - /** - * UserNoteToXIMPL - * - * @since S60 3.2 - * This method not yet used - * @param aPresenceFactory ximp Factory - * @param aElement Simple elemnt - * @param aCollection Field Collection - */ - void UserNoteToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aElement, - MPresenceInfoFieldCollection& aCollection ); - - /** - * SingleUserStatusToXIMPL - * - * @since S60 3.2 - * @param aPresenceFactory ximp Factory - * @param aElement Simple element - * @param aActivitiesElement Simple element - * @param aNoteElement Simple element for note elems (can be null) - * @param aCollection Field Collection - */ - void SingleUserStatusToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aBasicElement, - MSimpleElement* aActivitiesElement, - MSimpleElement* aNoteElement, - MPresenceInfoFieldCollection& aCollection ); - - /** - * Returns element or NULL if no is found in the given - * element list. element which matches best current locale is - * returned. - * - * @since S60 5.1 - * @param aElements Element array. - * @return Best matching or NULL. - */ - MSimpleElement* ResolveNoteElementL( - const RPointerArray& aElements ) const; - - /** - * Checks if element has language attribute compatible with the - * current locale. - * - * @since S60 5.1 - * @param aElement Simple element containing language attribute. - * @return ETrue if compatible language attribute is found, - * EFalse otherwise. - */ - TBool IsElementLanguageValidForCurrentLocaleL( - MSimpleElement& aElement ) const; - - /** - * Resolve cache used identifier - * - * @since S60 5.0 - * @param aIdentity presence id without prefix - * @return resolved cache identifier, ownership returned to caller - */ - HBufC* ResolveCacheXspIdentifierL( const TDesC& aIdentity ) const; - - - private: // data - - /** - * Generated tuple/person id - * Own. - */ - TInt iNumBuf; - - /** - * ximp Plugin connection observer - * Not Own. - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * Stores service id. - */ - TInt iServiceId; - - /** - * Writes service status to presence cache. - * Own. - */ - MPresenceCacheWriter2* iPresenceCacheWriter; - - /** - * Reads service status from presence cache. - * Own. - */ - MPresenceCacheReader2* iPresenceCacheReader; - - SIMPLE_UNIT_TEST( T_CPresencePluginData ) - }; - -#endif //C_PRESENCEPLUGINDATA_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugindef.h --- a/simpledatamodeladapter/inc/presenceplugindef.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - -#ifndef PRESENCEPLUGINDEF_H -#define PRESENCEPLUGINDEF_H - -#include - - -/** - * C++ compatible definitions for XIMP PRESENCE protocol. - * - * This must be kept in-sync with definitions in - * "simpleplugin_resource.hrh" - */ - -//XIMP primary test protocol -const TInt K_PRESENCEPLUGIN_1_VERSION_NO = 1; -_LIT( K_PRESENCEPLUGIN_1_DISPLAY_NAME, "XIMP PRESENCE protocol" ); -_LIT( K_PRESENCEPLUGIN_1_DEFAULT_DATA, "PRESENCE" ); -_LIT( K_PRESENCEPLUGIN_1_OPAQUE_DATA , "

Nokiafeat/pres/pubfeat/pres/fetchfeat/pres/subssip" ); - - -#endif // PRESENCEPLUGINDEF_H \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginentitywatcher.h --- a/simpledatamodeladapter/inc/presencepluginentitywatcher.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,301 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINENTITYWATCHER_H -#define CPRESENCEPLUGINENTITYWATCHER_H - -#include -#include -#include -#include -#include "presenceplugincommon.h" -#include "mpresencepluginconnectionobs.h" -#include "presencelogger.h" - -class TXIMPRequestId; -class MSimpleDocument; -class MSimpleWatcher; -class CPresencePluginWatcher; -class MSimpleConnection; -class CPresencePluginData; - -/** - * CPresencePluginEntityWatcher - * - * Simple Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginEntityWatcher ): public CBase, - public MSimpleWatcherObserver - { - private: - - /** - * Current operation - */ - enum TPluginEntityWatcherOperation - { - EPluginIdle, - EPluginStop, - EPluginStart, - EPluginModify, - EPluginStartNotifyClient - }; - - public: - - /** - * Constructor. - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - * @param aHost XIMP connection host - */ - static CPresencePluginEntityWatcher* NewL( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CPresencePluginWatcher& aWatcher, - CPresencePluginData* aPresenceData ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginEntityWatcher(); - - /** - * Access Request id - * - * @since S60 3.2 - * @return XIMP request id - */ - TXIMPRequestId XIMPRequestId(); - - /** - * Access Presentity id - * - * @since S60 3.2 - * @return Presentity id - */ - TPtrC8 PresentityId(); - - /** - * Start subscribe - * - * @since S60 3.2 - * @param aPresentityId presentity id - */ - void StartSubscribeL( const TDesC8& aPresentityId ); - - /** - * Start subscribe - * - * @since S60 5.0 - * @param aPresentityId presentity id - * @param aClientRequst client status to complete - */ - void StartSubscribeL( - const TDesC8& aPresentityId, - TRequestStatus& aClientRequst ); - - /** - * Stop Subscrib - * - * @since S60 3.2 - * @param none - * @return none - */ - void StopSubscribeL(); - - /** - * Stop subscribe - * - * @since S60 5.0 - * @param aClientRequst client status to complete - */ - void StopSubscribeL( - TRequestStatus& aClientRequst ); - - /** - * Set active status to XIMP - * - * @since S60 3.2 - * @param none - * @return none - */ - void SetActiveToXIMPL( const TDesC& aIdentity ); - - /** - * Set terminated status to XIMP - * - * @since S60 3.2 - * @param aIdentity identity - * @return none - */ - void SetTerminatedToXIMPL( const TDesC& aIdentity ); - - private: - - /** - * Standard C++ constructor - * - * @param aObs, connection observer - * @param aConn, SIMPLE connection - * @param aWatcher, plugin watcher - */ - CPresencePluginEntityWatcher( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CPresencePluginWatcher& aWatcher ); - - /** - * Performs the 2nd phase of construction. - * - * @since S60 3.2 - * @param none - * @param none - */ - void ConstructL( CPresencePluginData* aPresenceData ); - - public: // from base class MSimpleWatcherObserver - - /** - * Defined in a base class - */ - void WatcherReqCompleteL( TInt aOpId, TInt aStatus ); - - /** - * Defined in a base class - */ - void WatcherNotificationL( MSimpleDocument& aDocument ); - - /** - * Defined in a base class - */ - void WatcherListNotificationL( MSimplePresenceList& aList ); - - /** - * Defined in a base class - */ - void WatcherTerminatedL( - TInt aOpId, TInt aReason ); - - private: - - /** - * Set active status to XIMP - * - * @since S60 3.2 - * @param none - * @return none - */ - void SetActiveToXIMPL( MSimpleDocument& aDocument ); - - /** - * Set terminated status to XIMP - * - * @since S60 3.2 - * @param none - * @return none - */ - void SetTerminatedToXIMPL( ); - - /** - * Set pending status to XIMP - * - * @since S60 3.2 - * @param none - * @return none - */ - void SetPendingToXIMPL( ); - - /** - * Completes client request - * - * @since S60 5.0 - * @param aStatus, complete code - * @return none - */ - void CompleteClientReq( TInt aStatus ); - - private: // Data - - /** - * XIMP Plugin connection observer - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * SIMPLE engine connection - * Not Own. - */ - MSimpleConnection& iConnection; - - /** - * SIMPLE engine watcher - * Own. - */ - MSimpleWatcher* iWatcher; - - /** - * PrFW request id - * Own. - */ - TXIMPRequestId iXIMPId; - - /** - * Subscribed entity Id. - * Own. - */ - HBufC8* iEntityId; - - /** - * Simple Engine request id - * Own. - */ - TInt iSimpleId; - - /** - * host class - * Own. - */ - CPresencePluginWatcher& iPluginWatcher; - - /** - * current pending operation - * Own. - */ - TPluginEntityWatcherOperation iOperation; - - /** - * instance to Presence data - * Own. - */ - CPresencePluginData* iPresenceData; - - /** - * Client status. - * Not own. - */ - TRequestStatus* iClientStatus; - - SIMPLE_UNIT_TEST( T_CPresencePluginEntityWatcher ) - SIMPLE_UNIT_TEST( T_CPresencePluginWatcher ) - }; - -#endif // CPRESENCEPLUGINENTITYWATCHER_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugingroup.h --- a/simpledatamodeladapter/inc/presenceplugingroup.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,428 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINGROUP_H -#define CPRESENCEPLUGINGROUP_H - -#include -#include -#include - -#include "presenceplugincommon.h" -#include "mpresencepluginconnectionobs.h" -#include "presencelogger.h" - -class TXIMPRequestId; -class MXIMPIdentity; -class MXIMPProtocolPresentityGroupsDataHost; -class MXIMPObjectCollection; -class CPresencePluginVirtualGroup; -class CPresencePluginData; - -/** - * CPresencePluginGroups - * - * Simple Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginGroups ) : public CActive, - public MProtocolPresentityGroups - { - public: - - /** - * Current operation - */ - enum TPluginGroupsOperation - { - ENoOperation, - ECreatePresentityGroup, - EDeletePresentityGroup, - EAddPresentityGroupMember, - EGrantPresentityGroupMember, - ERemovePresentityGroupMember, - EWithdrawGrantFromMember, - EGetListOfLists, - EGetListContent, - EBlockPresentityGroupMember, - EUnblockPresentityGroupMember, - EUnblockInAddPresentityGroupMember - }; - - /** - * Current actibe object state - */ - enum TPluginGroupsState - { - EPluginIdle, - EPluginInitXdm, - EPluginFetchRls, - EPluginAddGroupMember, - EPluginRemoveGroupMember, - EPluginCommitRls, - EPluginCommitXdm - }; - - /** - * Constructor. - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - */ - static CPresencePluginGroups* NewL( - MPresencePluginConnectionObs& aObs, - CPresencePluginVirtualGroup* aSubscribedBuddies, - CPresencePluginData* aPresenceData ); - - /** - * Constructor. - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - */ - static CPresencePluginGroups* NewLC( - MPresencePluginConnectionObs& aObs, - CPresencePluginVirtualGroup* aSubscribedBuddies, - CPresencePluginData* aPresenceData ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginGroups(); - - private: - - /** - * Standard C++ constructor - */ - CPresencePluginGroups( - MPresencePluginConnectionObs& aObs, - CPresencePluginVirtualGroup* aSubscribedBuddies, - CPresencePluginData* aPresenceData ); - - public: // from base class MXIMPBase - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - - public: // from base class MXIMPProtocolPresentityGroups - - /** - * Defined in a base class - */ - void DoSubscribePresentityGroupListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresentityGroupListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoCreatePresentityGroupL( - const MXIMPIdentity& aGroupId, - const TDesC16& aDisplayName, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoDeletePresentityGroupL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresentityGroupDisplayNameL( - const MXIMPIdentity& aGroupId, - const TDesC16& aDisplayName, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoSubscribePresentityGroupContentL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresentityGroupContentL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoAddPresentityGroupMemberL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - const TDesC16& aMemberDisplayName, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoRemovePresentityGroupMemberL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresentityGroupMemberDisplayNameL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - const TDesC16& aMemberDisplayName, - TXIMPRequestId aReqId ); - - protected: // from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - - private: - - /** - * Save presentity id - * - * @since S60 3.2 - * @param aPresentityId presentity id - * @param aFormatUri, attempt to format uri - * @return none - */ - void SetPresIdentityL( - const MXIMPIdentity& aPresentityId, - TBool aFormatUri ); - - /** - * Calls MXIMPProtocolConnectionHost callback - * - * @since S60 3.2 - * @param aStatus error status - * @return none - */ - void CompleteXIMPReq( TInt aStatus ); - - /** - * Start XDM operation - * - * @since S60 3.2 - * @param aReqId, request id - * @param aOperation, groups operation - * @return none - */ - void StartXdmOperationL( - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ); - - /** - * Start XDM operation - * - * @since S60 3.2 - * @param aReqId, request id - * @param aOperation, groups operation - * @return none - */ - void StartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ); - - /** - * Start XDM operation - * - * @since S60 3.2 - * @param none - * @return none - */ - void StartXdmOperationL(); - - /** - * Call actual XDM operation - * - * @since S60 3.2 - * @param aCompleteStatus, success or not - * @return none - */ - void CallActualXdmOperationL( TInt aCompleteStatus ); - - /** - * Get List of lists - * - * @since S60 3.2 - * @param none - * @return none - */ - void GetListOfListsL(); - - /** - * Get List content - * - * @since S60 3.2 - * @param none - * @return none - */ - void GetListContentL(); - - /** - * Do Get BuddyList form XDM list - * - * @since S60 3.2 - * @param none - * @return none - */ - void DoGetBuddyListL(); - - /** - * Do Get subscribed BuddyList form virtual list - * - * @since S60 3.2 - * @param none - * @return none - */ - void DoGetSubscribedBuddyListL(); - - /** - * Removes cache entries for certain person. - * - * @since S60 5.0 - * @param none - * @return none - */ - void DeletePersonCacheL(); - - private: // Data - - /** - * XIMP Plugin connection observer - * Own. - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * XDM Settings id - * Own. - */ - TInt iSettingsId; - - /** - * PrFW request id - * Own. - */ - TXIMPRequestId iXIMPId; - - /** - * PrFW request id for own requests - * Own. - */ - TXIMPRequestId iXIMPIdOwn; - - /** - * Simple Engine request id - * Own. - */ - TInt iSimpleId; - - /** - * Current operation - * Own. - */ - TPluginGroupsOperation iOperation; - - /** - * Current presentity in progress - * Own. - */ - HBufC16* iPresIdentity; - - /** - * XDM Utils - * Not own. - */ - CPresencePluginXdmUtils* iXdmUtils; - - /** - * Display name - * Own - */ - HBufC* iDisplayName; - - /** - * Active object state - * Own. - */ - TPluginGroupsState iState; - - /** - * Group request complete - * Own. - */ - TBool iCompleted; - - /** - * Virtual groups - * Not Own - */ - CPresencePluginVirtualGroup* iSubscribedBuddies; - - /** - * Plugin data. - * Not Own - */ - CPresencePluginData* iPresenceData; - - SIMPLE_UNIT_TEST( T_CPresencePluginGroups ) - }; - -#endif // CPRESENCEPLUGINGROUP_H \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginlanguagecodes.h --- a/simpledatamodeladapter/inc/presencepluginlanguagecodes.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,184 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - -#ifndef T_PRESENCEPLUGINLANGUAGECODES_H -#define T_PRESENCEPLUGINLANGUAGECODES_H - -#include - -/** ISO 639-1 language code length. */ -const TInt KIsoLanguageCodeLength = 2; - -/** - * Maps Symbian and ISO 639 language codes. - * - * @since S60 v5.1 - */ -class TLanguageCodeMapping - { - -public: - - /** - * Returns Symbian language code. - * - * @since S60 5.1 - * @return Symbian language code. - */ - TInt SymbianLanguageCode() const - { return iSymbianLanguageCode; } - - /** - * Returns ISO language code. - * - * @since S60 5.1 - * @return ISO language code. - */ - TPtrC8 IsoLanguageCode() const - { return TPtrC8( iIsoLanguageCode ); } - -public: // data - - /** - * Symbian language code as specified in e32lang.h. - */ - TInt iSymbianLanguageCode; - - /** - * ISO 639 language code. - */ - TText8 iIsoLanguageCode[__Align8( KIsoLanguageCodeLength + sizeof( "" ) )]; - }; - -/** Mapping table for Symbian and ISO 639 language codes. */ -static const TLanguageCodeMapping KLanguageCodeMappings[] = - { - { ELangEnglish, "en" }, - { ELangFrench, "fr" }, - { ELangGerman, "de" }, - { ELangSpanish, "es" }, - { ELangItalian, "it" }, - { ELangSwedish, "sv" }, - { ELangDanish, "da" }, - { ELangNorwegian, "no" }, - { ELangFinnish, "fi" }, - { ELangAmerican, "en" }, - { ELangSwissFrench, "fr" }, - { ELangSwissGerman, "de" }, - { ELangPortuguese, "pt" }, - { ELangTurkish, "tr" }, - { ELangIcelandic, "is" }, - { ELangRussian, "ru" }, - { ELangHungarian, "hu" }, - { ELangDutch, "nl" }, - { ELangBelgianFlemish, "nl" }, - { ELangAustralian, "en" }, - { ELangBelgianFrench, "fr" }, - { ELangAustrian, "de" }, - { ELangNewZealand, "en" }, - { ELangInternationalFrench, "fr" }, - { ELangCzech, "cs" }, - { ELangSlovak, "sk" }, - { ELangPolish, "pl" }, - { ELangSlovenian, "sl" }, - { ELangTaiwanChinese, "zh" }, - { ELangHongKongChinese, "zh" }, - { ELangPrcChinese, "zh" }, - { ELangJapanese, "ja" }, - { ELangThai, "th" }, - { ELangArabic, "ar" }, - { ELangAfrikaans, "af" }, - { ELangAlbanian, "sq" }, - { ELangAmharic, "am" }, - { ELangArabic, "ar" }, - { ELangArmenian, "hy" }, - { ELangTagalog, "tl" }, - { ELangBelarussian, "be" }, - { ELangBengali, "bn" }, - { ELangBulgarian, "bg" }, - { ELangBurmese, "my" }, - { ELangCatalan, "ca" }, - { ELangCroatian, "hr" }, - { ELangCanadianEnglish, "en" }, - { ELangInternationalEnglish,"en" }, - { ELangSouthAfricanEnglish, "en" }, - { ELangEstonian, "et" }, - { ELangFarsi, "fa" }, - { ELangCanadianFrench, "fr" }, - { ELangScotsGaelic, "gd" }, - { ELangGeorgian, "ka" }, - { ELangGreek, "el" }, - { ELangCyprusGreek, "el" }, - { ELangGujarati, "gu" }, - { ELangHebrew, "he" }, - { ELangHindi, "hi" }, - { ELangIndonesian, "id" }, - { ELangIrish, "ga" }, - { ELangSwissItalian, "it" }, - { ELangKannada, "kn" }, - { ELangKazakh, "kk" }, - { ELangKhmer, "km" }, - { ELangKorean, "ko" }, - { ELangLao, "lo" }, - { ELangLatvian, "lv" }, - { ELangLithuanian, "lt" }, - { ELangMacedonian, "mk" }, - { ELangMalay, "ms" }, - { ELangMalayalam, "ml" }, - { ELangMarathi, "mr" }, - { ELangMoldavian, "mo" }, - { ELangMongolian, "mn" }, - { ELangNorwegianNynorsk, "no" }, - { ELangBrazilianPortuguese, "pt" }, - { ELangPunjabi, "pa" }, - { ELangRomanian, "ro" }, - { ELangSerbian, "sr" }, - { ELangSinhalese, "si" }, - { ELangSomali, "so" }, - { ELangInternationalSpanish,"es" }, - { ELangLatinAmericanSpanish,"es" }, - { ELangSwahili, "sw" }, - { ELangFinlandSwedish, "sv" }, - { ELangTamil, "ta" }, - { ELangTelugu, "te" }, - { ELangTibetan, "bo" }, - { ELangTigrinya, "ti" }, - { ELangCyprusTurkish, "tr" }, - { ELangTurkmen, "tk" }, - { ELangUkrainian, "uk" }, - { ELangUrdu, "ur" }, - { ELangVietnamese, "vi" }, - { ELangWelsh, "cy" }, - { ELangZulu, "zu" }, - { ELangManufacturerEnglish, "en" }, - { ELangSouthSotho, "st" }, - { ELangBasque, "eu" }, - { ELangGalician, "gl" }, - { ELangEnglish_Apac, "en" }, - { ELangEnglish_Taiwan, "en" }, - { ELangEnglish_HongKong, "en" }, - { ELangEnglish_Prc, "en" }, - { ELangEnglish_Japan, "en" }, - { ELangEnglish_Thailand, "en" }, - { ELangMalay_Apac, "ms" } - }; - -/** Number of language code mappings. */ -static const TInt KLanguageCodeMappingsCount = - sizeof ( KLanguageCodeMappings ) / sizeof ( TLanguageCodeMapping ); - -#endif // T_PRESENCEPLUGINLANGUAGECODES_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginlocalstore.h --- a/simpledatamodeladapter/inc/presencepluginlocalstore.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef C_CPRESENCEPLUGINLOCALSTORE_H -#define C_CPRESENCEPLUGINLOCALSTORE_H - - -#include -#include -#include - - -/** - * Service contacts local store reader - * - * @lib presenceplugin.dll - * @since S60 v5.0 - */ -class CPresencePluginLocalstore : public CBase - { - -public: - - /** - * Two-phased constructor. - * @param aServiceName Service name - */ - static CPresencePluginLocalstore* NewL( const TDesC& aServiceName ); - - /** - * Two-phased constructor. - * @param aServiceName Service name - */ - static CPresencePluginLocalstore* NewLC( const TDesC& aServiceName ); - - /** - * Destructor. - */ - virtual ~CPresencePluginLocalstore(); - - /** - * Seeks given id at contact column - * - * @since S60 v5.0 - * @param aIdentifier Id. to search - * @return ETrue if found - */ - TBool SeekRowAtContactColL( TInt32& aIdentifier ); - -private: - - CPresencePluginLocalstore(); - - void ConstructL( const TDesC& aServiceName ); - - TBool DbExists(); - - void OpenDbL(); - -private: // data - - /** - * File stream - */ - RFs iFs; - - /** - * Store database - */ - RDbStoreDatabase iDb; - - /** - * Table - */ - RDbTable iTable; - - /** - * Column definitions - * Own. - */ - CDbColSet* iColset; - - /** - * DB Store - * Own. - */ - CPermanentFileStore* iFileStore; - - /** - * Local database name - * Own. - */ - HBufC* iLocalDBName; - - }; - - -#endif // C_CPRESENCEPLUGINLOCALSTORE_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginpublisher.h --- a/simpledatamodeladapter/inc/presencepluginpublisher.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,512 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINPUBLISHER_H -#define CPRESENCEPLUGINPUBLISHER_H - -#include - -#include -#include -#include -#include -#include -#include - -#include "presencepluginentitywatcher.h" -#include "presenceplugincommon.h" -#include "mpresencepluginconnectionobs.h" -#include "msimpleetagobserver.h" -#include "presencelogger.h" - -class TXIMPRequestId; -class MXIMPProtocolConnectionHost; -class MPersonPresenceInfo; -class MServicePresenceInfo; -class MDevicePresenceInfo; -class MSimplePublisher; -class MSimpleDocument; -class MSimpleElement; -class MSimpleWatcher; -class CPresencePluginXdmUtils; -class CPresencePluginData; -class CPresencePluginWatcherInfo; - -/** - * CPresencePluginPublisher - * - * Simple Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginPublisher ): public CActive, - public MSimplePublishObserver, - public MSimpleWatcherObserver, - public MProtocolPresencePublishing, - public MSimpleETagObserver - { - public: - - /** - * Current operation - */ - enum TPluginPublishOperation - { - ENoOperation, - EPublishOwn, - ESubscribeOwn, - EUnsubscribeOwn, - ESubscribeWinfo, - EUnsubscribeWinfo, - EPublishReq - }; - - /** - * NewL - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - */ - static CPresencePluginPublisher* NewL( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CPresencePluginData* aPresenceData ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginPublisher(); - - /** - * WinfoTerminatedL - * - * SIMPLE Winfo watcher sunscription is terminated - * @param aReason reason code - */ - void WinfoTerminatedL( TInt aReason ); - - /** - * WINFO received from SIMPLE - * @param aWinfo WINFO - */ - void WinfoNotificationL( MSimpleWinfo& aWinfo ); - - private: - - /** - * Standard C++ constructor - * @param aObs, connection observer - * @param aConn, SIMPLE connection - */ - CPresencePluginPublisher( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn ); - - /** - * Performs the 2nd phase of construction. - */ - void ConstructL( CPresencePluginData* aPresenceData ); - - public: //Own public methods - - /** - * StopPublishL() - * - * @since S60 3.2 - * @param none - * @return none - */ - void StopPublishL( TRequestStatus& aStatus ); - - /** - * Published() - * - * @since S60 3.2 - * @param none - * @return none - */ - TBool Published(); - - public: // from MSimpleETagObserver - - /** - * Defined in a base class - */ - void NewETagL( const TDesC8& aVal ); - - public: // from base class MSimplePublishObserver - - /** - * Defined in a base class - */ - void PublishReqCompleteL( TInt aOpid, TInt aStatus); - - /** - * Defined in a base class - */ - void PublishTerminatedL( TInt aOpid ); - - public: // from base class MSimpleWatcherObserver - - /** - * Defined in a base class - */ - void WatcherReqCompleteL( TInt aOpId, TInt aStatus ); - - /** - * Defined in a base class - */ - void WatcherNotificationL( MSimpleDocument& aDocument ); - - /** - * Defined in a base class - */ - void WatcherListNotificationL( MSimplePresenceList& aList ); - - /** - * Defined in a base class - */ - void WatcherTerminatedL( - TInt aOpId, TInt aReason ); - - public: // from base class MximpBase - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - public: // from base class MximpProtocolPresencePublishing - - /** - * Defined in a base class - */ - void DoPublishOwnPresenceL( - const MPresenceInfo& aOwnPresence, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoSubscribeOwnPresenceL( - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdateOwnPresenceSubscriptionPifL( - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribeOwnPresenceL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoSubscribePresenceWatcherListL( - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresenceWatcherListL( - TXIMPRequestId aReqId ); - - protected: // from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - - private: - - /** - * Calls MximpProtocolConnectionHost callback - * - * @since S60 3.2 - * @param aStatus error status - */ - void CompleteXIMPReq( TInt aStatus ); - - /** - * Complete client request - * - * @since S60 3.2 - * @param aStatus error status - */ - void CompleteClientReq( TInt aStatus ); - - /** - * Initialize a document - */ - void InitializeSimpleDocumentL( ); - - /** - * Add person information to the document. - * - * @since S60 3.2 - * @param aPersInfo personal information - */ - void AddSimpleDocumentPersL( - const MPersonPresenceInfo* aInfo ); - - /** - * Make a publish request - * - * @since S60 3.2 - * @param none - * @return none - */ - void MakePublishReqL(); - - /** - * Start XDM initialization - * - * @since S60 3.2 - * @param aReqId, XIMP request id - */ - void StartXdmOperationL( TXIMPRequestId aReqId ); - - /** - * Delete watcher information - * - * @since S60 3.2 - * @param none - * @return none - */ - void DeleteWatchers(); - - /** - * Add Watcher if not exist - * - * @since S60 3.2 - * @param aId, watcher identity - * @param aSipId, watcher sip URL - * @return none - */ - void AddWatcherIfNotExistsL( - const TDesC8& aId, - const TDesC& aSipId ); - - /** - * Remove Watcher if not exist - * - * @since S60 3.2 - * @param aId, watcher identity - * @param aSipId, watcher sip URL - * @return none - */ - void RemoveWatcherIfExists( - const TDesC8& aId, - const TDesC& aSipId ); - - /** - * Make current watcher list - * - * @since S60 3.2 - * @param none - * @return CDesCArrayFlat, watcher array - */ - CDesCArrayFlat* MakeCurrentWatcherListLC(); - - /** - * Collect watcher from winfo - * - * @since S60 3.2 - * @param aElems element array - * @return none - */ - void CollectWatchersL( - RPointerArray& aElems ); - - /** - * CreatePublisherL() - * - * @since S60 3.2 - * @param none - * @return none - */ - void CreatePublisherL(); - - /** - * Stores own presence status to presence cache - * - * @since S60 5.0 - * @return none - */ - void StoreOwnStatusToCacheL(); - - /** - * Resolves presence cache values according to provided - * unicode string content. - * - * @since S60 5.0 - * @param aUnicodeContent, string containing info data - * @param aActivities, activities string - * @param aCacheAvailability, will store enumerated status - * @param aCacheAvailability, will store extended status string - * @param aXimpApiAvailability, will store ximp api availabiltiy - * @return TBool, was handled or not - */ - TBool ResolveOwnCacheValues( - const TDesC& aUnicodeContent, - const TDesC& aActivities, - MPresenceBuddyInfo2::TAvailabilityValues& aCacheAvailability, - TPtr& aExtendedCacheAvailability, - NPresenceInfo::TAvailabilityValues& aXimpApiAvailability ); - - private: // Data - - /** - * ximp Plugin connection observer - * Own. - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * ximp Host. - * Not Own. - */ - MXIMPProtocolConnectionHost* iHost; - - /** - * SIMPLE engine connection - * Not Own. - */ - MSimpleConnection& iConnection; - - /** - * SIMPLE engine publisher - * Own. - */ - MSimplePublisher* iPublisher; - - /** - * SIMPLE engine watcher - * Own. - */ - MSimpleWatcher* iWatcher; - - /** - * ximp request id - * Own. - */ - TXIMPRequestId iXIMPId; - - /** - * Simple Engine request id - * Own. - */ - TInt iSimpleId; - - /** - * Subscribed winfo - * Own. - */ - TBool iSubscribed; - - /** - * Subscribed own data - * Own. - */ - TBool iSubscribedOwn; - - /** - * Published own data - * Own. - */ - TBool iPublished; - - /** - * RePublish status - * Own. - */ - TBool iRePublish; - - /** - * Current operation - * Own. - */ - TPluginPublishOperation iOperation; - - /** - * Simple publish document - * Own. - */ - MSimpleDocument* iDocument; - - /** - * XDM Utils - * Not own. - */ - CPresencePluginXdmUtils* iXdmUtils; - - /** - * WINFO watchers - * Own. - */ - TDblQue iWatcherList; - - /** - * Presence Data - * Not Own - */ - CPresencePluginData* iPresenceData; - - /** - * client statutus. - * Not own. - */ - TRequestStatus* iClientStatus; - - SIMPLE_UNIT_TEST( T_CPresencePluginPublisher ) - - - }; - -#endif // CPRESENCEPLUGINPUBLISHER_H \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginsession.h --- a/simpledatamodeladapter/inc/presencepluginsession.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,306 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINSESSION_H -#define CPRESENCEPLUGINSESSION_H - - -#include -#include -#include "mpresencepluginconnectionobs.h" -#include "presencelogger.h" - -//FORWARD -class MXIMPServiceInfo; -class MPresencePluginConnectionObs; - -/** - * CPrecensePluginSession - * - * presence Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginSession ): public CActive, - public MSimpleConnectionObserver - { - public: - - /** - * Current operation - */ - enum TPluginSessionOperation - { - ENoOperation, - EInitializeXdm, - }; - - /** - * Two-phased constructor. - * - * @param aService, XIMP Service info - * @param aObs, Connection observer - */ - static CPresencePluginSession* NewL( - const MXIMPServiceInfo& aService, - MPresencePluginConnectionObs& aObs ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginSession(); - - public: //New function - - TInt32 GetPresenceSetId( ) const; - - /** - * MSimpleConnection accessor - * - * @since S60 3.2 - * @return MSImpleConnection instance - */ - MSimpleConnection* SimpleConnection(); - - /** - * OpenSessionL - * - * @since S60 3.2 - * Opens the SIP connection (registers when needed) - * @param none - * @return none - */ - void OpenSessionL(); - - /** - * XDMSettings accessor - * - * @since S60 3.2 - * @param none - * @return XDM Settings ID - */ - TInt XdmSettingsId(); - - /** - * Current registered SIP entity - * - * @since S60 3.2 - * @param none - * @return TPrtC8, current sip presentity - */ - TPtrC8 CurrentSipPresentity(); - - /** - * Domain syntax for current settings - * - * @since S60 3.2 - * @param none - * @return TPrtC16, current domain - */ - TPtrC16 CurrentDomain(); - - /** - * Close Connection - * - * @since S60 3.2 - * @param none - * @return none - */ - void CloseConnection(); - - /** - * Connection status - * - * @since S60 3.2 - * @param none - * @return TBool, connection TRUE/FALSE - */ - TBool ConnectionStatus(); - - /** - * Connection status - * - * @since S60 3.2 - * @param none - * @return TBool, connection TRUE/FALSE - */ - TBool IsXdmLocalmode(); - - /** - * Check XDM settings valid - * - * @since S60 5.0 - * @param aServiceId, service if owning this session - * @return none - */ - void CheckXDMSettingsL( TUint aServiceId ); - - /** - * Accessor to valid XdmUtils - * - * @since S60 3.2 - * @param none - * @return XdmUtils instance - */ - CPresencePluginXdmUtils* XdmUtilsL(); - - /** - * Returns service id owning this session. - * - * @since S60 5.0 - * @param none - * @return TInt, service id - */ - TInt& ServiceId(); - - private: - - /** - * Standard C++ constructor - * @param aObs, connection observer. - */ - CPresencePluginSession( - MPresencePluginConnectionObs& aObs ); - - /** - * Performs the 2nd phase of construction. - * - * @param aService, XIMP service info - */ - void ConstructL( const MXIMPServiceInfo& aService ); - - public:// from base class MSimpleConnectionObserver - - /** - * Defined in a base class - */ - void ConnectionStatusL( - MSimpleConnection::TSimpleState aState ); - - /** - * Defined in a base class - */ - void RequestCompleteL( TInt aOpId, TInt aStatus ); - - protected: // from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - - private: // Data - - /** - * XIMP Plugin connection observer - * Own. - */ - MPresencePluginConnectionObs& iObs; - - /** - * Simple Engine connection. - * Own. - */ - MSimpleConnection* iConnection; - - /** - * Current Simple Engine operation id - * Own. - */ - TInt iOpId; - - /** - * Request type - * Own. - */ - MPresencePluginConnectionObs::TReqType iType; - - /** - * presence settings Id - * Own. - */ - TInt iPresSettingId; - - /** - * XDM Settings id - * Own. - */ - TInt iXdmSetting; - - /** - * Domain syntax for current settings - * Own, - */ - HBufC16* iDomain; - - /** - * Current User ID, User's SIP identity - * Own. - */ - HBufC8* iUserId8; - - /** - * Whether conncted to network - * Own. - */ - TBool iSipConnected; - - /** - * Whether conncted to network - * Own. - */ - TBool iXdmConnected; - - /** - * Xdm local mode - * Own. - */ - TBool iXdmLocalMode; - - /** - * XDM utils - * Own. - */ - CPresencePluginXdmUtils* iXdmUtils; - - /** - * Session operation. - */ - TPluginSessionOperation iOperation; - - /** - * Service id owning this session. - */ - TInt iServiceId; - - SIMPLE_UNIT_TEST( T_CPresencePluginSession ) - SIMPLE_UNIT_TEST( T_CPresencePluginConnection ) - }; - -#endif // CPRESENCEPLUGINSESSION_H \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginutility.h --- a/simpledatamodeladapter/inc/presencepluginutility.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef T_PRESENCEPLUGINUTILITY_H -#define T_PRESENCEPLUGINUTILITY_H - -/** -* Static utility functions for presence adapter. -* -* @lib presenceplugin.dll -* @since S60 v5.0 -*/ -NONSHARABLE_CLASS( TPresencePluginUtility ) - { - - public: - - /** - * Implementation for cleanup item. - * Resets and destroys array of the MXIMPIdentity - * entries and closes array. - * @param anArray RPointerArray pointer. - */ - static void ResetAndDestroyIdentities( TAny* anArray ); - - }; - -#endif // T_PRESENCEPLUGINUTILITY_H - -// End of File diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginvirtualgroup.h --- a/simpledatamodeladapter/inc/presencepluginvirtualgroup.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,160 +0,0 @@ -/* -* Copyright (c) 2006-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: IETF SIMPLE Protocol, creating virtualgroup -* -*/ - - -#ifndef CPRESENCEPLUGINVIRTUALGROUP_H -#define CPRESENCEPLUGINVIRTUALGROUP_H - -#include -#include -#include -#include - -#include "mpresencepluginconnectionobs.h" -#include "presencelogger.h" - -class MXIMPObjectCollection; -class CPresencePluginData; - -/** - * CPresencePluginVirtualGroup - * - * virtual groups - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginVirtualGroup ): public CBase - { - public: - - /** - * Constructor. - * @param aId watcher id - * @param aSipId watcher SIP identity - */ - static CPresencePluginVirtualGroup* NewL( - MPresencePluginConnectionObs& aObs, - const TDesC16& aListName, - CPresencePluginData* aPresenceData ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginVirtualGroup(); - - private: - - /** - * Standard C++ constructor - * @param aObs, Presence plugin connection - * @param aPresenceData, access to presence data - */ - CPresencePluginVirtualGroup( MPresencePluginConnectionObs& aObs, - CPresencePluginData* aPresenceData ); - - /** - * Performs the 2nd phase of construction. - */ - void ConstructL( const TDesC16& aListName ); - - /** - * IdentityExists() - * - * @since S60 3.2 - * @param aIdentityUri, identity url - * @return TInt, return KErrNotFound if indentity not exists - */ - TInt IdentityExists( const TDesC& aIdentityUri ); - - public: - - /** - * GetVirtualIdentityArray() - * - * @since S60 3.2 - * @param aColl, XIMP object collection - * @return none - */ - CDesCArray* GetVirtualIdentityArray( ); - - /** - * GetOnlineEntitiesL() - * - * @since S60 3.2 - * @param aColl, XIMP object collection - * @return none - */ - void GetVirtualEntitiesL( MXIMPObjectCollection& aColl ); - - /** - * AddOnlineEntity() - * - * @since S60 3.2 - * @param aIdentityUri, identity url - * @return none - */ - void AddEntityL( const TDesC& aIdentityUri ); - - /** - * RemoveOnlineEntity() - * - * @since S60 3.2 - * @param aIdentityUri, identity url - * @return none - */ - void RemoveEntityL( const TDesC& aIdentityUri ); - - /** - * HandlePresentityGroupMemberAddedL() - * - * @since S60 5.1 - * @param aIdentityUri, identity url - * @return none - */ - void HandlePresentityGroupMemberAddedL( const TDesC& aIdentityUri ); - - private: // data - - /** - * XIMP Plugin connection observer - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * Access to presence data. - * Not Own. - */ - CPresencePluginData* iPresenceData; - - /** - * Identities/Uri of online Buddies. - */ - CDesCArray* iVirtualMember; - - /** - * list ident - * own - */ - HBufC16* iListName; - - SIMPLE_UNIT_TEST( T_CPresencePluginVirtualGroup ) - SIMPLE_UNIT_TEST( T_CPresencePluginXdmUtils ) - - }; - -#endif // CPRESENCEPLUGINVIRTUALGROUP_H \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginwatcher.h --- a/simpledatamodeladapter/inc/presencepluginwatcher.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,408 +0,0 @@ -/* -* Copyright (c) 2006-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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINWATCHER_H -#define CPRESENCEPLUGINWATCHER_H - -#include -#include -#include -#include - -#include "mpresencepluginconnectionobs.h" -#include "presencelogger.h" - -class TXIMPRequestId; -class MXIMPIdentity; -class MXIMPProtocolConnectionHost; -class MSimpleConnection; -class CPresencePluginEntityWatcher; -class CPresencePluginData; - -/** - * CPresencePluginWatcher - * - * Simple Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginWatcher ): public CActive, - public MProtocolPresenceWatching - { - public: - - /** - * Current operation - */ - enum TPluginWatcherOperation - { - EPluginUndef, - EPluginSubscribeGroup, - EPluginUnsubscribeGroup, - EPluginSubscribeSingle, - EPluginSubscribeByAdding, - EPluginUnSubscribeByRemoving - }; - - /** - * Current actibe object state - */ - enum TPluginXdmState - { - EPluginIdle, - EPluginInitXdm, - EPluginFetchRls, - EPluginAddGroupMember, - EPluginRemoveGroupMember - }; - - /** - * Constructor. - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - */ - static CPresencePluginWatcher* NewL( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CPresencePluginData* aPresenceData ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginWatcher(); - - /** - * SIP Watcher is complets it's task. - * @param aStatus error status - * @return none - */ - void CompleteWatcher( TInt aStatus ); - - /** - * Delete a single entity watcher - * @param aPresentityid presentity id - * @return none - */ - void DeleteWatcher( - const TDesC8& aPresentityid ); - - /** - * SubscribeL() - * - * @since S60 5.1 - * @param aIdentity presentity id to subscribe - * @return none - */ - void SubscribeL( const TDesC& aIdentity ); - - /** - * SubscribeAllL() - * - * @since S60 3.2 - * @param none - * @return none - */ - void SubscribeAllL(); - - /** - * UnSubscribeAllL() - * - * @since S60 3.2 - * @param none - * @return none - */ - void UnSubscribeAllL(); - - /** - * Subscribes presentity presence. - * - * @since S60 5.0 - * @param aPresentityId, presentity id - * @param aStatus, client status to complete - * @return none - */ - void DoPerformSubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aStatus ); - - /** - * Unsubscribes presentity presence. - * - * @since S60 5.0 - * @param aPresentityId, presentity id - * @param aStatus, client status to complete - * @return none - */ - void DoPerformUnsubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aStatus ); - - /** - * Accept watcher to watcher list - * - * @since S60 5.1 - * @param aWatcher, watcher - * @return none - */ - void AcceptL( const CPresencePluginEntityWatcher* aWatcher ); - - private: - - /** - * Standard C++ constructor - * @param aObs, Presence plugin connection - * @param aConn, SIMPLE connection - */ - CPresencePluginWatcher( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CPresencePluginData* aPresenceData ); - - public: // from base class MXIMPBase - - /** - * Defined in a base class - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ); - - /** - * Defined in a base class - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOps ) const; - - /** - * Defined in a base class - */ - TInt32 GetInterfaceId() const; - - public: // from base class MXIMPProtocolPresenceWatching - - /** - * Defined in a base class - */ - void DoSubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresentityPresenceSubscriptionPifL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoSubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUpdatePresentityGroupMembersPresenceSubscriptionPifL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& aPif, - TXIMPRequestId aReqId ); - - /** - * Defined in a base class - */ - void DoUnsubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ); - - public: - - /** - * Save presentity id - * - * @since S60 3.2 - * @param aPresentityId presentity id - * @param aFormatUri, attempt to format uri - * @return none - */ - void SetPresIdentityL( - const MXIMPIdentity& aPresentityId, - TBool aFormatUri ); - - /** - * Calls MXIMPProtocolConnectionHost callback - * - * @since S60 3.2 - * @param aStatus error status - * @return none - */ - void CompleteXIMPReq( TInt aStatus ); - - /** - * Set XIMP request id - * - * @since S60 3.2 - * @param aId, request id - * @return none - */ - void SetXIMPId( TXIMPRequestId aId ); - - /** - * Check if ID matches with existing watcher - * - * @since S60 5.1 - * @param aPresentityId presentity ID - * @return ETrue if matching watcher found - */ - TBool MatchWatcherId( const TDesC8& aPresentityId ) const; - - protected: // from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - - private: - - /** - * Match existing watcher - * - * @since S60 3.2 - * @param aPresentityId presentity id - * @return watcher or NULL when not found - */ - CPresencePluginEntityWatcher* MatchWatcherL( - const TDesC8& aPresentityId, TBool aCreate ); - - /** - * StartXdmOperationL - * - * @since S60 3.2 - * @param none - * @return none - */ - void StartXdmOperationL(); - - private: // Data - - /** - * XIMP Plugin connection observer - * Own. - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * XIMP Host. - * Not Own. - */ - MXIMPProtocolConnectionHost* iHost; - - /** - * SIMPLE engine connection - * Not Own. - */ - MSimpleConnection& iConnection; - - /** - * SIMPLE engine watchers - * Own. - */ - RPointerArray iWatchers; - - /** - * Watcher candidates - * Own. - */ - RPointerArray iWatcherCandidates; - - /** - * Current PrFW request id - * Own. - */ - TXIMPRequestId iXIMPId; - - /** - * Simple Engine request id - * Own. - */ - TInt iSimpleId; - - /** - * XDM Utils - * Not own. - */ - CPresencePluginXdmUtils* iXdmUtils; - - /** - * Current presentity in progress - * Own. - */ - HBufC16* iPresIdentity; - - /** - * Presence data - * Own - */ - CPresencePluginData* iPresenceData; - - /** - * XDM state - */ - TPluginXdmState iXdmState; - - /** - * Whether the request is completed - * Own. - */ - TBool iCompleted; - - /** - * Current operation - * Own. - */ - TPluginWatcherOperation iOperation; - - SIMPLE_UNIT_TEST( T_CPresencePluginWatcher ) - SIMPLE_UNIT_TEST( T_CPresencePluginXdmUtils ) - }; - -#endif // CPRESENCEPLUGINWATCHER_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginwatcherinfo.h --- a/simpledatamodeladapter/inc/presencepluginwatcherinfo.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINWATCHERINFO_H -#define CPRESENCEPLUGINWATCHERINFO_H - -#include -#include - -#include "presencelogger.h" - -/** - * CPresencePluginWatcherInfo - * - * watcher info. - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginWatcherInfo ): public CBase - { - public: - - /** - * Constructor. - * @param aId watcher id - * @param aSipId watcher SIP identity - */ - static CPresencePluginWatcherInfo* NewL( - const TDesC8& aId, - const TDesC& aSipId ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginWatcherInfo(); - - /** - * Destructor - * - * @since S60 3.2 - * @param none - * @return none - */ - void Destroy(); - - /** - * Match to given info - * - * @since S60 3.2 - * @param aId watcher id - * @param aSipId watcher SIP identity - * @return ETrue if current entity matches to the parameters - */ - TBool Match( const TDesC8& aId, - const TDesC& aSipId ); - /** - * SipId - * - * @since S60 3.2 - * @param none - * @return TPtrC, sip Uri - */ - TPtrC SipId(); - - static TInt LinkOffset(); - - private: - - CPresencePluginWatcherInfo( ); - - /** - * Constructor - * - * @since S60 3.2 - * @param aId watcher id - * @param aSipId watcher SIP identity - */ - void ConstructL( - const TDesC8& aId, - const TDesC& aSipId ); - - public: // data - - /** - * Linked list - * own - */ - TDblQueLink iLink; - - private: // data - - /** - * ident id - * own - */ - HBufC8* iId; - - /** - * sip id - * own - */ - HBufC* iSipId; - - SIMPLE_UNIT_TEST( T_SIMPLEDataModelAdapter ) - - }; - -#endif // CPRESENCEPLUGINWATCHERINFO_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginwinfo.h --- a/simpledatamodeladapter/inc/presencepluginwinfo.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINWINFO_H -#define CPRESENCEPLUGINWINFO_H - -#include -#include -#include - -#include "mpresencepluginconnectionobs.h" -#include "presencelogger.h" - -class MSimpleWinfo; -class TximpRequestId; -class MSimpleWinfoWatcher; -class MSimpleConnection; -class MximpProtocolConnectionHost; -class MPresencePluginConnectionObs; - -/** - * CPresencePluginWinfo - * - * Simple Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginWinfo ): public CBase, - public MSimpleWinfoObserver - { - public: - - /** - * Constructor. - * @param aObs callback for complete requests - * @param aConn Simple Engine connection - */ - static CPresencePluginWinfo* NewL( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginWinfo(); - - /** - * SetHost - * Set ximp Host - * - * @since S60 3.2 - * @param aHost ximp Host - */ - void SetHost( MXIMPProtocolConnectionHost* aHost ); - - /** - * SubscribeWinfoListL - * - * @since S60 3.2 - * @param aReqId ximp req id - */ - void SubscribeWinfoListL( TXIMPRequestId aReqId ); - - /** - * UnsubscribeWinfoListL - * - * @since S60 3.2 - * @param aReqId ximp req id - */ - void UnsubscribeWinfoListL( TXIMPRequestId aReqId ); - - private: - - /** - * Standard C++ constructor - * - * @param aObs, plugin connection observer - * @param aConn, SIMPLE connection - */ - CPresencePluginWinfo( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn ); - - /** - * Performs the 2nd phase of construction. - */ - void ConstructL( ); - - public: // from base class MSimpleWinfoObserver - - // Subscribe presence grant request list - - /** - * Defined in a base class - */ - void WinfoReqCompleteL( TInt aOpid, TInt aStatus ); - - /** - * Defined in a base class - */ - void WinfoTerminatedL( - TInt aOpid, TInt aReason ); - - /** - * Defined in a base class - */ - void WinfoNotificationL( MSimpleWinfo& aWinfo ); - - private: // Data - - /** - * ximp Plugin connection observer - * Own. - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * ximp Host. - * Not Own. - */ - MXIMPProtocolConnectionHost* iHost; - - /** - * SIMPLE engine connection - */ - MSimpleConnection& iConnection; - - /** - * SIMPLE engine winfo watcher. - * Own. - */ - MSimpleWinfoWatcher* iWinfoWatcher; - - /** - * ximp request id - * Own. - */ - TXIMPRequestId iXIMPId; - - /** - * Simple Engine request id - * Own. - */ - TInt iSimpleId; - - /** - * Subscribed - * Own. - */ - TBool iSubscribed; - - /** - * Winfo subscribe completed - * Own. - */ - TBool iWinfoCompleted; - - SIMPLE_UNIT_TEST( T_CPresencePluginAuthorization ) - SIMPLE_UNIT_TEST( T_CPresencePluginWinfo ) - SIMPLE_UNIT_TEST( CSimpleDataModelAdapterTestObserver ) - }; - -#endif // CPRESENCEPLUGINWINFO_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginxdmpresrules.h --- a/simpledatamodeladapter/inc/presencepluginxdmpresrules.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,413 +0,0 @@ -/* -* Copyright (c) 2006-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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINXDMPRESRULES_H -#define CPRESENCEPLUGINXDMPRESRULES_H - -#include -#include - -#include "presenceplugincommon.h" -#include "presencelogger.h" - -class CXdmEngine; -class CXdmDocument; -class CXdmDocumentNode; -class TRequestStatus; -class MPresRulesAsyncHandler; - -/** - * CPresencePluginXdmPresRules - * - * Simple Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginXdmPresRules ): public CActive - { - public: // Constructor and destructor - - /** - * XDM presrules state - */ - enum TPluginPresRulesXdmState - { - EStateIdle, - EGetXdmRules, - EUpdateXdmRules, - ECreateXdmPresrules - }; - - /** - * Operation state for rules update - */ - enum TPluginPresRulesUpdateState - { - EStateNoOperation, - EStateAddToWhiteList, - EStateAddToBlockList, - EStateRemoveFromWhiteList, - EStateRemoveFromBlackList, - EStateInitializeRules - }; - - /** - * Current operation - */ - enum TPluginPresRulesXdmOperation - { - ENoOperation, - ECancelDocument, - EXdmInit, - EXdmDeleteAll, - EXdmCancel, - EXdmGetRulesFromServer, - EXdmInitialPresDoc, - EXdmUpdateRules, - EXdmUpdateRulesFromServer - }; - - /** - * Two-phased constructor. - * - * @param aXmdId xdm settings id - * @param aLocalMode, local or server mode TRUE/FALSE - */ - static CPresencePluginXdmPresRules* NewL( const TInt aXmdId, TBool ); - - /** - * Two-phased constructor. - * - * @param aXmdId xdm settings id - * @param aLocalMode, local or server mode TRUE/FALSE - */ - static CPresencePluginXdmPresRules* NewLC( - const TInt aSettingId, - TBool aLocalMode ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginXdmPresRules( ); - - public: // Own functions - - /** - * Updates XDM rules into server - * - * @since S60 3.2 - * @param aHandler, MPresRulesAssyncHandler - * @return TInt, Error code - */ - TInt UpdateXdmRulesL( MPresRulesAsyncHandler* const aHandler ); - - /** - * Add white list tag to presrules document - * - * @since S60 3.2 - * @param aRoot, xml document root - * @return none - */ - void AddWhiteListL( CXdmDocumentNode* aRoot ); - - /** - * Add black list tag to presrules document - * - * @since S60 3.2 - * @param aRoot, xml document root - * @return none - */ - void AddBlackListL( CXdmDocumentNode* aRoot ); - - /** - * Get presence rules from server - * - * @since S60 3.2 - * @param aHandler, PresRules assync handler - * @return TInt, error code - */ - TInt GetXdmRulesL( MPresRulesAsyncHandler* const aHandler ); - - /** - * Making initial presence rules document - * - * @since S60 3.2 - * @param aHandler, PresRules assync handler - * @return none - */ - void MakeInitialRulesDocumentL( - MPresRulesAsyncHandler* const aHandler ); - - /** - * Remove entiry from blocked rules - * - * @since S60 3.2 - * @param aUri, entity url - * @aHandler, PresRules assync handler - * @return none - */ - void RemoveEntityBlockedRulesL( - const TDesC& aUri, - MPresRulesAsyncHandler* const aHandler ); - - /** - * Remove entity from presrules white list - * - * @since S60 3.2 - * @param aUri, entity url - * @aHandler, PresRules assync handler - * @return none - */ - void RemoveEntityFromWhiteListL( - const TDesC& aUri, - MPresRulesAsyncHandler* const aHandler ); - - /** - * Add entity to presrules white list - * - * @since S60 3.2 - * @param aUri, entity url - * @aHandler, PresRules assync handler - * @return none - */ - void AddEntityToWhiteListL( - const TDesC& aUri, - MPresRulesAsyncHandler* const aHandler ); - - /** - * Add entity to blocked rules - * - * @since S60 3.2 - * @param aUri, entity url - * @aHandler, PresRules assync handler - * @return none - */ - void AddEntityToBlockedRulesL( - const TDesC& aUri, - MPresRulesAsyncHandler* const aHandler ); - - /** - * Remove one from rule list - * - * @since S60 3.2 - * @param aRule, presence rule name - * @param aUri, entity url - * @return none - */ - void RemoveOneFromRuleL( - const TDesC& aRule, - const TDesC& aUri ); - - /** - * Add one to rule list - * - * @since S60 3.2 - * @param aRule, presence rule name - * @param aUri, entity url - * @return none - */ - void DoOneAddUserL( - const TDesC& aList, - const TDesC& aUri ); - - /** - * Update presence document from server - * - * @since S60 3.2 - * @param none - * @return TInt, error code - */ - TInt UpdateFromServerL( MPresRulesAsyncHandler* const aHandler ); - - private: - - /** - * Standard C++ constructor - * @param aXmdId, XDM settings id - */ - CPresencePluginXdmPresRules( const TInt aXmdId ); - - /** - * Performs the 2nd phase of construction. - * - * @param aXmdId, xdm settings id - * @param aLocalMode, clinet localmode state - */ - void ConstructL( const TInt aXmdId, TBool aLocalMode ); - - private: // own functions - - /** - * GetRulesL - * - * @since S60 3.2 - * @param aRuleArray, rule array - * @return TBool, rules found - */ - CXdmDocumentNode* GetRulesL( const TDesC& aRule, - RPointerArray& aRuleArray ); - - /** - * Remove rule group from pres-rules document - * - * @since S60 3.2 - * @param aRule, presence rule name - * @return none - */ - void RemoveRuleGroupL( const TDesC& aRule ); - - /** - * Search list under parent - * - * @since S60 3.2 - * @param aParent. document node - * @param aName, name of search - * @return none - */ - CXdmDocumentNode* SearchListUnderParentL( - CXdmDocumentNode* aParent, - const TDesC& aName ); - - /** - * Create root if need - * - * @since S60 3.2 - * @param none - * @return none - */ - void CreateRootIfNeededL(); - - static void ResetAndDestroy1( TAny* aPointerArray ); - static void ResetAndDestroy2( TAny* aPointerArray ); - - /** - * Find rule from presrules xml - * - * @since S60 3.2 - * @param aRule, rule name - * @return TBool - */ - TBool FindRuleL( const TDesC& aRule, TBool aCreateRule ); - - /** - * Check if one already exist - * - * @since S60 3.2 - * @param aList, listname - * @param aUri, entity url - * @return TBool - */ - TBool CheckIfOneExistL( - const TDesC& aRule, - const TDesC& aUri ); - - /** - * Compare uri to attribute without prefix. Returns ETrue if match. - * - * @since S60 5.0 - * @param aUri, entity url - * @parram aAttribute url attribute - * @return TBool - */ - TBool CompareUriWithoutPrefixL( - const TDesC& aUri, const TDesC& aAttribute ); - - protected: // from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - - private: // Data - - /** - * XDM Engine - * Own. - */ - CXdmEngine* iXdmEngine; - - /** - * XDM Settings id - * Own. - */ - TInt iSettingsId; - - /** - * Presence rules document - * Own - */ - CXdmDocument* iPresRulesDoc; - - /** - * Current state - * Own. - */ - TPluginPresRulesXdmState iXdmState; - - /** - * TPluginPresRulesUpdateState - * Own. - */ - TPluginPresRulesUpdateState iRulesUpdateState; - - /** - * client statutus. - * Not own. - */ - TRequestStatus* iClientStatus; - - /** - * Whether Presence XDM is up-to-date - * Own. - */ - TBool iPresXdmOk; - - /** - * Entity uri - * own - */ - HBufC* iEntityUri; - - /** - * Async request - * Own. - */ - TPluginPresRulesXdmOperation iAsyncReq; - - /** - * Async handler - * Own. - */ - MPresRulesAsyncHandler* iAsyncHandler; - - SIMPLE_UNIT_TEST( T_CPresencePluginXdmPresRules ) - }; - -#endif // CPRESENCEPLUGINXDMPRESRULES_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presencepluginxdmutils.h --- a/simpledatamodeladapter/inc/presencepluginxdmutils.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,655 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef CPRESENCEPLUGINXDMUTILS_H -#define CPRESENCEPLUGINXDMUTILS_H - -#include -#include -#include -#include "presenceplugincommon.h" -#include "mpresrulesasynchandler.h" -#include "presencelogger.h" -#include "presenceplugincontactsobs.h" - -class CPresencePluginXdmPresRules; -class TXIMPRequestId; -class MXIMPIdentity; -class MXIMPObjectCollection; -class CXdmEngine; -class CXdmDocument; -class CXdmDocumentNode; -class TRequestStatus; -class MPresencePluginConnectionObs; - -/** - * CPresencePluginXdmUtils - * - * Simple Engine Connection - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginXdmUtils ) : public CActive, - public MPresRulesAsyncHandler, - public MPresencePluginContactsObs - { - public: // Constructor and destructor - - /** - * Active object asynch states - */ - enum TPluginXdmState - { - EStateIdle, - /** Get XDM lists 1*/ - EGetXdmLists, - /** Create XDM lists */ - ECreateXdmLists, - /** Get XDM lists only, no rules later */ - EGetXdmListsOnly, - /** Create XDM lists only, no rules later */ - ECreateXdmListsOnly, - /** Get RLS service */ - EGetRlsServices, - /** Create RLS service */ - ECreateRlsServices, - /** Update RLS service */ - EUpdateRlsServices, - /** Get rules from server for GrantPresenceForPresentity */ - EGetXdmRules, - /** Update rules to server for GrantPresenceForPresentity */ - EUpdateXdmRules, - /** Update XDM List */ - EUpdateXdmList, - /** Cancel XDM document operation */ - ECancelDocument, - /** Get Block list */ - EGetXdmBlockList, - /** Create presence rules */ - ECreateXdmRules, - /** Subscripe block list */ - ESubsBlockList, - EGetResourceListFromServer, - EUpdateBlockedContactPresenceCache - }; - - /** - * Current operation - */ - enum TPluginXdmOperation - { - ENoOperation, - EXdmInit, - EXdmDeleteAll, - EXdmCancel, - EXdmAddUserToGroup, - EXdmAddGroupToGroup, - EXdmRemoveUserFromGroup, - EXdmRemoveGroupFromGroup, - EXdmGrantForAll, - EXdmWithdrawFromAll, - EXdmGetBlockedList, - EXdmCreateGroup, - EXdmDeleteGroup, - EXdmRlsFetch, - EXdmRlsAdd, - EXdmRlsRemove, - EXdmCommitXdm, - EXdmCommitRls, - EXdmGetBuddyList, - EXdmAddUserToRules, - EXdmRemoveUserFromRules - }; - - /** - * Operation state for rules update - */ - enum TPluginPresRulesState - { - EStateNoOperation, - EStateAddToWhiteList, - EStateAddToBlockList, - EStateRemoveFromWhiteList, - EStateRemoveFromBlackList, - EStateInitializeRules - }; - - /** - * NewL - * @param aObs callback for complete requests - * @param aXdmId XDm settings id - */ - static CPresencePluginXdmUtils* NewL( - MPresencePluginConnectionObs& aObs, - TInt aXmdId, - TBool aLocalMode ); - - virtual ~CPresencePluginXdmUtils(); - - /** - * Initialize XDMS and Presence XDM structures in network - * - * @since S60 3.2 - * @param aStatus Request status of the caller - */ - void InitializeXdmL( TRequestStatus& aStatus ); - - /** - * Initialize XDMS in network - * - * @since S60 3.2 - * @param aStatus Request status of the caller - */ - void InitializeXdmsOnlyL( TRequestStatus& aStatus ); - - /** - * Initialize Presence rules document only - * - * @since S60 3.2 - * @param aStatus Request status of the caller - */ - void InitializePresRulesL( ); - - /** - * Add entity to granted list - * - * @since S60 3.2 - * @param aUri, entity URL - * @param aStatus, request status - * @return none - */ - void AddEntityToGrantedL( - const TDesC& aUri, - TRequestStatus& aStatus ); - - /** - * Remove entity from granted list - * - * @since S60 3.2 - * @param aUri, entity URL - * @param aStatus, request status - * @return none - */ - void RemoveEntityFromGrantedL( - const TDesC& aUri, - TRequestStatus& aStatus ); - - /** - * Remove entity from blocked list - * - * @since S60 3.2 - * @param aName, entity URL - * @param aStatus, request status - * @return none - */ - void RemoveEntityFromBlockedL( - const TDesC& aName, - TRequestStatus& aStatus ); - - /** - * Add entity to blocked list - * - * @since S60 3.2 - * @param aUri, entity URL - * @param aStatus, request status - * @return none - */ - void AddEntityToBlockedL( - const TDesC& aUri, - TRequestStatus& aStatus ); - - /** - * Get (subscribe) Block List - * - * @since S60 3.2 - * @param aMembers, member list array - * @return none - */ - void SubscribeBlockListL( RPointerArray& aMembers ); - - /** - * Get (subscribe) Buddy List - * - * @since S60 3.2 - * @param aMembers, member list array - * @return none - */ - void SubscribeBuddyListL( RPointerArray& aMembers ); - - /** - * GetUserListsL - * - * @since S60 3.2 - * @param aList, List name - * @param aColl, XIMP object collection - */ - void GetEntitiesInListL( - const TDesC& aList, MXIMPObjectCollection& aColl ); - - /** - * Add identity to virtual list - * - * @since S60 3.2 - * @param aList, List name - */ - void AddIdentityToVirtualListL( - const TDesC& aList ); - - /** - * CheckXdmDoc - * - * @since S60 3.2 - * @param none - * @return TBool, state of xdm documents - */ - TBool CheckXdmDoc(); - - public: //From assync - - /** - * Defined in a base class - */ - void HandlePresUpdateDocumentL( TInt aErrorCode ); - - /** - * Defined in a base class - */ - void HandlePresUpdateCancelL( TInt aErrorCode ); - - private: - - /** - * Standard C++ constructor - * - * @param aObs, plugin connection observer - * @param aXmdId, XDM settings id - */ - CPresencePluginXdmUtils( - MPresencePluginConnectionObs& aObs, - TInt aXmdId, - TBool aLocalmode ); - - /** - * Performs the 2nd phase of construction. - */ - void ConstructL( ); - - protected:// from base class CActive - - /** - * Defined in a base class - */ - void RunL(); - - /** - * Defined in a base class - */ - TInt RunError( TInt aError ); - - /** - * Defined in a base class - */ - void DoCancel(); - - protected: // from MPresencePluginContactsObs - - /** - * Defined in a base class - */ - void RequestComplete( TAny* aResult, - TPresenceContactsOperation aOperation, TInt aError ); - - private: - - /** - * DoUpdateXdmLists - * - * @since S60 3.2 - * @param aMyStatus, RunL status - * @return aOrigState, xdm state - */ - void DoUpdateXdmListsL( TInt aMyStatus, - TPluginXdmState aOrigState ); - - /** - * DoGetXdmLists - * - * @since S60 3.2 - * @param aMyStatus, RunL status - * @return aOrigState, xdm state - */ - void DoGetXdmListsL( TInt aMyStatus, - TPluginXdmState aOrigState ); - - /** - * DoCreateXdmLists - * - * @since S60 3.2 - * @param aMyStatus, RunL status - * @return aOrigState, xdm state - */ - void DoCreateXdmListsL( TInt aMyStatus, - TPluginXdmState aOrigState, - TBool aOnlyResourceList ); - - /** - * Search list under parent - * - * @since S60 3.2 - * @param none - * @return none - */ - CXdmDocumentNode* SearchListUnderParentL( - CXdmDocumentNode* aParent, - const TDesC& aName ); - - /** - * Complete client request - * - * @since S60 3.2 - * @param aStatus, client status - * @return none - */ - void CompleteClientReq( TInt aStatus ); - - /** - * Get XDM lists - * - * @since S60 3.2 - * @param aCreateRules, create new rule document - * @param aLocalMode, use localmode - * @return none - */ - void GetXdmListsL( TBool aCreateRules, TBool aLocalMode ); - - /** - * Create XDM list document model - * - * @since S60 3.2 - * @param aCreateRules, create new rule document - * @return none - */ - void CreateXdmListsL( TBool aCreateRules ); - - /** - * Update document to server - * - * @since S60 3.2 - * @param none - * @return none - */ - void UpdateXdmToServerL(); - - /** - * Updates XDMS reource lists into server - * - * @since S60 3.2 - * @param none - * @return none - */ - void UpdateXdmsL(); - - /** - * Updates XDM rules - * - * @since S60 3.2 - * @param none - * @return none - */ - void UpdateXdmRulesL(); - - /** - * Get XDM rules - * - * @since S60 3.2 - * @param none - * @return none - */ - void GetXdmRulesL(); - - /** - * Handle presence document - * - * @since S60 3.2 - * @param aList, list name - * @param aUser, entity name - * @return none - */ - void DoHandlePresUpdateDocumentL( TInt aErrorCode ); - - /** - * Add User to resource list - * - * @since S60 3.2 - * @param aList, list name - * @param aName, url - */ - void DoAddUserToListL( - const TDesC& aList, - const TDesC& aName ); - - /** - * Remove user from list - * - * @since S60 3.2 - * @param aList, list name - * @param aUser, entity name - * @return none - */ - void DoRemoveUserFromListL( - const TDesC& aList, - const TDesC& aName ); - - /** - * Get member list - * - * @since S60 3.2 - * @param aList, list name - * @param aMembers, member array - * @return none - */ - void DoGetListMembersL( - const TDesC& aList, - RPointerArray& aMembers ); - - /** - * Get buddy list - * - * @since S60 3.2 - * @param aList, list name - * @return XDM document - */ - CXdmDocumentNode* DoGetBuddyListL( const TDesC& aParent); - - /** - * Get buddy list - * - * @since S60 3.2 - * @param aList, list name - * @parma aBuddyList, xdm document node - * @return XDM document - */ - CXdmDocumentNode* DoGetUserListL( - const TDesC& aList, - CXdmDocumentNode* aBuddyList ); - - /** - * Check XDM errors - * - * @since S60 3.2 - * @param aMyStatus, XDM error code - * @return errorcode - */ - TInt CheckIfErrorL( TInt aMyStatus ); - - /** - * Check if entity already exist - * - * @since S60 3.2 - * @param aList, listname - * @param aUri, entity url - * @return TBool - */ - TBool CheckIfEnityExistL( const TDesC& aList, const TDesC& aUri ); - - /** - * Update document from server - * - * @since S60 3.2 - * @param none - * @return none - */ - void UpdateFromServerL(); - - /** - * Compare uri to attribute without prefix. Returns ETrue if match. - * - * @since S60 5.0 - * @param aUri, entity url - * @parram aAttribute url attribute - * @return TBool - */ - TBool CompareUriWithoutPrefixL( - const TDesC& aUri, const TDesC& aAttribute ); - - /** - * Update blocked contact status to Presence Cache - * - * @since S60 5.0 - * @param aMyStatus, error status - */ - void DoUpdateBlockedContactPresenceCacheL( - TInt aMyStatus ); - - private: // Data - - /** - * ximp Plugin connection observer - * Own. - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * XDM Settings id - * Own. - */ - TInt iSettingsId; - - /** - * ximp request id - * Own. - */ - TXIMPRequestId iximpId; - - /** - * ximp request id for own requests - * Own. - */ - TXIMPRequestId iximpIdOwn; - - /** - * Simple Engine request id - * Own. - */ - TInt iSimpleId; - - /** - * XDM Engine - * Own. - */ - CXdmEngine* iXdmEngine; - - /** - * XDM document for resource-lists - * Own. - */ - CXdmDocument* iXdmDoc; - - /** - * Current state - * Own. - */ - TPluginXdmState iXdmState; - - /** - * Current operation - * Own. - */ - TPluginXdmOperation iOperation; - - /** - * Whether Presence XDM is up-to-date - * Own. - */ - TBool iPresXdmOk; - - /** - * Whether XDM is up-to-date - * Own. - */ - TBool iXdmOk; - - /** - * client statutus. - * Not own. - */ - TRequestStatus* iClientStatus; - - /** - * XDM presence rules handling - * own. - */ - CPresencePluginXdmPresRules* iXdmPresRules; - - /** - * Entity uri - * Own. - */ - HBufC* iEntityUri; - - /** - * TPluginPresRulesUpdateState - * Own. - */ - TPluginPresRulesState iRulesUpdateState; - - /** - * XDM localmode - * Own. - */ - TBool iLocalMode; - - /** - * Request results. - * Is contact blocked request - */ - TBool iPresenceContactsAsyncReqResult; - - /* - * Initial blocked contact list - */ - RPointerArray iBlockedContacts; - - SIMPLE_UNIT_TEST( T_CPresencePluginGroups ) - SIMPLE_UNIT_TEST( T_CPresencePluginWatcher ) - SIMPLE_UNIT_TEST( T_CPresencePluginAuthorization ) - SIMPLE_UNIT_TEST( T_CPresencePluginXdmUtils ) - }; - -#endif // CPRESENCEPLUGINXDMUTILS_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/install/sis/create_sis.bat --- a/simpledatamodeladapter/install/sis/create_sis.bat Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -rem -rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem - -createsis create -key H:\RD_RootCA\rd-key.pem -cert H:\RD_RootCA\rd.cer simpledatamodeladapter.pkg \ No newline at end of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/install/sis/simpledatamodeladapter.SIS Binary file simpledatamodeladapter/install/sis/simpledatamodeladapter.SIS has changed diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/install/sis/simpledatamodeladapter.pkg --- a/simpledatamodeladapter/install/sis/simpledatamodeladapter.pkg Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -; -; Copyright (c) 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: -; -&EN - -;Header -#{"Presence adapter"},(0x10207FE0),1,22,1, TYPE=SA - - -;Series 60 v3.0 -[0x101f7961], 0, 0, 0, {"Series60ProductID"} - -;Localised Vendor name -%{"Nokia"} - -; Non-localised vendor name -:"Nokia Corporation" - -;Files to install - - -;ECOM PLUGINS: - -; SIMPLE DATAMODEL ADAPTER: -"\epoc32\release\armv5\udeb\presenceplugin.dll" -"!:\sys\bin\presenceplugin.dll" -"\epoc32\data\Z\Resource\Plugins\presenceplugin.RSC" -"C:\Resource\Plugins\presenceplugin.RSC" - -;test app -;"\epoc32\release\armv5\urel\HelloWorld.exe" -"!:\sys\bin\HelloWorld.exe" -;"\epoc32\data\Z\Resource\Apps\HelloWorld.RSC" -"C:\Resource\HelloWorld.RSC" - -;UI stuff -;"\epoc32\release\armv5\udeb\sipvoipcontactsextension.dll" -"C:\sys\bin\sipvoipcontactsextension.dll" -;"\epoc32\data\Z\Resource\sipvoipcontactsextensionres.Rsc" -"C:\Resource\sipvoipcontactsextensionres.Rsc" -;"\epoc32\data\Z\Resource\Plugins\sipvoipcontactsextension.RSC" -"C:\Resource\Plugins\sipvoipcontactsextension.RSC" -;"\epoc32\data\Z\Resource\apps\sipvoipcontactsextensiondefaulticons.mif" -"C:\Resource\Apps\sipvoipcontactsextensiondefaulticons.mif" -;"\epoc32\data\Z\Resource\apps\svcedefaulticons.mif" -"C:\Resource\Apps\svcedefaulticons.mif" - -;Extension manager stuff -;"\epoc32\release\armv5\udeb\ExtensionManager.dll" -"!:\sys\bin\ExtensionManager.dll" -;"\epoc32\data\Z\Resource\ExtensionManagerRes.rsc" -"C:\Resource\Plugins\ExtensionManagerRes.rsc" - -; sipconnectionprovider -;"\epoc32\release\armv5\udeb\sipconnectionprovider.dll"-"!:\sys\bin\sipconnectionprovider.dll" -;"\epoc32\data\Z\resource\plugins\sipconnectionprovider.rsc"-"!:\resource\plugins\sipconnectionprovider.rsc" - - - - diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/rom/simpledatamodeladapter.iby --- a/simpledatamodeladapter/rom/simpledatamodeladapter.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 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: ROM definition file. -* -*/ - - -#ifndef SIMPLEDATAMODELADAPTER_IBY -#define SIMPLEDATAMODELADAPTER_IBY - -#ifdef RD_VOIP_REL_2_2 - -ECOM_PLUGIN(presenceplugin.dll, 10275464.RSC) - -#endif // RD_VOIP_REL_2_2 - -#endif // SIMPLEDATAMODELADAPTER_IBY diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/data/20022d58.rss --- a/simpledatamodeladapter/simpleimplugin/data/20022d58.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* Copyright (c) 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: Resource definitions for project Simple IM Plugin -* -*/ - -#include -#include -#include "simpleimpluginuids.hrh" - -// --------------------------------------------------------------------------- -// REGISTRY_INFO -// ecom plugin resource info -// --------------------------------------------------------------------------- -// -RESOURCE REGISTRY_INFO theInfo - { - resource_format_version = RESOURCE_FORMAT_VERSION_2; - - dll_uid = KDllUidSimpleImPlugin; - - // Declare array of interface info - interfaces = - { - INTERFACE_INFO - { - // UID of interface that is implemented - interface_uid = IM_IF_ID_PROTOCOL_IM_FEATURES; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KImplUidSimpleImPlugin; - version_no = 1; - display_name = "simple im plugin"; - default_data = 2219; - opaque_data = ""; - rom_only = 0; - } - }; - } - }; - } - -// End of File diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/group/bld.inf --- a/simpledatamodeladapter/simpleimplugin/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* -* Copyright (c) 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: Build information file for project simpleimplugin. -* -*/ - -#include - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS -../rom/simpleimplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(simpleimplugin.iby) - -PRJ_MMPFILES -simpleimplugin.mmp - -PRJ_TESTMMPFILES - diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/group/simpleimplugin.mmp --- a/simpledatamodeladapter/simpleimplugin/group/simpleimplugin.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 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: Project definition file for project simpleimplugin. -* -*/ - -#include -#include - -TARGET simpleimplugin.dll -TARGETTYPE PLUGIN -UID 0x10009D8D 0x20022D58 - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -SOURCEPATH ../src -SOURCE simpleimconversation.cpp -SOURCE simpleimfeatures.cpp -SOURCE simpleimpluginimplementationproxy.cpp - -SOURCEPATH ../data -START RESOURCE 20022d58.rss -TARGET simpleimplugin.rsc -END // RESOURCE - -USERINCLUDE ../inc -USERINCLUDE ../../inc - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom - -LIBRARY cch.lib -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY esock.lib -LIBRARY insock.lib -LIBRARY charconv.lib -LIBRARY simpleengine.lib -LIBRARY serviceprovidersettings.lib -LIBRARY imcacheclient.lib diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/inc/simpleimconversation.h --- a/simpledatamodeladapter/simpleimplugin/inc/simpleimconversation.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,290 +0,0 @@ -/* -* Copyright (c) 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: Provides IM sending and receiving services. -* -*/ - - -#ifndef C_CSIMPLEIMCONVERSATION_H -#define C_CSIMPLEIMCONVERSATION_H - -#include -#include -#include -#include -#include -#include -#include - -class CIMCacheFactory; -class MIMCacheUpdater; -class MPresencePluginConnectionObs; -class MSimpleConnection; -class MProtocolImDataHost; -class MXIMPIdentity; - -/** - * This class is used for sending and receiving instant messages. - * A client sends the message and waits for notification of send process - * success. Client is notified with - * MPresencePluginConnectionObs::CompleteReq(). - * - * There can be only one message in the sending que at the time. - * Otherwise DoSendMessageL() method leaves with KErrInUse. - * - * Messages received from the other end are handled in this class and - * delivered to the client. Client gets messages through - * MProtocolImConversationDataHost::HandleNewTextMessageL(). - * - * @lib simpleimplugin.dll - * @since S60 v5.1 - */ -NONSHARABLE_CLASS( CSimpleImConversation ) : public CBase, - public MProtocolImConversation, - public MSimpleInstantMsgObserver - { - -public: - - /** - * Two-phased constructor. - * - * @param aObs Callback for complete requests. - * @param aConn Simple engine connection. - */ - static CSimpleImConversation* NewL( - MPresencePluginConnectionObs& aObs, MSimpleConnection& aConn, - TUint aServiceId ); - - /** - * Destructor. - */ - virtual ~CSimpleImConversation(); - -public: - - /** - * Sets current IM data host. - * - * @since S60 v5.1 - * @param aHost IM data host. - */ - void SetHost( MProtocolImDataHost& aHost ); - -public: //from MXIMPBase - - /** - * From MXIMPBase. - * @see MXIMPBase. - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ); - - /** - * From MXIMPBase. - * @see MXIMPBase. - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const; - - /** - * From MXIMPBase. - * @see MXIMPBase. - */ - TInt32 GetInterfaceId() const; - -public: // From MProtocolImConversation - - /** - * From MProtocolImConversation. - * @see MProtocolImConversation. - */ - void DoSendMessageL( - const MImConversationInfo& aImMessage, - TXIMPRequestId aReqId ); - - /** - * From MProtocolImConversation. - * @see MProtocolImConversation. - */ - void DoForwardMessageL( - const MImConversationInfo& aImMessage, - TXIMPRequestId aReqId); - - /** - * From MProtocolImConversation. - * @see MProtocolImConversation. - */ - void DoSendMessageToGroupL( - const MImConversationInfo& aImMessage, - const TDesC* aGroupId,TXIMPRequestId aReqId ); - - /** - * From MProtocolImConversation. - * @see MProtocolImConversation. - */ - TXIMPRequestId DoBlockUsersL( - const MDesCArray* aUserIds, - TXIMPRequestId aReqId); - - /** - * From MProtocolImConversation. - * @see MProtocolImConversation. - */ - TXIMPRequestId DoUnBlockUsersL( - const MDesCArray* aUserIds, - TXIMPRequestId aReqId ); - - /** - * From MProtocolImConversation. - * @see MProtocolImConversation. - */ - void DoGetBlockedListRequestL( - const MXIMPIdentity& aImMessageId, - TXIMPRequestId aReqId ); - - /** - * From MProtocolImConversation. - * @see MProtocolImConversation. - */ - void DoGetMessageListL( - const MXIMPIdentity& aImMessageId, - const TDesC* aGroupId, - const TInt aMessageCount, - TBool aDeliveryReportWanted, - TXIMPRequestId aReqId); - - /** - * From MProtocolImConversation. - * @see MProtocolImConversation. - */ - void DoRejectMessageL( - const MXIMPIdentity& aImMessageId, - const TDesC& aMessageID, - TXIMPRequestId aReqId ); - -public: // From MSimpleInstantMsgObserver - - /** - * From MSimpleInstantMsgObserver. - * @see MSimpleInstantMsgObserver. - */ - void SendInstantMsgReqComplete( TInt aOpid, TInt aStatus ); - - /** - * From MSimpleInstantMsgObserver. - * @see MSimpleInstantMsgObserver. - */ - void HandleReceiveTextMessage( TPtrC8 aFrom, TPtrC8 aContent ); - -private: // constructor and the Symbian second-phase constructor - - CSimpleImConversation( MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - TUint aServiceId ); - - void ConstructL( ); - -private: - - /** - * Calls MXIMPProtocolConnectionHost callback. - * - * @since S60 v5.1 - * @param aStatus Error status. - */ - void CompleteXimpReq( TInt aStatus ); - - /** - * Leaveable version of HandleReceiveTextMessage. - * - * @see MSimpleInstantMsgObserver - */ - void DoHandleReceiveTextMessageL( TPtrC8 aFrom, TPtrC8 aContent ); - - /** - * Resolves username to be used. - * - * @since S60 v5.1 - * @param aServiceId Service identifier. - * @param aUserName On return contains resolved user name. - */ - void ResolveUsernameL( TUint aServiceId, RBuf& aUserName ) const; - - /** - * Creates IM cache updater if not yet created. - * - * @since S60 v5.1 - */ - void CreateImCacheUpdaterIfNeededL(); - -private: // Data - - /** - * XIMP Plugin connection observer. - * Not own. - */ - MPresencePluginConnectionObs* iConnectionObs; - - /** - * SIMPLE engine connection. - * Not Own. - */ - MSimpleConnection* iConnection; - - /** - * Instant message handler instance. - * Own. - */ - MSimpleInstantMessage* iImHandler; - - /** - * Request identifier. - */ - TXIMPRequestId iXimpId; - - /** - * Current request status; completed or not. - */ - TBool iCompleted; - - /** - * Protocol IM data host. - * Not own. - */ - MProtocolImDataHost* iHost; - - /** - * IM cache factory. - * Own. - */ - CIMCacheFactory* iImCacheFactory; - - /** - * IM cache updater. - * Owned by factory. - */ - MIMCacheUpdater* iImCacheUpdater; - - /** - * ServiceId of current - * service - */ - TUint iServiceId; - - }; - -#endif // C_CSIMPLEIMCONVERSATION_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/inc/simpleimfeatures.h --- a/simpledatamodeladapter/simpleimplugin/inc/simpleimfeatures.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,173 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - - -#ifndef C_CSIMPLEIMFEATURES_H -#define C_CSIMPLEIMFEATURES_H - -#include -#include - -class CSimpleImConversation; -class MPresencePluginConnectionObs; -class MSimpleConnection; - -/** - * Main class of XIMP FW plugin providing SIP IM feature. - * - * @lib simpleimplugin.dll - * @since S60 v5.1 - */ -NONSHARABLE_CLASS( CSimpleImFeatures ) : public CProtocolImFeatures -{ -public: - - /** - * This class encapsulates SIP IM plugin initialization parameters. - * - * @lib simpleimplugin.dll - * @since S60 v5.1 - */ - class TSimpleImPluginInitParams - { - public: - - /** - * Constructor. - * @param aObs Presence plugin connection observer. - * @param aConn Simple engine connection. - */ - TSimpleImPluginInitParams( MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, TUint aServiceId ) : iObserver( aObs ), - iConnection( aConn ), iServiceId( aServiceId ) {}; - - public: - - /** - * Presence plugin connnection observer. - * Not own. - */ - MPresencePluginConnectionObs& iObserver; - - /** - * Simple engine connection. - * Not own. - */ - MSimpleConnection& iConnection; - - /** - * Service identifier. - */ - TUint iServiceId; - }; - - /** - * Constructor. - * @param aInitParams Plugin initialization parameters. - */ - static CSimpleImFeatures* NewL( TAny* aInitParams ); - - /** - * Standard C++ destructor. - */ - virtual ~CSimpleImFeatures(); - -private: - - CSimpleImFeatures(); - - void ConstructL( TAny* aInitParams ); - -public: // From MXIMPBase - - /** - * From MXIMPBase. - * @see MXIMPBase. - */ - TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ); - - /** - * From MXIMPBase. - * @see MXIMPBase. - */ - const TAny* GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const; - - /** - * From MXIMPBase. - * @see MXIMPBase. - */ - TInt32 GetInterfaceId() const; - -public : // From CProtocolImFeatures - - /** - * From CProtocolImFeatures. - * @see CProtocolImFeatures. - */ - MProtocolImGroup& ImGroup(); - - /** - * From CProtocolImFeatures. - * @see CProtocolImFeatures. - */ - MProtocolImConversation& ImConversation(); - - /** - * From CProtocolImFeatures. - * @see CProtocolImFeatures. - */ - MProtocolImInvitation& ImInvitation(); - - /** - * From CProtocolImFeatures. - * @see CProtocolImFeatures. - */ - MProtocolImSearch& ImSearch(); - - /** - * From CProtocolImFeatures. - * @see CProtocolImFeatures. - */ - void SetHost( MProtocolImDataHost& aHost ); - - /** - * From CProtocolImFeatures. - * @see CProtocolImFeatures. - */ - TInt SupportedSubInterfaces() const; - -private : // data members - - /** - * IM conversation. - * Own. - */ - CSimpleImConversation* iImConversation; - - /** - * Protocol IM data host. - * Not own. - */ - MProtocolImDataHost* iHost; - - }; - -#endif // C_CSIMPLEIMFEATURES_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/inc/simpleimlogger.h --- a/simpledatamodeladapter/simpleimplugin/inc/simpleimlogger.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - - -#ifndef SIMPLEIMLOGGER_H -#define SIMPLEIMLOGGER_H - -#ifdef _DEBUG - #include - #define _DEBUG_SIMPLE_IM_PLUGIN -#endif - -#ifdef _DEBUG_SIMPLE_IM_PLUGIN - #define DP_IMP( a ) \ - { _LIT( KFormatString, a ); RDebug::Print( KFormatString ); } - #define DP_IMP2( a, b ) \ - { _LIT( KFormatString, a ); RDebug::Print( KFormatString, b ); } - #define DP_IMP3( a, b, c ) \ - { _LIT( KFormatString, a ); RDebug::Print( KFormatString, b, c ); } -#else - #define DP_IMP( a ); - #define DP_IMP2( a, b ); - #define DP_IMP3( a, b, c ); -#endif - -#endif // SIMPLEIMLOGGER_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/inc/simpleimplugindefs.h --- a/simpledatamodeladapter/simpleimplugin/inc/simpleimplugindefs.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -/* -* Copyright (c) 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: Common definitions for SIP IM plugin. -* -*/ - - -#ifndef SIMPLEIMPLUGINDEFS_H -#define SIMPLEIMPLUGINDEFS_H - -#include - -_LIT( KSimpleImPluginName, "SimpleImPlugin" ); - -#endif // SIMPLEIMPLUGINDEFS_H diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/inc/simpleimpluginuids.hrh --- a/simpledatamodeladapter/simpleimplugin/inc/simpleimpluginuids.hrh Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* -* Copyright (c) 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: Resource headers for project simpleimplugin. -* -*/ - -#ifndef SIMPLEIMPLUGINUIDS_HRH -#define SIMPLEIMPLUGINUIDS_HRH - -/** - * Plugin DLL UID - */ -#define KDllUidSimpleImPlugin 0x20022D58 - -/** - * Interface Implementation UIDs - */ -#define KImplUidSimpleImPlugin 0x20022D59 - -#endif // SIMPLEIMPLUGINUIDS_HRH diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/rom/simpleimplugin.iby --- a/simpledatamodeladapter/simpleimplugin/rom/simpleimplugin.iby Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 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: ROM definition file. -* -*/ - -#ifndef SIMPLEIMPLUGIN_IBY -#define SIMPLEIMPLUGIN_IBY - -#ifdef RD_VOIP_REL_2_2 - -ECOM_PLUGIN(simpleimplugin.dll, 20022D58.RSC) - -#endif // RD_VOIP_REL_2_2 - -#endif // SIMPLEIMPLUGIN_IBY diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/src/simpleimconversation.cpp --- a/simpledatamodeladapter/simpleimplugin/src/simpleimconversation.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,487 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "simpleimconversation.h" -#include "presenceplugincommon.h" -#include "mpresencepluginconnectionobs.h" -#include "simpleimplugindefs.h" -#include "simpleimlogger.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::CPresencePluginGroups -// --------------------------------------------------------------------------- -// -CSimpleImConversation::CSimpleImConversation( - MPresencePluginConnectionObs& aObs, MSimpleConnection& aConn, - TUint aServiceId ): - iConnectionObs( &aObs ), - iConnection( &aConn ), - iServiceId( aServiceId ) - { - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::NewL -// --------------------------------------------------------------------------- -// -CSimpleImConversation* CSimpleImConversation::NewL( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, TUint aServiceId) - { - CSimpleImConversation* self = - new( ELeave ) CSimpleImConversation ( aObs, aConn, aServiceId ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::ConstructL() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::ConstructL() - { - DP_IMP("CSimpleImConversation::ConstructL") - - iImHandler = TSimpleFactory::NewInstantMessageL( - *iConnection, *this ); - - iImCacheFactory = CIMCacheFactory::InstanceL(); - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::~CSimpleImConversation -// --------------------------------------------------------------------------- -// -CSimpleImConversation::~CSimpleImConversation() - { - DP_IMP("CSimpleImConversation::~CSimpleImConversation") - - if ( iImHandler ) - { - DP_IMP("Close the msg handler") - iImHandler->Close(); - } - - // Release the imcache, all the conversation will lost here - if ( iImCacheFactory ) - { - DP_IMP("Release IM Cache") - CIMCacheFactory::Release(); - iImCacheFactory = NULL; - } - - iImCacheUpdater = NULL; - iHost = NULL; - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::SetHost -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::SetHost( MProtocolImDataHost& aHost ) - { - DP_IMP("CSimpleImConversation::SetHost") - - iHost = &aHost; - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CSimpleImConversation::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - DP_IMP("CSimpleImConversation::GetInterface") - - if ( MProtocolImConversation::KInterfaceId == aInterfaceId ) - { - return this; - } - - if ( MXIMPBase::EPanicIfUnknown == aOptions ) - { - User::Panic( KSimpleImPluginName, KErrExtensionNotSupported ); - } - - return NULL; - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::GetInterface() const -// --------------------------------------------------------------------------- -// -const TAny* CSimpleImConversation::GetInterface( - TInt32 aInterfaceId, TIfGetOps aOptions ) const - { - DP_IMP("CSimpleImConversation::GetInterface") - - if ( MProtocolImConversation::KInterfaceId == aInterfaceId ) - { - // caller wants this interface - return const_cast( this ); - } - - if ( MXIMPBase::EPanicIfUnknown == aOptions ) - { - User::Panic( KSimpleImPluginName, KErrExtensionNotSupported ); - } - - return NULL; - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::GetInterfaceId() const -// --------------------------------------------------------------------------- -// -TInt32 CSimpleImConversation::GetInterfaceId() const - { - DP_IMP("CSimpleImConversation::GetInterfaceId") - - return MProtocolImConversation::KInterfaceId; - } - - -// --------------------------------------------------------------------------- -// From MProtocolImConversation. -// CSimpleImConversation::DoSendMessageL() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::DoSendMessageL( - const MImConversationInfo& aImMessage, - TXIMPRequestId aReqId ) - { - DP_IMP( "CSimpleImConversation::DoSendMessageL" ) - - iCompleted = EFalse; - - TPtrC16 msgText16 = aImMessage.TextMessage(); - DP_IMP2( "CSimpleImConversation::DoSendMessageL, CONTENT: %S", - &msgText16 ) - HBufC8* contentData = CnvUtfConverter::ConvertFromUnicodeToUtf8L( - msgText16 ); - CleanupStack::PushL( contentData ); - - const MDesCArray& recipients = aImMessage.RecipientL(); - for ( TInt i = 0; i < recipients.MdcaCount(); i++ ) - { - TPtrC16 recipientsPtr16 = recipients.MdcaPoint( i ); - HBufC8* recipientsData = CnvUtfConverter::ConvertFromUnicodeToUtf8L( - recipientsPtr16 ); - CleanupStack::PushL( recipientsData ); - DP_IMP2( "CSimpleImConversation::DoSendMessageL, RECIPIENT: %S", - &recipientsPtr16 ) - - TInt result = iImHandler->SendInstantMessage( *contentData, - *recipientsData ); - CleanupStack::PopAndDestroy( recipientsData ); - - if ( KErrInUse == result ) - { - User::Leave( KErrInUse ); - } - } - - CleanupStack::PopAndDestroy( contentData ); - iXimpId = aReqId; - } - - -// --------------------------------------------------------------------------- -// From MProtocolImConversation. -// CSimpleImConversation::DoForwardMessageL() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::DoForwardMessageL( - const MImConversationInfo& /*aImMessage*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_IMP( "CSimpleImConversation::DoForwardMessageL, NOT SUPPORTED" ) - - User::Leave( KErrNotSupported ); - } - - -// --------------------------------------------------------------------------- -// From MProtocolImConversation. -// CSimpleImConversation::DoSendMessageToGroupL() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::DoSendMessageToGroupL( - const MImConversationInfo& /*aImMessage*/, - const TDesC* /*aGroupId*/, TXIMPRequestId /*aReqId*/ ) - { - DP_IMP( "CSimpleImConversation::DoSendMessageToGroupL, NOT SUPPORTED" ) - - User::Leave( KErrNotSupported ); - } - - -// --------------------------------------------------------------------------- -// From MProtocolImConversation. -// CSimpleImConversation::DoBlockUsersL() -// --------------------------------------------------------------------------- -// -TXIMPRequestId CSimpleImConversation::DoBlockUsersL( - const MDesCArray* /*aUserIds*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_IMP( "CSimpleImConversation::DoBlockUsersL, NOT SUPPORTED" ) - - User::Leave( KErrNotSupported ); - return TXIMPRequestId(); - } - - -// --------------------------------------------------------------------------- -// From MProtocolImConversation. -// CSimpleImConversation::DoUnBlockUsersL() -// --------------------------------------------------------------------------- -// -TXIMPRequestId CSimpleImConversation::DoUnBlockUsersL( - const MDesCArray* /*aUserIds*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_IMP( "CSimpleImConversation::DoUnBlockUsersL, NOT SUPPORTED" ) - - User::Leave( KErrNotSupported ); - return TXIMPRequestId(); - } - - -// --------------------------------------------------------------------------- -// From MProtocolImConversation. -// CSimpleImConversation::DoGetBlockedListRequestL() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::DoGetBlockedListRequestL( - const MXIMPIdentity& /*aImMessageId*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_IMP( "CSimpleImConversation::DoGetBlockedListRequestL, NOT SUPPORTED" ) - - User::Leave( KErrNotSupported ); - } - - -// --------------------------------------------------------------------------- -// From MProtocolImConversation. -// CSimpleImConversation::DoGetMessageListL() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::DoGetMessageListL( - const MXIMPIdentity& /*aImMessageId*/, - const TDesC* /*aGroupId*/, - const TInt /*aMessageCount*/, - TBool /*aDeliveryReportWanted*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_IMP( "CSimpleImConversation::DoGetMessageListL, NOT SUPPORTED" ) - - User::Leave( KErrNotSupported ); - } - - -// --------------------------------------------------------------------------- -// From MProtocolImConversation. -// CSimpleImConversation::DoRejectMessageL() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::DoRejectMessageL( - const MXIMPIdentity& /*aImMessageId*/, - const TDesC& /*aMessageID*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_IMP( "CSimpleImConversation::DoRejectMessageL, NOT SUPPORTED" ) - - User::Leave( KErrNotSupported ); - } - - -// --------------------------------------------------------------------------- -// From MSimpleInstantMsgObserver. -// CSimpleImConversation::SendInstantMsgReqComplete() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::SendInstantMsgReqComplete( - TInt /*aOpid*/, TInt aStatus) - { - DP_IMP("CSimpleImConversation::SendInstantMsgReqComplete") - - CompleteXimpReq( aStatus ); - } - - -// --------------------------------------------------------------------------- -// From MSimpleInstantMsgObserver. -// CSimpleImConversation::HandleReceiveTextMessage() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::HandleReceiveTextMessage( - TPtrC8 aFrom, TPtrC8 aContent ) - { - DP_IMP( "CSimpleImConversation::HandleReceiveTextMessage" ) - - TRAPD( err, DoHandleReceiveTextMessageL( aFrom, aContent ) ) - - if ( KErrNone != err ) - { - // Do nothing - DP_IMP2( "CSimpleImConversation::HandleReceiveTextMessage, ERROR: %i", - err ) - } - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::CompleteXimpReq() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::CompleteXimpReq( TInt aStatus ) - { - DP_IMP( "CSimpleImConversation::CompleteXimpReq" ) - - if ( iCompleted ) - { - DP_IMP("CSimpleImConversation::CompleteXimpReq return") - return; - } - - iCompleted = ETrue; - iConnectionObs->CompleteReq( iXimpId, aStatus ); - iXimpId = TXIMPRequestId(); - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::DoHandleReceiveTextMessageL() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::DoHandleReceiveTextMessageL( TPtrC8 aFrom, - TPtrC8 aContent ) - { - DP_IMP( "CSimpleImConversation::DoHandleReceiveTextMessageL" ) - - CreateImCacheUpdaterIfNeededL(); - - if ( iHost ) - { - MXIMPObjectFactory& objFact = iConnectionObs->Host()->ObjectFactory(); - MImObjectFactory& imObjFact = iHost->ImObjectFactory(); - - MXIMPIdentity* identity = objFact.NewIdentityLC(); // CS:1 - MImConversationInfo* convinfo = imObjFact. - NewImConversationInfoLC(); // CS:2 - - HBufC16* sendername = CnvUtfConverter::ConvertToUnicodeFromUtf8L( - aFrom ); - CleanupStack::PushL( sendername ); // CS:3 - identity->SetIdentityL( *sendername ); - CleanupStack::PopAndDestroy( sendername ); // CS:2 - convinfo->SetMessageIdL( identity ); - - HBufC16* messagecontent = CnvUtfConverter::ConvertToUnicodeFromUtf8L( - aContent ); - CleanupStack::PushL( messagecontent ); // CS:3 - convinfo->SetTextMessageL( *messagecontent ); - CleanupStack::PopAndDestroy( messagecontent ); // CS:2 - - iHost->ConversationDataHost().HandleNewTextMessageL( convinfo ); - TRAP_IGNORE( iImCacheUpdater->AppendReceiveMessageL( - identity->Identity(), convinfo->TextMessage() ) ); - - CleanupStack::Pop(); // CS:1 - CleanupStack::Pop(); // CS:0 - } - else - { - DP_IMP( " --> PROTOCOL IM DATA HOST IS NULL!" ) - } - } - -// --------------------------------------------------------------------------- -// CSimpleImConversation::ResolveUsernameL -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::ResolveUsernameL( - TUint aServiceId, RBuf& aUserName ) const - { - DP_IMP( "CSimpleImConversation::ResolveUsernameL" ) - - CCch* cchApi = CCch::NewLC(); - CCchService* service = cchApi->GetService( aServiceId ); - - User::LeaveIfError( service->GetConnectionParameter( - ECCHUnknown, ECchUsername, aUserName ) ); - - DP_IMP2( "CSimpleImConversation::ResolveUsernameL, USERNAME: %S", - &aUserName ) - - CleanupStack::PopAndDestroy( cchApi ); - } - - -// --------------------------------------------------------------------------- -// CSimpleImConversation::CreateImCacheUpdaterIfNeededL() -// --------------------------------------------------------------------------- -// -void CSimpleImConversation::CreateImCacheUpdaterIfNeededL() - { - if ( !iImCacheUpdater ) - { - DP_IMP( "CSimpleImConversation::CreateImCacheUpdaterIfNeededL," ) - DP_IMP( "CREATING UPDATER" ) - - RBuf username; - CleanupClosePushL( username ); - const TInt KMaxUserNameLength = 255; - username.CreateL( KMaxUserNameLength ); - ResolveUsernameL( iServiceId, username ); - - iImCacheUpdater = - iImCacheFactory->CreateUpdaterL( iServiceId, username, EFalse ); - CleanupStack::PopAndDestroy( &username ); - } - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/src/simpleimfeatures.cpp --- a/simpledatamodeladapter/simpleimplugin/src/simpleimfeatures.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,223 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - - -#include "simpleimfeatures.h" -#include "simpleimconversation.h" -#include "mpresencepluginconnectionobs.h" -#include "simpleimplugindefs.h" -#include "simpleimlogger.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSimpleImFeatures::CSimpleImFeatures() -// --------------------------------------------------------------------------- -// -CSimpleImFeatures::CSimpleImFeatures() : CProtocolImFeatures() - { - } - - -// --------------------------------------------------------------------------- -// CSimpleImFeatures::NewL() -// --------------------------------------------------------------------------- -// -CSimpleImFeatures* CSimpleImFeatures::NewL( TAny* aInitParams ) - { - DP_IMP( "CSimpleImFeatures::NewL()" ) - - CSimpleImFeatures* self = new( ELeave ) CSimpleImFeatures(); - CleanupStack::PushL( self ); - self->ConstructL( aInitParams ); - CleanupStack::Pop( self ); - - return self; - } - - -// --------------------------------------------------------------------------- -// CSimpleImFeatures::ConstructL -// --------------------------------------------------------------------------- -// -void CSimpleImFeatures::ConstructL( TAny* aInitParams ) - { - DP_IMP( "CSimpleImFeatures::ConstructL()" ) - __ASSERT_ALWAYS( aInitParams, User::Leave( KErrArgument ) ); - - TSimpleImPluginInitParams* initParams = - static_cast( aInitParams ); - - iImConversation = CSimpleImConversation::NewL( initParams->iObserver, - initParams->iConnection, initParams->iServiceId ); - } - - -// --------------------------------------------------------------------------- -// CSimpleImFeatures::~CSimpleImFeatures -// --------------------------------------------------------------------------- -// -CSimpleImFeatures::~CSimpleImFeatures() - { - DP_IMP( "CSimpleImFeatures::~CSimpleImFeatures()" ) - - delete iImConversation; - } - - -// --------------------------------------------------------------------------- -// From MXIMPBase. -// CSimpleImFeatures::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CSimpleImFeatures::GetInterface( TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - DP_IMP( "CSimpleImFeatures::GetInterface()" ) - - if ( CProtocolImFeatures::KInterfaceId == aInterfaceId ) - { - DP_IMP( "CSimpleImFeatures::GetInterface() - Found" ) - CProtocolImFeatures* self = this; - return self; - } - - if ( MXIMPBase::EPanicIfUnknown == aOptions ) - { - User::Panic( KSimpleImPluginName, KErrExtensionNotSupported ); - } - - return NULL; - } - - -// --------------------------------------------------------------------------- -// From MXIMPBase. -// CSimpleImFeatures::GetInterface() const -// --------------------------------------------------------------------------- -// -const TAny* CSimpleImFeatures::GetInterface( TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - DP_IMP( "CSimpleImFeatures::GetInterface() const" ) - - if ( CProtocolImFeatures::KInterfaceId == aInterfaceId ) - { - DP_IMP( "CSimpleImFeatures::GetInterface() const - Found" ) - const CProtocolImFeatures* self = this; - return self; - } - - if ( MXIMPBase::EPanicIfUnknown == aOptions ) - { - User::Panic( KSimpleImPluginName, KErrExtensionNotSupported ); - } - - return NULL; - } - - -// --------------------------------------------------------------------------- -// From MXIMPBase. -// CSimpleImFeatures::GetInterfaceId() const -// --------------------------------------------------------------------------- -// -TInt32 CSimpleImFeatures::GetInterfaceId() const - { - return CProtocolImFeatures::KInterfaceId; - } - - -// --------------------------------------------------------------------------- -// From CProtocolImFeatures. -// CSimpleImFeatures::ImGroup() -// --------------------------------------------------------------------------- -// -MProtocolImGroup& CSimpleImFeatures::ImGroup() - { - DP_IMP( "CSimpleImFeatures::ImGroup(), NOT SUPPORTED" ) - - MProtocolImGroup* dummyGroup = NULL; - return *dummyGroup; - } - - -// --------------------------------------------------------------------------- -// From CProtocolImFeatures. -// CSimpleImFeatures::ImConversation() -// --------------------------------------------------------------------------- -// -MProtocolImConversation& CSimpleImFeatures::ImConversation() - { - DP_IMP( "CSimpleImFeatures::ImConversation()" ) - - return *iImConversation; - } - - -// --------------------------------------------------------------------------- -// From CProtocolImFeatures. -// CSimpleImFeatures::ImInvitation() -// --------------------------------------------------------------------------- -// -MProtocolImInvitation& CSimpleImFeatures::ImInvitation() - { - DP_IMP( "CSimpleImFeatures::ImInvitation(), NOT SUPPORTED" ) - - MProtocolImInvitation* dummyInvitation = NULL; - return *dummyInvitation; - } - - -// --------------------------------------------------------------------------- -// From CProtocolImFeatures. -// CSimpleImFeatures::ImSearch() -// --------------------------------------------------------------------------- -// -MProtocolImSearch& CSimpleImFeatures::ImSearch() - { - DP_IMP( "CSimpleImFeatures::ImSearch(), NOT SUPPORTED" ) - - MProtocolImSearch* dummySearch = NULL; - return *dummySearch; - } - - -// --------------------------------------------------------------------------- -// From CProtocolImFeatures. -// CSimpleImFeatures::SetHost() -// --------------------------------------------------------------------------- -// -void CSimpleImFeatures::SetHost( MProtocolImDataHost& aHost ) - { - DP_IMP( "CSimpleImFeatures::SetHost()" ) - - iHost = &aHost ; - iImConversation->SetHost( *iHost ); - } - -// --------------------------------------------------------------------------- -// From CProtocolImFeatures. -// CSimpleImFeatures::SupportedSubInterfaces() -// --------------------------------------------------------------------------- -// -TInt CSimpleImFeatures::SupportedSubInterfaces() const - { - return EProtocolImConversation; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/simpleimplugin/src/simpleimpluginimplementationproxy.cpp --- a/simpledatamodeladapter/simpleimplugin/src/simpleimpluginimplementationproxy.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 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: ECom implementation proxy. -* -*/ - - -#include -#include - -#include "simpleimfeatures.h" - -// LOCAL CONSTANTS AND MACROS -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY( 0x20022D59, CSimpleImFeatures::NewL ) - }; - -// ========================== OTHER EXPORTED FUNCTIONS ========================= - -// ----------------------------------------------------------------------------- -// ImplementationGroupProxy -// Function to return the implementation proxy table -// ----------------------------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( - TInt& aTableCount ) - { - aTableCount = - sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - - return ImplementationTable; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceconnectioninfo.cpp --- a/simpledatamodeladapter/src/presenceconnectioninfo.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,192 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - -#include -#include - -#include "presencepluginconnection.h" -#include "presenceconnectioninfo.h" -#include "presenceplugincommon.h" -#include "presencelogger.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::CPresenceConnectionInfo() -// --------------------------------------------------------------------------- -// -CPresenceConnectionInfo::CPresenceConnectionInfo( - MXIMPProtocolConnection* aConnection ): - iConnection( aConnection ), - iConnectStatus( CPresencePluginConnection::ENotActive ) - { - iClientCount = 0; - iClientId = GenerateClientId(); - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::NewL() -// --------------------------------------------------------------------------- -// -CPresenceConnectionInfo* CPresenceConnectionInfo::NewL( - MXIMPProtocolConnection* aConnection ) - { - DP_SDA("CPresenceConnectionInfo::NewL"); - CPresenceConnectionInfo* self = - new( ELeave ) CPresenceConnectionInfo( aConnection ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::~CPresenceConnectionInfo() -// --------------------------------------------------------------------------- -// -CPresenceConnectionInfo::~CPresenceConnectionInfo() - { - DP_SDA("CPresenceConnectionInfo::~CPresenceConnectionInfo"); - DP_SDA2("CPresenceConnectionInfo:: clientID %d", iClientId); - - delete iETag; - iETag = NULL; - - DP_SDA("CPresenceConnectionInfo::~CPresenceConnectionInfo done"); - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::SetConnectionStatus() -// --------------------------------------------------------------------------- -// -void CPresenceConnectionInfo::SetConnectionStatus( - CPresencePluginConnection::TConnectionStatus aStatus ) - { - DP_SDA2("CPresenceConnectionInfo::SetConnectionStatus %d", aStatus); - DP_SDA2("CPresenceConnectionInfo:: clientID %d", iClientId); - iConnectStatus = aStatus; - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::SetConnectionETag() -// --------------------------------------------------------------------------- -// -void CPresenceConnectionInfo::SetConnectionETag( const TDesC8& aETag ) - { - DP_SDA("CPresenceConnectionInfo::SetConnectionETag"); - DP_SDA2("CPresenceConnectionInfo:: clientID %d", iClientId); - delete iETag; - iETag = NULL; - TRAP_IGNORE( ( iETag = aETag.AllocL() ) ); - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::GetConnectionStatus() -// --------------------------------------------------------------------------- -// -CPresencePluginConnection::TConnectionStatus - CPresenceConnectionInfo::GetConnectionStatus() - { - DP_SDA("CPresenceConnectionInfo::GetConnectionStatus"); - DP_SDA2("CPresenceConnectionInfo:: clientID %d", iClientId); - DP_SDA2("CPresenceConnectionInfo:: connection status %d", iConnectStatus); - return iConnectStatus; - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::GetConnectionEtag() -// --------------------------------------------------------------------------- -// -TDesC8* CPresenceConnectionInfo::GetConnectionEtag() - { - DP_SDA("CPresenceConnectionInfo::GetConnectionEtag"); - DP_SDA2("CPresenceConnectionInfo:: clientID %d", iClientId); - return iETag; - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::GetConnection() -// --------------------------------------------------------------------------- -// -MXIMPProtocolConnection* CPresenceConnectionInfo::GetConnection() - { - DP_SDA("CPresenceConnectionInfo::GetConnection"); - DP_SDA2("CPresenceConnectionInfo:: clientID %d", iClientId); - return iConnection; - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::IncreaseClientCount() -// --------------------------------------------------------------------------- -// -void CPresenceConnectionInfo::IncreaseClientCount() - { - iClientCount++; - DP_SDA2("CPresenceConnectionInfo::IncreaseClientCount %d", iClientCount ); - DP_SDA2("CPresenceConnectionInfo:: clientID %d", iClientId); - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::DecreaseClientCount() -// --------------------------------------------------------------------------- -// -void CPresenceConnectionInfo::DecreaseClientCount() - { - iClientCount--; - DP_SDA2("CPresenceConnectionArray::DecreaseClientCount %d", iClientCount ); - DP_SDA2("CPresenceConnectionArray:: clientID %d", iClientId); - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::ClientCount() -// --------------------------------------------------------------------------- -// -TInt CPresenceConnectionInfo::ClientCount() - { - DP_SDA2("CPresenceConnectionInfo::ClientCount %d", iClientCount ); - DP_SDA2("CPresenceConnectionInfo:: clientID %d", iClientId); - return iClientCount; - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::GetClientId() -// --------------------------------------------------------------------------- -// -TInt CPresenceConnectionInfo::GetClientId() - { - DP_SDA2("CPresenceConnectionInfo::ClientCount %d", iClientCount ); - DP_SDA2("CPresenceConnectionInfo:: clientID %d", iClientId); - return iClientId; - } - -// --------------------------------------------------------------------------- -// CPresenceConnectionInfo::GenerateClientId() -// --------------------------------------------------------------------------- -// -TInt CPresenceConnectionInfo::GenerateClientId() - { - // Generate unique session client id - DP_SDA("CPresenceConnectionInfo::GenerateClientIdstart"); - const TInt KMaxRand = 9999; - TInt64 seed; - TTime time; - time.HomeTime(); - seed = time.Int64(); - TInt random = Math::Rand( seed ) % KMaxRand; - DP_SDA("CPresenceConnectionInfo::GenerateClientId 1"); - return random; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugin.cpp --- a/simpledatamodeladapter/src/presenceplugin.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,378 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "presenceplugin.h" -#include "presenceplugindef.h" -#include "presencepluginconnection.h" -#include "presenceplugincommon.h" -#include "presenceplugin_resource.hrh" -#include "presenceconnectioninfo.h" - -#include -#include -#include -#include - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Key value pair table to identify correct constructor -// function for the requested interface. -// --------------------------------------------------------------------------- -// -const TImplementationProxy ImplementationTable[] = - { - //Warning in Lint 611 - IMPLEMENTATION_PROXY_ENTRY( PRESENCEPLUGIN_1_IMPLEMENTATION_UID, - CPresencePlugin::NewL ) - }; - -// --------------------------------------------------------------------------- -// Exported function to return the implementation proxy table -// --------------------------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( - TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / - sizeof( TImplementationProxy ); - return ImplementationTable; - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::CPresencePlugin() -// --------------------------------------------------------------------------- -// -CPresencePlugin::CPresencePlugin() - { - //empty - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::NewLC() -// --------------------------------------------------------------------------- -// -CPresencePlugin* CPresencePlugin::NewLC() - { - CPresencePlugin* self = new( ELeave ) CPresencePlugin(); - CleanupStack::PushL( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::NewL() -// --------------------------------------------------------------------------- -// -CPresencePlugin* CPresencePlugin::NewL() - { - CPresencePlugin* self = CPresencePlugin::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::~CPresencePlugin() -// --------------------------------------------------------------------------- -// -CPresencePlugin::~CPresencePlugin() - { - DP_SDA("CPresencePlugin::~CPresencePlugin"); - iConnections.ResetAndDestroy(); - iConnectionArray.ResetAndDestroy(); - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::~CPresencePlugin() -// --------------------------------------------------------------------------- -// -void CPresencePlugin::PrimeHost( MXIMPProtocolPluginHost& aHost ) - { - DP_SDA("CPresencePlugin::PrimeHost"); - iHost = &aHost; - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::AcquireConnectionL() -// --------------------------------------------------------------------------- -// -MXIMPProtocolConnection& CPresencePlugin::AcquireConnectionL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aContextClient ) - { - DP_SDA("CPresencePlugin::AcquireConnectionL"); - MXIMPProtocolConnection* tmp = NULL; - CPresenceConnectionInfo* connectionArray = NULL; - TBool connected = EFalse; - - //Check if presence is allready connected to id - //!!!! IN this adapter that IapID is service id ID!!!! - - DP_SDA2("CPresencePlugin::AcquireConnectionL - service id: %d", - aServiceInfo.IapId() ); - - TInt presenceId = KErrNotFound; - CSPSettings* spSettings = CSPSettings::NewL(); - CleanupStack::PushL( spSettings ); - - CSPProperty* property = CSPProperty::NewLC(); - spSettings->FindPropertyL( aServiceInfo.IapId(), - ESubPropertyPresenceSettingsId, - *property ); - if ( property ) - { - property->GetValue( presenceId ); - } - CleanupStack::PopAndDestroy( property ); - CleanupStack::PopAndDestroy( spSettings ); - - DP_SDA2(" -> presence settings id: %d",presenceId ); - __ASSERT_ALWAYS( presenceId > 0, User::Leave( KErrArgument ) ); - - TInt connectionsCount = iConnections.Count(); - DP_SDA2("AcquireConnectionL : connectionsCount =%d ", connectionsCount ); - - for( TInt i( connectionsCount - 1 ); i >= 0; i-- ) - { - DP_SDA2("AcquireConnectionL connection count %d", connectionsCount); - if( iConnections[i]->GetPresenceSetId() == presenceId ) - { - DP_SDA2("AcquireConnectionL RETURN OLD CONNECTION : i = %d " , i ); - //Check connection status - tmp = iConnections[i]; - connectionArray = iConnections[i]->GetConnectionArray(); - - //Check connection status from connectionArray - CPresencePluginConnection::TConnectionStatus status = - connectionArray->GetConnectionStatus(); - - if( CPresencePluginConnection::ENotActive == status ) - { - DP_SDA("AcquireConnectionL ENotActive "); - DP_SDA("AcquireConnectionL Del old inactive connection"); - //Call session CLOSE here!!!!! - //Ensure there is no any client to bind this connect - //Release this failed connection - DeleteConnection(i); - } - else if ( CPresencePluginConnection::ETerminated == status ) - { - DP_SDA("AcquireConnectionL ETerminated CREATE NEW CONNECTION "); - //Roamning try use lates ETag - //Delete old terminaded connection and create new with old ETag - CPresencePluginConnection* connection = - CPresencePluginConnection::NewL( - aServiceInfo, aContextClient, - *iConnectionArray[i]->GetConnectionEtag() ); - CleanupStack::PushL( connection ); - - DeleteConnection( i ); - - //Add this new connection to connectionArray - CPresenceConnectionInfo* connectionInfo = - CPresenceConnectionInfo::NewL( connection ); - CleanupStack::PushL( connectionInfo ); - iConnectionArray.AppendL( connectionInfo ); - CleanupStack::Pop(); - connection->SetConnectionArray( connectionInfo ); - iConnections.AppendL( connection ); - CleanupStack::Pop( connection ); - tmp = connection; - connected = ETrue; - - iConnectionArray[i]->IncreaseClientCount(); - } - else if ( CPresencePluginConnection::EActive == status ) - { - DP_SDA("AcquireConnectionL EActive"); - // NOTE: Incase there is no reply from XIMP before client is - // shutdown , then closeconnection wouldnt be called, reopening - // client will increase clientCount which is wrong. ClientCount - // should be checked for validity before increasing? - // If already connected - iConnectionArray[i]->IncreaseClientCount(); - connected = ETrue; - tmp = iConnections[i]; - DP_SDA("AcquireConnectionL RETURN OLD CONNECTION done"); - } - break; - } - } - if( !connected ) - { - DP_SDA("CPresencePlugin::AcquireConnectionL CREATE NEW CONNECTION"); - // If not already connected - CPresencePluginConnection* connection = CPresencePluginConnection::NewL( - aServiceInfo, aContextClient ); - CleanupStack::PushL( connection ); - - //Add this new connection to connectionArray - CPresenceConnectionInfo* connectionInfo = - CPresenceConnectionInfo::NewL( connection ); - CleanupStack::PushL( connectionInfo ); - iConnectionArray.AppendL( connectionInfo ); - CleanupStack::Pop(); - connection->SetConnectionArray( connectionInfo ); - //Add on binded client - connectionInfo->IncreaseClientCount(); - - iConnections.AppendL( connection ); - CleanupStack::Pop( connection ); - tmp = connection; - DP_SDA("AcquireConnectionL CREATE NEW CONNECTION DONE"); - } - DP_SDA("CPresencePlugin::AcquireConnectionL ret"); - return *tmp; - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::ReleaseConnection() -// --------------------------------------------------------------------------- -// -void CPresencePlugin::ReleaseConnection( MXIMPProtocolConnection& aConnection ) - { - DP_SDA("CPresencePlugin::ReleaseConnection"); - TInt connectionsCount = iConnections.Count(); - - DP_SDA2("ReleaseConnection : connectionsCount =%d ", connectionsCount ); - - for ( TInt i=0; i < connectionsCount; i++ ) - { - DP_SDA("CPresencePlugin::ReleaseConnection for start"); - if ( iConnectionArray[i]->GetConnection() == &aConnection ) - { - //Check how many client is using this connection - TInt clientCount = iConnectionArray[i]->ClientCount(); - - DP_SDA2("ReleaseConnection : clientCount = %d ", clientCount ); - DP_SDA2("CPresencePlugin::ReleaseConnection : i = %d", i ); - - if ( connectionsCount == 1 && clientCount <= 0 ) - { - DP_SDA("CPresencePlugin::ReleaseConnection Lets start to check"); - DP_SDA2("CPresencePlugin::ReleaseConnection connect status %d,", iConnections[i]->GetSessionStatus()); - //Check this connection status - if( !(CPresencePluginConnection::ENotActive == - iConnectionArray[i]->GetConnectionStatus() )) - { - DP_SDA("CPresencePlugin::ReleaseConnection not have clients"); - DeleteConnection(i); - break; - } - DP_SDA("connectionsCount == 1 && i == 0 && clientCount == 0 "); - DP_SDA("ReleaseConnection : Don't delete this connection "); - break; //don't delete first connection - } - DP_SDA("CPresencePlugin::ReleaseConnection for end"); - } - } - DP_SDA("CPresencePlugin::ReleaseConnection end"); - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CPresencePlugin::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - return this; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::GetInterface() -// --------------------------------------------------------------------------- -// -const TAny* CPresencePlugin::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - DP_SDA("CPresencePlugin::GetInterface"); - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - return const_cast(this); - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::GetInterfaceId() -// --------------------------------------------------------------------------- -// -TInt32 CPresencePlugin::GetInterfaceId() const - { - return MXIMPProtocolPlugin::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CPresencePlugin::DeleteConnection() -// --------------------------------------------------------------------------- -// -void CPresencePlugin::DeleteConnection( TInt aIndex ) - { - //First delete connectionArray where connection is same at connection - DP_SDA("CPresencePlugin::DeleteConnection"); - - TInt connectionArrayCount = iConnectionArray.Count(); - - for ( TInt i=0; i < connectionArrayCount; i++ ) - { - DP_SDA2("CPresencePlugin::DeleteConnection FINDING, con status %d", iConnectionArray[i]->GetConnectionStatus() ); - if( (iConnections[aIndex] == iConnectionArray[i]->GetConnection()) && - !(CPresencePluginConnection::EActive == - iConnectionArray[i]->GetConnectionStatus() ) ) - { - DP_SDA("CPresencePlugin::DeleteConnection connection Match"); - delete iConnectionArray[i]; - iConnectionArray.Remove( i ); - iConnectionArray.Compress(); - break; - } - } - delete iConnections[aIndex]; - iConnections.Remove( aIndex ); - iConnections.Compress(); - DP_SDA("CPresencePlugin::DeleteConnection end"); - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginauthorization.cpp --- a/simpledatamodeladapter/src/presencepluginauthorization.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1350 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "presencepluginauthorization.h" -#include "presencepluginwinfo.h" -#include "presenceplugincommon.h" -#include "presencepluginxdmutils.h" -#include "presencepluginwatcher.h" -#include "presenceplugindata.h" -#include "presencepluginutility.h" -#include "presenceplugingroup.h" -#include "presencepluginvirtualgroup.h" -#include "presenceplugincontacts.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::CPresencePluginAuthorization() -// --------------------------------------------------------------------------- -// -CPresencePluginAuthorization::CPresencePluginAuthorization( - MPresencePluginConnectionObs& aObs, - CPresencePluginData* aPresenceData ) - : CActive( CActive::EPriorityStandard ), - iConnObs(aObs), iSubscribed( EFalse ), - iOperation( ENoOperation ), iXdmOk( EFalse ), - iComplete( EFalse ), iPresenceData( aPresenceData ), - iContactIsStored( ETrue ) - { - CActiveScheduler::Add(this); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginAuthorization* CPresencePluginAuthorization::NewL( - MPresencePluginConnectionObs& aObs, - CPresencePluginData* aPresenceData ) - { - DP_SDA("CPresencePluginAuthorization::NewL "); - CPresencePluginAuthorization* self = - new( ELeave ) CPresencePluginAuthorization( aObs, aPresenceData ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::ConstructL() - { - HBufC* serviceName = - iPresenceData->ServiceNameLC( iPresenceData->ServiceId() ); - iContacts = CPresencePluginContacts::NewL( - iPresenceData->ServiceId(), *serviceName, *this ); - CleanupStack::PopAndDestroy( serviceName ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::~CPresencePluginAuthorization() -// --------------------------------------------------------------------------- -// -CPresencePluginAuthorization::~CPresencePluginAuthorization() - { - delete iPresIdentity; - delete iContacts; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::SetDataHost() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::SetDataHost( - MProtocolPresenceAuthorizationDataHost& aDataHost ) - { - DP_SDA("CPresencePluginAuthorization::SetDataHost "); - iDataHost = &aDataHost; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::WinfoTerminatedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::WinfoTerminatedL( TInt aReason ) - { - DP_SDA("CPresencePluginAuthorization::WinfoTerminatedL "); - - if ( iSubscribed ) - { - MXIMPDataSubscriptionState* myState = - iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC(); - myStatus->SetResultCode( aReason ? aReason : KErrCompletion ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - - // parameters' OWNERSHIP is taken - iDataHost->SetPresenceGrantRequestDataSubscriptionStateL( - myState, - myStatus ); - - CleanupStack::Pop( /*myStatus*/ ); - CleanupStack::Pop( /*myState*/ ); - } - - DP_SDA("CPresencePluginAuthorization::WinfoTerminatedL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoSubscribePresenceGrantRequestListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoSubscribePresenceGrantRequestListL( - TXIMPRequestId aReqId ) - { - DP_SDA("DoSubscribePresenceGrantRequestListL "); - iConnObs.WinfoHandlerL()->SubscribeWinfoListL( aReqId ); - iSubscribed = ETrue; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoUnsubscribePresenceGrantRequestListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoUnsubscribePresenceGrantRequestListL( - TXIMPRequestId aReqId ) - { - DP_SDA("DoUnsubscribePresenceGrantRequestListL "); - iConnObs.WinfoHandlerL()->UnsubscribeWinfoListL( aReqId ); - iSubscribed = EFalse; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoGrantPresenceForPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoGrantPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& /*aPif*/, // notice: pif support - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginAuthorization::DoGrantPresenceForPresentityL "); - - // Workaround for clients that can only grant when accepting buddy request. - // SIMPLE also requires grant + subscribe so do both here even though - // it is agains ximp api definitions. - - _LIT( KDefaultBuddyList, "buddylist" ); - - iAuthState = EStateAcceptBuddyRequest; - MXIMPIdentity* buddyList = iConnObs.ObjectFactory().NewIdentityLC(); - buddyList->SetIdentityL( KDefaultBuddyList() ); - - iConnObs.GroupsL().DoAddPresentityGroupMemberL( *buddyList, aPresentityId, - KNullDesC(), aReqId ); - CleanupStack::PopAndDestroy( 1 ); // buddyList - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoPerformGrantPresenceForPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoPerformGrantPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aClientStatus ) - { - DP_SDA("CPresencePluginAuthorization::DoPerformGrantPresenceForPresentityL"); - StartXdmOperationL( aPresentityId, - EGrantPresenceForPresentity, aClientStatus ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoUpdatePresenceGrantPifForPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoUpdatePresenceGrantPifForPresentityL( - const MXIMPIdentity& /*aPresentityId*/, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { - // Notice: later - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoWithdrawPresenceGrantFromPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoWithdrawPresenceGrantFromPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginAuth::DoWithdrawPresenceGrantFromPresentityL "); - StartXdmOperationL( aPresentityId, aReqId, EWithdrawFromPresentity ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoPerformWithdrawPresGrantFromPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoPerformWithdrawPresGrantFromPresentityL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aClientStatus ) - { - DP_SDA("CPresencePluginAuthorization"); - DP_SDA(" -> DoPerformWithdrawPresGrantFromPresentityL"); - StartXdmOperationL( aPresentityId, - EWithdrawFromPresentity, aClientStatus ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoGrantPresenceForPresentityGroupMembersL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoGrantPresenceForPresentityGroupMembersL( - const MXIMPIdentity& /*aGroupId*/, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_SDA("CPresencePluginAuthorization::DoGrantPresenceForPresentityGroupMembersL -not supported"); - - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization:: -// DoUpdatePresenceGrantPifForPresentityGroupMembersL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization:: - DoUpdatePresenceGrantPifForPresentityGroupMembersL( - const MXIMPIdentity& /*aGroupId*/, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_SDA("CPresencePluginAuthorization::DoUpdatePresenceGrantPifForPresentityGroupMembersL -not supported"); - - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization:: -// DoWithdrawPresenceGrantFromPresentityGroupMembersL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization:: - DoWithdrawPresenceGrantFromPresentityGroupMembersL( - const MXIMPIdentity& /*aGroupId*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_SDA("CPresencePluginAuthorization::DoWithdrawPresenceGrantFromPresentityGroupMembersL -not supported"); - - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoGrantPresenceForEveryoneL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoGrantPresenceForEveryoneL( - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_SDA("CPresencePluginAuthorization::DoGrantPresenceForEveryoneL -not supported"); - - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoUpdatePresenceGrantPifForEveryoneL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoUpdatePresenceGrantPifForEveryoneL( - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_SDA("CPresencePluginAuthorization::DoUpdatePresenceGrantPifForEveryoneL -not supported"); - - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoWithdrawPresenceGrantFromEveryoneL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoWithdrawPresenceGrantFromEveryoneL( - TXIMPRequestId /*aReqId*/ ) - { - DP_SDA("CPresencePluginAuthorization::DoWithdrawPresenceGrantFromEveryoneL -not supported"); - - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoSubscribePresenceBlockListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoSubscribePresenceBlockListL( - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginAuthorization::DoSubscribePresenceBlockListL "); - MXIMPIdentity* nobody = iConnObs.ObjectFactory().NewIdentityLC(); - StartXdmOperationL( *nobody, aReqId, ESubscribeBlockList ); - // Cannot PopAndDestroy by name - CleanupStack::PopAndDestroy( ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoUnsubscribePresenceBlockListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoUnsubscribePresenceBlockListL( - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginAuthorization::DoUnsubscribePresenceBlockListL "); - MXIMPIdentity* nobody = iConnObs.ObjectFactory().NewIdentityLC(); - StartXdmOperationL( *nobody, aReqId, EUnsubscribeBlockList ); - // Cannot PopAndDestroy by name - CleanupStack::PopAndDestroy(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoBlockPresenceForPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoBlockPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginAuthorization::DoBlockPresenceForPresentityL "); - StartXdmOperationL( aPresentityId, aReqId, EBlockPresentity ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoPerformBlockPresenceForPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoPerformBlockPresenceForPresentityL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aClientStatus ) - { - DP_SDA( - "CPresencePluginAuthorization::DoPerformBlockPresenceForPresentityL"); - StartXdmOperationL( aPresentityId, EBlockPresentity, aClientStatus ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoCancelPresenceBlockFromPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoCancelPresenceBlockFromPresentityL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { - DP_SDA(" DoCancelPresenceBlockFromPresentityL "); - StartXdmOperationL( aPresentityId, aReqId, EUnblockPresentity ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoPerformCancelPresenceBlockFromPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoPerformCancelPresenceBlockFromPresentityL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aClientStatus ) - { - DP_SDA(" DoPerformCancelPresenceBlockFromPresentityL (list)"); - StartXdmOperationL( aPresentityId, EUnblockPresentity, aClientStatus ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::DoCancel() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::DoCancel( ) - { - iXdmUtils->Cancel(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::RunL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::RunL( ) - { - TInt myStatus = iStatus.Int(); - - DP_SDA2( "CPresencePluginAuthorization::RunL mystatus %d ", myStatus ); - DP_SDA2( "CPresencePluginAuthorization::RunL state %d ",iOperation ); - - if ( !iXdmOk && !myStatus ) - { - DP_SDA( "CPresencePluginAuthorization::RunL !iXdmOk && !myStatus" ); - iXdmOk = ETrue; - CallActualXdmOperationL(); - } - else if ( iClientStatus ) - { - DP_SDA( "CPresencePluginAuthorization::RunL - complete client" ); - TRequestStatus* s = iClientStatus; - User::RequestComplete( s, myStatus ); - iClientStatus = NULL; - DP_SDA( "CPresencePluginAuthorization::RunL - complete client ok" ); - } - else if ( !myStatus ) - { - switch ( iAuthState ) - { - case EStateDoBlock: - { - DP_SDA( "CPresencePluginAuthorization::RunL - Block presentity" ); - BlockPresentityL(); - iAuthState = EStateRemovePresentityFromGranted; - } - break; - - case EStateRemovePresentityFromGranted: - { - DP_SDA( "CPresencePluginAuthorization::RunL - Remove presentity from granted" ); - WithdrawFromPresentityL(); - iAuthState = EStateBlocked; - } - break; - - case EStateBlocked: - { - DP_SDA( "CPresencePluginAuthorization::RunL - Blocked" ); - SetPresentityBlockedToXIMPL(); - iAuthState = EStateIdle; - CompleteXIMPReq( myStatus ); - } - break; - - case EStateIsContactBlockedBuddyRequest: - { - DP_SDA( "CPresencePluginAuthorization::RunL - Resolve contact type" ); - // resolve is contact blocked friend request - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity ); - IsBlockedContactFriendRequestL( *withoutPrefix, *this, iStatus ); - CleanupStack::PopAndDestroy( withoutPrefix ); - SetActive(); - iAuthState = EStateDoUnBlock; - } - break; - - case EStateDoUnBlock: - { - if ( iContactIsStored ) - { - DP_SDA( "CPresencePluginAuthorization::RunL - Grant presence for presentity" ); - GrantPresenceForPresentityL(); - iAuthState = EStatePresenceGranted; - } - else - { - DP_SDA( "CPresencePluginAuthorization::RunL - Complete unblock" ); - iAuthState = EStateIdle; - CompleteXIMPReq( myStatus ); - } - } - break; - - case EStatePresenceGranted: - { - DP_SDA( "CPresencePluginAuthorization::RunL -Subscribe presentity presence" ); - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); - identity->SetIdentityL( iPresIdentity->Des() ); - iConnObs.WatcherHandlerL()->DoPerformSubscribePresentityPresenceL( *identity, iStatus ); - CleanupStack::PopAndDestroy( ); //identity - iAuthState = EStateSubscribe; - SetActive(); - } - break; - - case EStateSubscribe: - { - DP_SDA( "CPresencePluginAuthorization::RunL -UnBlock completed" ); - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity ); - iPresenceData->WriteStatusToCacheL( *withoutPrefix, - MPresenceBuddyInfo2::ENotAvailable, - KInvisibleState(), - KNullDesC() ); - CleanupStack::PopAndDestroy( withoutPrefix ); - iAuthState = EStateIdle; - CompleteXIMPReq( myStatus ); - } - break; - - default: - { - DP_SDA( "CPresencePluginAuthorization::RunL - default case" ); - CompleteXIMPReq( myStatus ); - } - break; - } - } - else if ( KErrNotFound == myStatus && EStateDoBlock == iAuthState ) - { - // When blocking friend request, watcher was not found but request - // has to be blocked anyways. - DP_SDA( "CPresencePluginAuthorization::RunL - Block presentity" ); - BlockPresentityL(); - iAuthState = EStateBlocked; - } - else - { - DP_SDA( "CPresencePluginAuthorization::RunL -error" ); - CompleteXIMPReq( myStatus ); - } - - if ( EStateAcceptBuddyRequest == iAuthState && EGrantPresenceForPresentity == iOperation ) - { - iAuthState = EStateIdle; - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity ); - CallHandlePresenceGrantRequestObsoletedL( *withoutPrefix ); - iConnObs.SubscribedContacts()->HandlePresentityGroupMemberAddedL( *withoutPrefix ); - CleanupStack::PopAndDestroy( withoutPrefix ); - } - - DP_SDA( "CPresencePluginAuthorization::RunL - exit" ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::CallActualXdmOperationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::CallActualXdmOperationL() - { - DP_SDA("CPresencePluginAuthorization::CallActualXdmOperationL "); - DP_SDA2("CallActualXdmOperationL operation %d", iOperation ); - iComplete = EFalse; - switch ( iOperation ) - { - case EGrantPresenceForPresentity: - { - DP_SDA("CallActualXdmOperationL EGrantPresenceForPresentity"); - GrantPresenceForPresentityL(); - } - break; - - case EWithdrawFromPresentity: - { - DP_SDA("CallActualXdmOperationL EWithdrawFromPresentity"); - WithdrawFromPresentityL(); - } - break; - - case ESubscribeBlockList: - { - SubscribeBlockListL( ); - } - break; - - case EUnsubscribeBlockList: - { - UnSubscribeBlockListL(); - } - break; - - case EBlockPresentity: - { - DP_SDA( "CallActualXdmOperationL EBlockPresentity" ); - - TRAPD( error, UnsubscribePresentityPresenceL() ); - - if( error ) - { - DP_SDA2( "Unsubscribe presentity FAIL, error = %d" , error ); - - if ( KErrNotFound != error ) - { - User::Leave( error ); - } - BlockPresentityL(); - iAuthState = EStateBlocked; - } - else - { - iAuthState = EStateDoBlock; - } - } - break; - - case EUnblockPresentity: - { - DP_SDA("CallActualXdmOperationL EUnblockPresentity"); - UnblockPresentityL(); - } - break; - - default: - User::Leave( KErrNotSupported ); - break; - } - DP_SDA("CPresencePluginAuthorization::CallActualXdmOperationL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::RunError() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginAuthorization::RunError( TInt aError ) - { - // complete the open request - CompleteXIMPReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CPresencePluginAuthorization::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - return this; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::GetInterface() const -// --------------------------------------------------------------------------- -// -const TAny* CPresencePluginAuthorization::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - return const_cast(this); - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::GetInterfaceId() -// --------------------------------------------------------------------------- -// -TInt32 CPresencePluginAuthorization::GetInterfaceId() const - { - return MProtocolPresenceAuthorization::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::SetPresIdentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::SetPresIdentityL( - const MXIMPIdentity& aPresentityId, - TBool aFormatUri ) - { - DP_SDA2("CPresencePluginAuthorization::SetPresIdentityL: %S", - &aPresentityId.Identity() ); - - delete iPresIdentity; - iPresIdentity = NULL; - - if ( aFormatUri ) - { - DP_SDA("CPresencePluginAuthorization::SetPresIdentityL, add prefix"); - - HBufC8* identityCopy = HBufC8::NewLC( KBufSize255 ); - TPtr8 identityCopyPtr( identityCopy->Des() ); - identityCopyPtr.Copy( aPresentityId.Identity() ); - - HBufC8* prefixUri = iPresenceData->CreatePresenceUri8LC( - identityCopyPtr ); - - HBufC* prefixUri16 = HBufC::NewLC( KBufSize255 ); - TPtr prefixUri16Ptr( prefixUri16->Des() ); - prefixUri16Ptr.Copy( *prefixUri ); - - iPresIdentity = prefixUri16; - CleanupStack::Pop( prefixUri16 ); - CleanupStack::PopAndDestroy( prefixUri ); - CleanupStack::PopAndDestroy( identityCopy ); - } - else - { - DP_SDA(" SetPresIdentityL, use as it is"); - iPresIdentity = aPresentityId.Identity().AllocL(); - } - DP_SDA( "CPresencePluginAuthorization::SetPresIdentityL -exit" ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::WinfoNotificationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::WinfoNotificationL( - MSimpleWinfo& aWinfo ) - { - DP_SDA("CPresencePluginAuthorization::WinfoNotificationL"); - // Ignore notification if not subscribed - using namespace NPresencePlugin::NPresence; - - RPointerArray elems; - CleanupClosePushL( elems ); - TInt err = aWinfo.SimpleElementsL( elems ); - User::LeaveIfError( err ); - TInt count = elems.Count(); - - DP_SDA2("CPresencePluginAuthorization::WinfoNotificationL count %d", - count); - - if ( !count ) - { - // stop parsing empty notification - DP_SDA("CPresencePluginAuthorization::WinfoNotificationL LEAVE"); - User::Leave( KErrArgument ); - } - - const TDesC8* stateVal = aWinfo.AttrValue( KPresenceState8 ); - if ( stateVal && !stateVal->CompareF( KPresenceFull8 )) - { - // Call full list method - DP_SDA("CPresencePluginAuthorization::WinfoNotificationL FULL winfo"); - HandleFullWinfoNotificationL( aWinfo ); - } - else - { - // Indicate changes in WINFO list one by one. - DP_SDA("CPresencePluginAuthorization::WinfoNotificationLPARTIAL winfo"); - HandlePartialWinfoNotificationL( aWinfo ); - } - CleanupStack::PopAndDestroy( &elems ); - DP_SDA("CPresencePluginAuthorization::WinfoNotificationL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::StartXdmOperationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::StartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginAuthOperation aOperation ) - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrNotReady ) ); - DP_SDA("CPresencePluginAuthorization::StartXdmOperationL 2"); - SetPresIdentityL( aId, ETrue ); - - iXIMPId = aReqId; - iOperation = aOperation; - if ( !iXdmUtils ) - { - DP_SDA("StartXdmOperationL !iXdmUtils"); - iXdmUtils = iConnObs.XdmUtilsL(); - } - if ( iXdmUtils->CheckXdmDoc() ) - { - DP_SDA("StartXdmOperationL iXdmOk"); - iXdmOk = ETrue; - CallActualXdmOperationL(); - } - else - { - DP_SDA("StartXdmOperationL else"); - iXdmUtils->InitializeXdmL( iStatus ); - SetActive(); - } - DP_SDA("CPresencePluginAuthorization::StartXdmOperationL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::StartXdmOperationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::StartXdmOperationL( - const MXIMPIdentity& aId, - TPluginAuthOperation aOperation, - TRequestStatus& aClientStatus ) - { - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrNotReady ) ); - DP_SDA("CPresencePluginAuthorization::StartXdmOperationL 3 (list)"); - - SetPresIdentityL( aId, EFalse ); - - iClientStatus = &aClientStatus; - *iClientStatus = KRequestPending; - - iOperation = aOperation; - - if ( !iXdmUtils ) - { - DP_SDA("StartXdmOperationL !iXdmUtils"); - iXdmUtils = iConnObs.XdmUtilsL(); - } - if ( iXdmUtils->CheckXdmDoc() ) - { - DP_SDA("StartXdmOperationL iXdmOk"); - iXdmOk = ETrue; - CallActualXdmOperationL(); - } - else - { - DP_SDA("StartXdmOperationL else"); - iXdmUtils->InitializeXdmL( iStatus ); - SetActive(); - } - DP_SDA("CPresencePluginAuthorization::StartXdmOperationL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::CompleteXIMPReq() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::CompleteXIMPReq( TInt aStatus ) - { - DP_SDA("CPresencePluginAuthorization::CompleteXIMPReq"); - iOperation = ENoOperation; - iConnObs.CompleteReq( iXIMPId, aStatus ); - iXIMPId = TXIMPRequestId(); - DP_SDA("CPresencePluginAuthorization::CompleteXIMPReq end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::SubscribeBlockListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::SubscribeBlockListL() - { - DP_SDA("CPresencePluginAuthorization::SubscribeBlockList"); - - RPointerArray blocked; - CleanupStack::PushL( TCleanupItem( - TPresencePluginUtility::ResetAndDestroyIdentities, - &blocked ) ); - - iXdmUtils->SubscribeBlockListL( blocked ); - MXIMPObjectCollection* coll = - iConnObs.ObjectFactory().NewObjectCollectionLC(); // << coll - - TInt count = blocked.Count(); - for ( TInt i = 0; i < count; i++ ) - { - MXIMPIdentity* currId = blocked[i]; - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( currId->Identity() ); - currId->SetIdentityL( *withoutPrefix ); - CleanupStack::PopAndDestroy( withoutPrefix ); - MPresenceBlockInfo* bInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresenceBlockInfoLC(); - bInfo->SetBlockedEntityIdL( currId ); // ownership is taken - blocked.Remove( i ); // remove currId from blocked - blocked.InsertL( NULL, i ); - bInfo->SetBlockedEntityDisplayNameL( currId->Identity() ); - coll->AddObjectL( bInfo );// ownership is taken - CleanupStack::Pop();// >> bInfo - } - - DP_SDA("SubscribeBlockList complete request"); - CompleteXIMPReq( KErrNone ); - - MXIMPDataSubscriptionState* myState = - iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - - MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC(); - - // Notice: consider XIMP error codes - myStatus->SetResultCode( KErrNone ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - - iDataHost->SetPresenceBlockDataSubscriptionStateL( - myState, myStatus ); - - iDataHost->HandlePresenceBlockListL( coll ); - //Callback for subscription result - CleanupStack::Pop( 3 ); // >> myState, myStatus, coll - CleanupStack::PopAndDestroy( &blocked ); - DP_SDA("CPresencePluginAuthorization::SubscribeBlockList end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::UnSubscribeBlockListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::UnSubscribeBlockListL() - { - DP_SDA("CPresencePluginAuthorization::UnSubscribeBlockListL"); - - MXIMPObjectCollection* coll = - iConnObs.ObjectFactory().NewObjectCollectionLC(); - - MXIMPDataSubscriptionState* myState = - iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - - MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC(); - - myStatus->SetResultCode( KErrNone ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - - iDataHost->SetPresenceBlockDataSubscriptionStateL( - myState, myStatus ); - - iDataHost->HandlePresenceBlockListL( coll ); - - CleanupStack::Pop( 3 ); - - CompleteXIMPReq( KErrNone ); - - DP_SDA("CPresencePluginAuthorization::UnSubscribeBlockListL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::ReturnListSubsState() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginAuthorization::ReturnListSubsState() - { - return iSubscribed; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::PluginData() -// --------------------------------------------------------------------------- -// -CPresencePluginData& CPresencePluginAuthorization::PluginData() - { - return *iPresenceData; - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::HandleFullWinfoNotificationL -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::HandleFullWinfoNotificationL( - MSimpleWinfo& aWinfo ) - { - using namespace NPresencePlugin::NPresence; - - RPointerArray elems; - CleanupClosePushL( elems ); - TInt err = aWinfo.SimpleElementsL( elems ); - User::LeaveIfError( err ); - TInt count = elems.Count(); - - MSimpleElement* elem = elems[0]; - TPtrC8 p8 = elem->LocalName(); - err = p8.CompareF( KPresenceWatcherList8 ); //watcher-list - DP_SDA2("HandleFullWinfoNotificationL leave if watcherlist error %d", err); - User::LeaveIfError( err ); - - err = elem->SimpleElementsL( elems ); - DP_SDA2("HandleFullWinfoNotificationL error %d", err); - User::LeaveIfError( err ); - - count = elems.Count(); - DP_SDA("HandleFullWinfoNotificationL watcher list is valid"); - - // Search watchers who are pending (status = pending) - HBufC* nodeContent = NULL; - MXIMPObjectCollection *pendings = - iConnObs.ObjectFactory().NewObjectCollectionLC(); - - TBool pendingFound(EFalse); - - for ( TInt i = 0; i < count; i++ ) - { - elem = elems[i]; - p8.Set( elem->LocalName()); - if (!( p8.CompareF( KPresenceWatcher8 ))) - { - const TDesC8* pp8 = elem->AttrValue( KPresenceStatus8 ); - if ( pp8 && !pp8->CompareF( KPresencePending8 )) - { - DP_SDA("HandleFullWinfoNotificationL least one pending"); - // Build collection of grant requests - // Find the child node containing the SIP entity - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - // create the collection entry here - MPresenceGrantRequestInfo* grInfo = - iConnObs.PresenceObjectFactoryOwn(). - NewPresenceGrantRequestInfoLC(); - MXIMPIdentity* identity = - iConnObs.ObjectFactory().NewIdentityLC(); - - // Remove prefix to keep client side protocol agnostic - HBufC16* withoutPrefix = iPresenceData->RemovePrefixLC( - *nodeContent ); - identity->SetIdentityL( *withoutPrefix ); - CleanupStack::PopAndDestroy( withoutPrefix ); - - grInfo->SetRequestorIdL( identity ); // ownership is taken - - pendings->AddObjectL( grInfo ); // ownership is taken - pendingFound = ETrue; - CleanupStack::Pop( 2 ); //grInfo, identity - CleanupStack::PopAndDestroy( nodeContent ); - } - } - } - - if ( pendingFound ) - { - DP_SDA("HandleFullWinfoNotificationL send pending"); - iXIMPIdOwn = iDataHost->HandlePresenceGrantRequestListL( pendings ); - CleanupStack::Pop(); // >> pendings - } - else - { - DP_SDA("HandleFullWinfoNotificationL pop pending"); - CleanupStack::PopAndDestroy( ); // >> pendings - } - - CleanupStack::PopAndDestroy( &elems ); - DP_SDA("CPresencePluginAuthorization::HandleFullWinfoNotificationL END"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::HandlePartialWinfoNotificationL -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::HandlePartialWinfoNotificationL( - MSimpleWinfo& aWinfo ) - { - DP_SDA("CPresencePluginAuthorization::HandlePartialWinfoNotificationL"); - using namespace NPresencePlugin::NPresence; - - RPointerArray elems; - CleanupClosePushL( elems ); - TInt err = aWinfo.SimpleElementsL( elems ); - User::LeaveIfError( err ); - TInt count = elems.Count(); - - MSimpleElement* elem = elems[0]; - TPtrC8 p8 = elem->LocalName(); - err = p8.CompareF( KPresenceWatcherList8 ); - User::LeaveIfError( err ); - - err = elem->SimpleElementsL( elems ); - User::LeaveIfError( err ); - count = elems.Count(); - - HBufC* nodeContent = NULL; - - for ( TInt i = 0; i < count; i++ ) - { - elem = elems[i]; - p8.Set( elem->LocalName()); - if (!( p8.CompareF( KPresenceWatcher8 ))) - { - const TDesC8* pp8 = elem->AttrValue( KPresenceStatus8 ); - if ( pp8 && !pp8->CompareF( KPresencePending8 )) - { - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - - // Remove prefix to keep client side protocol agnostic - HBufC16* withoutPrefix = iPresenceData->RemovePrefixLC( - *nodeContent ); - CallHandlePresenceGrantRequestReceivedL( *withoutPrefix ); - CleanupStack::PopAndDestroy( withoutPrefix ); - CleanupStack::PopAndDestroy( nodeContent ); - } - else if ( pp8 && !pp8->CompareF( KPresenceTerminated8 )) - { - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - - // Remove prefix to keep client side protocol agnostic - HBufC16* withoutPrefix = iPresenceData->RemovePrefixLC( - *nodeContent ); - CallHandlePresenceGrantRequestObsoletedL( *withoutPrefix ); - CleanupStack::PopAndDestroy( withoutPrefix ); - CleanupStack::PopAndDestroy( nodeContent ); - } - else if ( pp8 && !pp8->CompareF( KPresenceActive8 )) - { - DP_SDA( "CPresencePluginAuthorization::HandlePartialWinfoNotificationL presence active" ); - - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - TInt pos( 0 ); - if ( iConnObs.SubscribedContacts()-> - GetVirtualIdentityArray()->Find( *nodeContent, pos ) == 0 ) - { - HBufC8* buffer = HBufC8::NewLC( nodeContent->Length() ); - buffer->Des().Copy( *nodeContent ); - if ( !iConnObs.WatcherHandlerL()->MatchWatcherId( *buffer ) ) - { - DP_SDA( "CPresencePluginAuthorization::HandlePartialWinfoNotificationL -subscribe presence" ); - iConnObs.WatcherHandlerL()->SubscribeL( *nodeContent ); - } - CleanupStack::PopAndDestroy( buffer ); - } - CleanupStack::PopAndDestroy( nodeContent ); - } - } - } - CleanupStack::PopAndDestroy( &elems ); - DP_SDA("CPresencePluginAuthorization::HandlePartialWinfoNotificationL END"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::CallHandlePresenceGrantRequestReceivedL -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::CallHandlePresenceGrantRequestReceivedL( - const TDesC& aUserId ) - { - DP_SDA("PluginAuthorization::CallHandlePresenceGrantRequestReceivedL"); - // create the collection entry here - MPresenceGrantRequestInfo* grInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresenceGrantRequestInfoLC(); - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); - identity->SetIdentityL( aUserId ); - grInfo->SetRequestorIdL( identity ); // ownership is taken - CleanupStack::Pop( ); // -identity - - iDataHost->HandlePresenceGrantRequestReceivedL( grInfo );//ownership taken - CleanupStack::Pop( ); // -grInfo - DP_SDA("PluginAuthorization::CallHandlePresenceGrantRequestReceivedL END"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::CallHandlePresenceGrantRequestObsoletedL -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::CallHandlePresenceGrantRequestObsoletedL( - const TDesC& aUserId ) - { - DP_SDA("PluginAuthorization::CallHandlePresenceGrantRequestObsoletedL"); - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); - identity->SetIdentityL( aUserId ); - iDataHost->HandlePresenceGrantRequestObsoletedL( identity );//taken - CleanupStack::Pop( );// >> identity - DP_SDA("PluginAuthorization::CallHandlePresenceGrantRequestObsoletedL END"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::GrantPresenceForPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::GrantPresenceForPresentityL() - { - iXdmUtils->AddEntityToGrantedL( - iPresIdentity->Des(), iStatus ); - SetActive(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::WithdrawFromPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::WithdrawFromPresentityL() - { - iXdmUtils->RemoveEntityFromGrantedL( - iPresIdentity->Des(),iStatus ); - SetActive(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::UnsubscribePresentityPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::UnsubscribePresentityPresenceL() - { - DP_SDA( "CPresencePluginAuthorization::UnsubscribePresentityPresence" ); - - MXIMPIdentity* identity = - iConnObs.ObjectFactory().NewIdentityLC(); - identity->SetIdentityL( iPresIdentity->Des() ); - iConnObs.WatcherHandlerL()-> - DoPerformUnsubscribePresentityPresenceL( *identity, iStatus ); - CleanupStack::PopAndDestroy(); // identity - SetActive(); - - DP_SDA( "CPresencePluginAuthorization::UnsubscribePresentityPresence -Exit" ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::BlockPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::BlockPresentityL() - { - DP_SDA( "CPresencePluginAuthorization::BlockPresentityL" ); - // add entity to block list - iXdmUtils->AddEntityToBlockedL( - iPresIdentity->Des(), iStatus ); - SetActive(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::BlockPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::SetPresentityBlockedToXIMPL() - { - DP_SDA( "CPresencePluginAuthorization::SetPresentityBlockedToXIMPL" ); - - MPresenceBlockInfo* bInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresenceBlockInfoLC(); - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity ); - identity->SetIdentityL( *withoutPrefix ); - bInfo->SetBlockedEntityIdL( identity ); // ownership is taken - // Write blocked state into the presence cache - TBuf<20> buf; - buf.Copy( KBlockedExtensionValue ); - iPresenceData->WriteStatusToCacheL( - *withoutPrefix, - MPresenceBuddyInfo2::EUnknownAvailability, - buf, - KNullDesC() ); - CleanupStack::PopAndDestroy( withoutPrefix ); - iDataHost->HandlePresenceBlockedL( bInfo ); - CleanupStack::Pop();// >> identity - CleanupStack::Pop();// >> bInfo - - DP_SDA( "CPresencePluginAuthorization::SetPresentityBlockedToXIMPL -Exit" ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::UnblockPresentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::UnblockPresentityL() - { - DP_SDA( "CPresencePluginAuthorization::UnblockPresentityL" ); - - //remove entity from blocked list - iXdmUtils->RemoveEntityFromBlockedL( - iPresIdentity->Des(), iStatus ); - //remove enity from ximp blocked too - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity ); - identity->SetIdentityL( *withoutPrefix ); - CleanupStack::PopAndDestroy( withoutPrefix ); - iDataHost->HandlePresenceBlockCanceledL( identity ); - CleanupStack::Pop();// >> identity - iAuthState = EStateIsContactBlockedBuddyRequest; - SetActive(); - - DP_SDA( "CPresencePluginAuthorization::UnblockPresentityL -Exit" ); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginAuthorization::IsBlockedContactFriendRequest() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::IsBlockedContactFriendRequestL( - const TDesC& aPresenceId, - MPresencePluginContactsObs& aObserver, - TRequestStatus& aStatus ) - { - DP_SDA( "CPresencePluginAuthorization::IsBlockedContactFriendRequest" ); - - delete iContacts; - iContacts = NULL; - - HBufC* serviceName = - iPresenceData->ServiceNameLC( iPresenceData->ServiceId() ); - - iContacts = CPresencePluginContacts::NewL( - iPresenceData->ServiceId(), *serviceName, aObserver ); - - CleanupStack::PopAndDestroy( serviceName ); - - iContacts->IsPresenceIdStoredL( aPresenceId, aStatus ); - - DP_SDA( "CPresencePluginAuthorization::IsBlockedContactFriendRequest -exit" ); - } - - -// --------------------------------------------------------------------------- -// From base class MPresencePluginContactsObs -// CPresencePluginAuthorization::RequestComplete() -// --------------------------------------------------------------------------- -// -void CPresencePluginAuthorization::RequestComplete( TAny* aResult, - TPresenceContactsOperation aOperation, TInt aError ) - { - DP_SDA( "CPresencePluginAuthorization::RequestComplete" ); - - switch( aOperation ) - { - case EOperationIsPresenceStoredToContacts: - if ( aResult != NULL && KErrNone == aError ) - { - iContactIsStored = *static_cast( aResult ); - } - break; - default: - break; - } - DP_SDA2( "CPresencePluginAuthorization::RequestComplete - iContactIsStored = %d", iContactIsStored ); - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginconnection.cpp --- a/simpledatamodeladapter/src/presencepluginconnection.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,981 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include //for etc. KPublish -#include //Part of Registration API from SIMPLE engine -#include //Connection callback methods -#include - -#include "presencepluginconnection.h" -#include "presencepluginsession.h" -#include "mpresencepluginconnectionobs.h" -#include "presencepluginwatcher.h" -#include "presencepluginauthorization.h" -#include "presencepluginwinfo.h" -#include "presencepluginpublisher.h" -#include "presenceplugingroup.h" -#include "presencepluginxdmutils.h" -#include "presencepluginvirtualgroup.h" -#include "presenceconnectioninfo.h" -#include "presenceplugindata.h" - -#include "simpleimpluginuids.hrh" //KImplUidSimpleImPlugin - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::CPresencePluginConnection() -// --------------------------------------------------------------------------- -// -CPresencePluginConnection::CPresencePluginConnection( ): - CActive( CActive::EPriorityHigh ), iSipPresentity(NULL), - iStopPublishState( EFalse ), iGrantListSubs( EFalse ), iStopPublishCall( EFalse ), - iTerminatedCall( EFalse ) - { - DP_SDA("CPresencePluginConnection::CPresencePluginConnection"); - CActiveScheduler::Add(this); - iOwnTupleId = 0; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginConnection* CPresencePluginConnection::NewL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aClientCtxInfo ) - { - DP_SDA("CPresencePluginConnection::NewL"); - CPresencePluginConnection* self = - new( ELeave ) CPresencePluginConnection( ); - CleanupStack::PushL( self ); - self->ConstructL( aServiceInfo, aClientCtxInfo ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::NewL() loaded -// --------------------------------------------------------------------------- -// -CPresencePluginConnection* CPresencePluginConnection::NewL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aClientCtxInfo, - const TDesC8& aETag ) - { - DP_SDA("CPresencePluginConnection::NewL loaded"); - CPresencePluginConnection* self = - new( ELeave ) CPresencePluginConnection( ); - CleanupStack::PushL( self ); - self->ConstructL( aServiceInfo, aClientCtxInfo, aETag ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::ConstructL() loaded -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::ConstructL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& /*aClientCtxInfo*/, - const TDesC8& aETag ) - { - DP_SDA("CPresencePluginConnection::ConstructL loaded"); - - iETag = aETag.AllocL(); - - iSession = CPresencePluginSession::NewL( aServiceInfo, *this ); - - // create instance from data class - iPresenceData = CPresencePluginData::NewL( *this, - aServiceInfo.IapId() ); - - DP_SDA("ConstructL create subscribed buddy list loaded "); - // create another virtual group for all subscribed buddyes - iSubscribedBuddys = - CPresencePluginVirtualGroup::NewL( *this, - KPresenceBuddyList(), - iPresenceData ); - - iAuth = CPresencePluginAuthorization::NewL( *this, iPresenceData ); - - iPublisher = CPresencePluginPublisher::NewL( - *this, - *iSession->SimpleConnection(), - iPresenceData ); - - iWatcher = CPresencePluginWatcher::NewL( - *this, - *iSession->SimpleConnection(), - iPresenceData ); - - iGroups = CPresencePluginGroups::NewL( - *this, iSubscribedBuddys, iPresenceData ); - - iPluginWinfo = CPresencePluginWinfo::NewL( - *this, *(iSession->SimpleConnection() )); - - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::ConstructL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& /*aClientCtxInfo*/ ) - { - DP_SDA("CPresencePluginConnection::ConstructL"); - - iETag = KNullDesC8().AllocL(); - - iSession = CPresencePluginSession::NewL( aServiceInfo, *this ); - - // create instance from data class - iPresenceData = CPresencePluginData::NewL( *this, - aServiceInfo.IapId() ); - - DP_SDA("ConstructL create subscribed buddy list"); - // create another virtual group for all subscribed buddyes - iSubscribedBuddys = - CPresencePluginVirtualGroup::NewL( - *this, KPresenceBuddyList(), iPresenceData ); - - iAuth = CPresencePluginAuthorization::NewL( *this, iPresenceData ); - - iPublisher = CPresencePluginPublisher::NewL( - *this, - *iSession->SimpleConnection(), - iPresenceData ); - - iWatcher = CPresencePluginWatcher::NewL( - *this, - *iSession->SimpleConnection(), - iPresenceData ); - - iGroups = CPresencePluginGroups::NewL( - *this, iSubscribedBuddys, iPresenceData ); - - iPluginWinfo = CPresencePluginWinfo::NewL( - *this, *(iSession->SimpleConnection() )); - - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::~CPresencePluginConnection() -// --------------------------------------------------------------------------- -// -CPresencePluginConnection::~CPresencePluginConnection() - { - DP_SDA("CPresencePluginConnection::~CPresencePluginConnection"); - - Cancel(); - - delete iSipPresentity; - iSipPresentity = NULL; - - delete iPluginWinfo; - iPluginWinfo = NULL; - - delete iWatcher; - iWatcher = NULL; - - delete iPublisher; - iPublisher = NULL; - - delete iAuth; - iAuth = NULL; - - delete iGroups; - iGroups = NULL; - - delete iSession; - iSession = NULL; - - delete iImFeatures; - - REComSession::FinalClose(); - - delete iSubscribedBuddys; - delete iPresenceData; - - delete iETag; - iETag = NULL; - DP_SDA("CPresencePluginConnection::~CPresencePluginConnection end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::PrimeHost -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::PrimeHost( - MXIMPProtocolConnectionHost& aHost ) - { - DP_SDA("CPresencePluginConnection::PrimeHost"); - iConnectionHost = &aHost; - iAuth->SetDataHost( - iConnectionHost->ProtocolPresenceDataHost().AuthorizationDataHost() ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetOnlineBuddyGroup() -// --------------------------------------------------------------------------- -// -CPresencePluginVirtualGroup* CPresencePluginConnection::SubscribedContacts( ) - { - return iSubscribedBuddys; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetSessionStatus() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginConnection::GetSessionStatus( ) - { - return iSession->ConnectionStatus(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::TupleIdGet() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginConnection::GetTupleId() const - { - DP_SDA("CPresencePluginConnection::TupleIdGet"); - return iOwnTupleId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetEtag() -// --------------------------------------------------------------------------- -// -const TDesC8& CPresencePluginConnection::GetETag() const - { - DP_SDA("CPresencePluginConnection::GetETag"); - - if( !iETag ) - { - DP_SDA2("CPresencePluginConnection::GetETag empty ??? %S", iConnectionArray->GetConnectionEtag() ); - return KNullDesC8(); - } - - return *iETag; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::SetETag() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::SetETag( const TDesC8& aETag ) - { - DP_SDA("CPresencePluginConnection::SetETag"); - delete iETag; - iETag = NULL; - - TRAP_IGNORE( ( iETag = aETag.AllocL() ) ); - //Add etag also in connectionArray - iConnectionArray->SetConnectionETag( *iETag ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::SetConnectionArray() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::SetConnectionArray( - CPresenceConnectionInfo* aArray ) - { - DP_SDA("CPresencePluginConnection::SetConnectionArray"); - iConnectionArray = aArray; - iConnectionArray->SetConnectionStatus( EActive ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetConnectionArray() -// --------------------------------------------------------------------------- -// -CPresenceConnectionInfo* CPresencePluginConnection::GetConnectionArray( ) - { - DP_SDA("CPresencePluginConnection::GetConnectionArray"); - return iConnectionArray; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::TupleIdGet() -// --------------------------------------------------------------------------- -// -TInt32 CPresencePluginConnection::GetPresenceSetId() const - { - DP_SDA("CPresencePluginConnection::GetPresenceSetId"); - return iSession->GetPresenceSetId(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::TupleIdGet() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::SetTupleId( const TInt aTupleId ) - { - DP_SDA("CPresencePluginConnection::TupleIdSet"); - iOwnTupleId = aTupleId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetStopPublishState() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginConnection::GetStopPublishState() - { - DP_SDA2("::GetStopPublishState = %d", (TInt)iStopPublishState ); - return iStopPublishState; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::SetStopPublishState() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::SetStopPublishState( TBool aState ) - { - DP_SDA2("SetStopPublishState : aState = %d ", (TInt)aState ); - iStopPublishState = aState; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::PresenceWatching -// --------------------------------------------------------------------------- -// -MProtocolPresenceDataHost& CPresencePluginConnection::ProtocolPresenceHost() - { - DP_SDA("CPresencePluginConnection::ProtocolPresenceHost"); - return iConnectionHost->ProtocolPresenceDataHost(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::PresenceWatching -// --------------------------------------------------------------------------- -// -MProtocolPresenceWatching& CPresencePluginConnection::PresenceWatching() - { - DP_SDA("CPresencePluginConnection::PresenceWatching"); - return *iWatcher; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::PresencePublishing -// --------------------------------------------------------------------------- -// - MProtocolPresencePublishing& CPresencePluginConnection::PresencePublishing() - { - return *iPublisher; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::PresentityGroups -// --------------------------------------------------------------------------- -// -MProtocolPresentityGroups& CPresencePluginConnection::PresentityGroups() - { - return *iGroups; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::PresenceAuthorization -// --------------------------------------------------------------------------- -// -MProtocolPresenceAuthorization& - CPresencePluginConnection::PresenceAuthorization() - { - DP_SDA2("CPresencePluginConnection::PresenceAuthorization %x", iAuth); - return *iAuth; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::InternalPresenceAuthorization -// --------------------------------------------------------------------------- -// -CPresencePluginAuthorization& - CPresencePluginConnection::InternalPresenceAuthorization() - { - DP_SDA2("CPresencePluginConnection::InternalPresenceAuthorization %x", iAuth); - return *iAuth; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::OpenSessionL -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::OpenSessionL( - const MXIMPContextClientInfo& /*aClientCtxInfo*/, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginConnection::OpenSessionL"); - iGrantListSubs = ETrue; - iTerminatedCall = EFalse; - iXIMPId = aReqId; - iSession->OpenSessionL(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::OpenSessionL -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::OpenSessionL( const TInt& /*aSettingsId*/, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginConnection::OpenSessionL 2 "); - iXIMPId = aReqId; - iGrantListSubs = ETrue; - iTerminatedCall = EFalse; - iSession->OpenSessionL( ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::CloseSession -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::CloseSession( - const MXIMPContextClientInfo& /*aContextClient*/, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginConnection::CloseSession begin"); - - TBool completeXimpRequestNow( EFalse ); - iConnectionArray->DecreaseClientCount(); - iXIMPId = aReqId; - - // Client count can´t be negative. Increase if goes negative. - // This happens for example in network lost case. - // This method is called then because connection is terminated and - // for all clients which have done unbind. But here we cannot tell - // if this method is called by clients unbind or connection termination - // therefore this workaround needed. - if ( iConnectionArray->ClientCount() < 0 ) - { - completeXimpRequestNow = ETrue; - iConnectionArray->IncreaseClientCount(); - } - - // In case there is no more clients we cannot complete Ximp request - // right away. We have to stop publish first, Ximp request completion is - // handled in RunL after that is done. - if( KErrNone == iConnectionArray->ClientCount() && - (EActive == iConnectionArray->GetConnectionStatus()) ) - { - completeXimpRequestNow = EFalse; // request is completed later in RunL - iGrantListSubs = EFalse; - - //Start stopPublish request - DeRegister(); - } - - if ( !iStopPublishCall ) - { - completeXimpRequestNow = ETrue; - } - - if ( completeXimpRequestNow ) - { - CompleteReq( iXIMPId, KErrNone ); - } - - DP_SDA("CPresencePluginConnection::CloseSession end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetSupportedFeaturesL -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::GetSupportedFeaturesL( - CDesC8Array& aFeatures ) const - { - DP_SDA("CPresencePluginConnection::GetSupportedFeaturesL"); - // first empty the whole array - aFeatures.Reset(); - using namespace NXIMPFeature::Presence; - aFeatures.AppendL( KPublish ); - aFeatures.AppendL( KSubscribe ); - aFeatures.AppendL( KUnsubscribe ); - aFeatures.AppendL( KAddContact ); - aFeatures.AppendL( KDeleteContact ); - aFeatures.AppendL( KFetch ); - aFeatures.AppendL( KBlock ); - aFeatures.AppendL( KUnBlock ); - - if( iImFeatures ) - { - using namespace NXIMPFeature::InstantMessage; - aFeatures.AppendL( KInstantMessage ); - } - } - -//***************************************************************************** -//* FROM MPresencePluginConnectionObs -//***************************************************************************** -// --------------------------------------------------------------------------- -// CPresencePluginConnection::CompleteReq() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::CompleteReq( TReqType aType, TInt aStatus ) - { - DP_SDA("CPresencePluginConnection::CompleteReq"); - // Return immediately if PrimeHost() is not called. - if ( !iConnectionHost ) - { - DP_SDA("CPresencePluginConnection::CompleteReq !iConnectionHost"); - iXIMPId = TXIMPRequestId(); - return; - } - - switch ( aType ) - { - case EOpenSess: - { - DP_SDA("CPresencePluginConnection::CompleteReq EOpenSess"); - iConnectionHost->HandleRequestCompleted( iXIMPId, aStatus ); - iXIMPId = TXIMPRequestId(); - //Set connection status to connection Array - iConnectionArray->SetConnectionStatus( EActive ); - } - break; - case ECloseSess: - { - DP_SDA("CPresencePluginConnection::CompleteReq ECloseSess"); - iConnectionArray->DecreaseClientCount(); - CompleteReq( iXIMPId, aStatus ); - iConnectionArray->SetConnectionStatus( ENotActive ); - } - break; - default: - DP_SDA("CPresencePluginConnection::CompleteReq DEFAULT"); - break; - }; - DP_SDA("CPresencePluginConnection::CompleteReq end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::CompleteReq() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::CompleteReq( - TXIMPRequestId aReqId, - TInt aStatus ) - { - DP_SDA2("CPresencePluginConnection::CompleteReq status %d", aStatus); - // Return immediately if PrimeHost() is not called. - if ( !iConnectionHost ) - { - DP_SDA("CPresencePluginConnection::CompleteReq return"); - return; - } - DP_SDA("CPresencePluginConnection::CompleteReq complete"); - iConnectionHost->HandleRequestCompleted( aReqId, aStatus ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::ObjectFactory() -// --------------------------------------------------------------------------- -// -MXIMPObjectFactory& CPresencePluginConnection::ObjectFactory() - { - DP_SDA("CPresencePluginConnection::ObjectFactory"); - return iConnectionHost->ObjectFactory(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::Host -// --------------------------------------------------------------------------- -// -MXIMPProtocolConnectionHost* CPresencePluginConnection::Host() - { - DP_SDA("CPresencePluginConnection::Host"); - return iConnectionHost; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection:CurrentDomain -// --------------------------------------------------------------------------- -// -TPtrC16 CPresencePluginConnection::CurrentDomain() - { - return iSession->CurrentDomain(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::CurrentSipPresentit8() -// --------------------------------------------------------------------------- -// -TPtrC8 CPresencePluginConnection::CurrentSipPresentity8() - { - return iSession->CurrentSipPresentity(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection:XdmUtilsL -// --------------------------------------------------------------------------- -// -CPresencePluginXdmUtils* CPresencePluginConnection::XdmUtilsL() - { - DP_SDA("CPresencePluginConnection::XdmUtilsL"); - return iSession->XdmUtilsL(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::WinfoHandlerL() -// --------------------------------------------------------------------------- -// -CPresencePluginWinfo* CPresencePluginConnection::WinfoHandlerL() - { - DP_SDA("CPresencePluginConnection::WinfoHandlerL"); - if ( !iPluginWinfo ) - { - iPluginWinfo = CPresencePluginWinfo::NewL( - *this, *(iSession->SimpleConnection() )); - } - - iPluginWinfo->SetHost( iConnectionHost ); - return iPluginWinfo; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::WatcherHandlerL() -// --------------------------------------------------------------------------- -// - CPresencePluginWatcher* CPresencePluginConnection::WatcherHandlerL() - { - DP_SDA("CPresencePluginConnection::WatcherHandlerL"); - if ( !iWatcher ) - { - DP_SDA("CPresencePluginConnection::WatcherHandlerL: if ( !iWatcher )"); - iWatcher = CPresencePluginWatcher::NewL( - *this, - *iSession->SimpleConnection(), - iPresenceData ); - } - return iWatcher; - } -// --------------------------------------------------------------------------- -// CPresencePluginConnection::WinfoTerminatedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::WinfoTerminatedL( TInt aReason ) - { - DP_SDA("CPresencePluginConnection::WinfoTerminatedL"); - // Pass the information to iAuth and iPublisher, - // so that they can call XIMP Plugin Data Host callbacks. - iAuth->WinfoTerminatedL( aReason ); - iPublisher->WinfoTerminatedL( aReason ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::WinfoNotification() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::WinfoNotification( MSimpleWinfo& aWinfo ) - { - DP_SDA("CPresencePluginConnection::WinfoNotification"); - TRAP_IGNORE( iPublisher->WinfoNotificationL( aWinfo )); - TRAP_IGNORE( iAuth->WinfoNotificationL( aWinfo )); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CPresencePluginConnection::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - DP_SDA("CPresencePluginConnection::GetInterface()"); - if ( aInterfaceId == GetInterfaceId() ) - { - DP_SDA("CPresencePluginConnection::GetInterface()if "); - // caller wants this interface - return this; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - DP_SDA("CPresencePluginConnection::GetInterface() panic"); - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetInterface() -// --------------------------------------------------------------------------- -// -const TAny* CPresencePluginConnection::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - DP_SDA("CPresencePluginConnection::GetInterface() const "); - if ( aInterfaceId == GetInterfaceId() ) - { - DP_SDA("CPresencePluginConnection::GetInterface()2 "); - // caller wants this interface - return const_cast(this); - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - DP_SDA("CPresencePluginConnection::GetInterface()panic 2"); - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetInterfaceId() -// --------------------------------------------------------------------------- -// -TInt32 CPresencePluginConnection::GetInterfaceId() const - { - DP_SDA("CPresencePluginConnection::GetInterfaceId() const "); - return MXIMPProtocolConnection::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::ProtocolPresenceFeatures() -// --------------------------------------------------------------------------- -// -MProtocolPresenceFeatures& CPresencePluginConnection:: - ProtocolPresenceFeatures() - { - DP_SDA("CPresencePluginConnection::ProtocolPresenceFeatures() "); - return *this; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::PresenceObjectFactory() -// --------------------------------------------------------------------------- -// -MPresenceObjectFactory& CPresencePluginConnection::PresenceObjectFactoryOwn() - { - DP_SDA("CPresencePluginConnection::PresenceObjectFactoryOwn() "); - return iConnectionHost-> - ProtocolPresenceDataHost().PresenceObjectFactory(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GrandListState() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginConnection::GrandListState( ) - { - DP_SDA2("GrandListState : iGrantListSubs = %d", (TInt)iGrantListSubs ); - return iGrantListSubs; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::IsStopPublishCalled() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginConnection::IsStopPublishCalled( ) - { - DP_SDA("CPresencePluginConnection::IsStopPublishCalled"); - return iStopPublishCall; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::TerminateConnectionL() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::TerminateConnectionL( ) - { - DP_SDA("CPresencePluginConnection::TerminateConnectionL"); - iConnectionHost->HandleConnectionTerminated( NULL ); - iConnectionArray->SetConnectionStatus( ETerminated ); - DP_SDA("CPresencePluginConnection::TerminateConnectionL Done"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::DeRegister() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::DeRegister( ) - { - DP_SDA("CPresencePluginConnection::Deregister"); - - DP_SDA(" -> CloseSession, delete permanent pres data"); - TRAP_IGNORE( iPresenceData->DeletePresenceVariablesL( ServiceId() ) ); - - // Try to stop publish only if we have successfully published - if ( iPublisher->Published() ) - { - DP_SDA("CloseSession call stopPublish"); - TRAP_IGNORE( iPublisher->StopPublishL( iStatus ) ); - iStopPublishCall = ETrue; - SetActive(); - } - - DP_SDA("CPresencePluginConnection::Deregister Done"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::CreateImFeaturesPlugin() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::CreateImFeaturesPluginL( ) - { - if ( !iImFeatures ) - { - DP_SDA("Creating SimpleImPlugin"); - - CSimpleImFeatures::TSimpleImPluginInitParams imPluginInitParams( - *this, - *iSession->SimpleConnection(), - iSession->ServiceId() ); - - iImFeatures = static_cast ( - CProtocolImFeatures::NewL( TUid::Uid(KImplUidSimpleImPlugin), - &imPluginInitParams ) ); - - DP_SDA("Creating SimpleImPlugin done"); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::DeleteImFeaturesPlugin() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::DeleteImFeaturesPlugin( ) - { - if ( iImFeatures ) - { - DP_SDA("Deleting SimpleImPlugin"); - - delete iImFeatures; - iImFeatures = NULL; - REComSession::FinalClose(); - - DP_SDA("Deleting SimpleImPlugin done"); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::DoCancel() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::DoCancel( ) - { - DP_SDA("CPresencePluginConnection::DoCancel CANCEL"); - iPublisher->Cancel(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::RunL() -// --------------------------------------------------------------------------- -// -void CPresencePluginConnection::RunL( ) - { - DP_SDA("CPresencePluginConnection::RunL"); - TInt status = iStatus.Int(); - DP_SDA2("CPresencePluginConnection::RunL status %d", status ); - - if ( iStopPublishCall ) - { - DP_SDA("CPresencePluginConnection::RunL complete"); - - iStopPublishCall = EFalse; - CompleteReq( iXIMPId, status ); - - DP_SDA("CPresencePluginConnection::RunL --> REMOVE CACHE"); - iPresenceData->RemoveCacheL(); - - DP_SDA("CPresencePluginConnection::RunL --> Delete im plugin"); - DeleteImFeaturesPlugin(); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::RunError -// --------------------------------------------------------------------------- -// -TInt CPresencePluginConnection::RunError( TInt /*aError*/ ) - { - DP_SDA("CPresencePluginConnection::RunError"); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GroupsL() -// --------------------------------------------------------------------------- -// -CPresencePluginGroups& CPresencePluginConnection::GroupsL() - { - User::LeaveIfNull( iGroups ); - return *iGroups; - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::ServiceId() -// --------------------------------------------------------------------------- -// -TInt& CPresencePluginConnection::ServiceId() - { - return iSession->ServiceId(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetProtocolInterface() -// --------------------------------------------------------------------------- -// -TAny* CPresencePluginConnection::GetProtocolInterface( TInt aInterfaceId ) - { - DP_SDA("CPresencePluginConnection::GetProtocolInterface"); - - if( aInterfaceId == CProtocolImFeatures::KInterfaceId ) - { - TInt err( KErrNone ); - - if ( !iImFeatures ) - { - DP_SDA(" --> Create im features plugin"); - TRAP( err, CreateImFeaturesPluginL() ); - } - - if ( !err ) - { - DP_SDA(" --> get interface"); - - return iImFeatures->GetInterface( - aInterfaceId, MXIMPBase::EPanicIfUnknown ); - } - else - { - DP_SDA(" --> Creating im features plugin failed"); - return NULL; - } - } - else - { - return NULL; - } - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugincontacts.cpp --- a/simpledatamodeladapter/src/presenceplugincontacts.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,507 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "presenceplugincontacts.h" -#include "presencelogger.h" -#include "presenceplugincontactsobs.h" -#include "presenceplugincontactstatehandler.h" -#include "presencepluginlocalstore.h" -// States -#include "presenceplugincontactstate.h" -#include "presenceplugincontactstateopen.h" -#include "presenceplugincontactstateresolve.h" -#include "presenceplugincontactstatesearch.h" -#include "presenceplugincontactstateend.h" - -const TInt KSDMASPSMaxPropertyLength = 512; - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginContacts::CPresencePluginContacts() -// --------------------------------------------------------------------------- -// -CPresencePluginContacts::CPresencePluginContacts( TInt aServiceId, - MPresencePluginContactsObs& aObserver ) - : CActive( CActive::EPriorityStandard ), - iServiceId( aServiceId ), - iObserver( &aObserver ) - { - CActiveScheduler::Add(this); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContacts::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::ConstructL( const TDesC& aServiceName ) - { - DP_SDA( "CPresencePluginContacts::ConstructL()" ); - - iServiceName = aServiceName.AllocL(); - CVPbkContactStoreUriArray* uriArray = CVPbkContactStoreUriArray::NewLC(); - HBufC* storeName = ContactStoreNameL(); - - if ( NULL != storeName ) - { - DP_SDA2( "CPresencePluginContacts::ConstructL() %S", storeName ); - CleanupStack::PushL( storeName ); - uriArray->AppendL( TVPbkContactStoreUriPtr( *storeName ) ); - CleanupStack::PopAndDestroy( storeName ); - } - else - { - DP_SDA( "CPresencePluginContacts::ConstructL() Use default contact store uri" ); - uriArray->AppendL( TVPbkContactStoreUriPtr( - VPbkContactStoreUris::DefaultCntDbUri() ) ); - } - iContactManager = CVPbkContactManager::NewL( *uriArray ); - CleanupStack::PopAndDestroy( uriArray ); - - DP_SDA( "CPresencePluginContacts::ConstructL() -exit" ); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContacts::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginContacts* CPresencePluginContacts::NewL( TInt aServiceId, - const TDesC& aServiceName, MPresencePluginContactsObs& aObserver ) - { - CPresencePluginContacts* self = - CPresencePluginContacts::NewLC( aServiceId, aServiceName, aObserver ); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContacts::NewLC() -// --------------------------------------------------------------------------- -// -CPresencePluginContacts* CPresencePluginContacts::NewLC( TInt aServiceId, - const TDesC& aServiceName, MPresencePluginContactsObs& aObserver ) - { - CPresencePluginContacts* self = - new( ELeave ) CPresencePluginContacts( aServiceId, aObserver ); - CleanupStack::PushL( self ); - self->ConstructL( aServiceName ); - return self; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContacts::~CPresencePluginContacts() -// --------------------------------------------------------------------------- -// -CPresencePluginContacts::~CPresencePluginContacts() - { - DP_SDA("CPresencePluginContacts::~CPresencePluginContacts"); - - delete iServiceName; - delete iSearchText; - delete iContactOperation; - iStoreContactArray.ResetAndDestroy(); - delete iStateHandler; - delete iFieldTypeRefList; - delete iContactLinkArray; - if( iContactManager ) - { - TRAP_IGNORE( iContactManager->ContactStoresL().CloseAll( *this ) ); - } - delete iContactManager; - iClientStatus = NULL; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContacts::PresenceIdStoredL -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::IsPresenceIdStoredL( - const TDesC16& aPresenceId, TRequestStatus& aStatus ) - { - DP_SDA( "CPresencePluginContacts::IsPresenceIdStoredL -Enter" ); - - iOperation = EOperationIsPresenceStoredToContacts; - - aStatus = KRequestPending; - iClientStatus = &aStatus; - - iSearchText = HBufC::NewL( - iServiceName->Length() + aPresenceId.Length() + 1 ); - TPtr searchTextPtr = iSearchText->Des(); - searchTextPtr.Copy( *iServiceName ); - searchTextPtr.Append( ':' ); - searchTextPtr.Append( aPresenceId ); - - iFieldTypeRefList = CVPbkFieldTypeRefsList::NewL(); - iFieldTypeRefList->AppendL( - *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_IMPP ) ); - - iStateHandler = CPresencePluginContactStateHandler::NewL(); - - iStateHandler->AddStateL( new( ELeave ) CPresencePluginContactStateOpen( - *this, *iStateHandler ) ); - iStateHandler->AddStateL( new( ELeave ) CPresencePluginContactStateSearch( - *this, *iStateHandler ) ); - iStateHandler->AddStateL( new( ELeave ) CPresencePluginContactStateResolve( - *this, *iStateHandler ) ); - iStateHandler->AddStateL( new( ELeave ) CPresencePluginContactStateEnd( - *this, *iStateHandler ) ); - - iStateHandler->Start( &iStatus ); - SetActive(); - - DP_SDA( "CPresencePluginContacts::IsPresenceIdStoredL - exit" ); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContacts::ContactStoreNameL -// --------------------------------------------------------------------------- -// -HBufC* CPresencePluginContacts::ContactStoreNameL() - { - DP_SDA( "CPresencePluginContacts::ContactStoreNameL()" ); - - HBufC* storeName = NULL; - CSPSettings* spSettings = CSPSettings::NewLC(); - CSPProperty* property = CSPProperty::NewLC(); - - TInt err = spSettings->FindPropertyL( iServiceId, - EPropertyContactStoreId, - *property ); - - if ( KErrNone == err ) - { - storeName = HBufC::NewL( KSDMASPSMaxPropertyLength ); - TPtr16 storeNamePtr = storeName->Des(); - err = property->GetValue( storeNamePtr ); - } - - CleanupStack::PopAndDestroy( property ); - CleanupStack::PopAndDestroy( spSettings ); - - return storeName; - } - - -// --------------------------------------------------------------------------- -// From class MPresenceContactsContextBase. -// CPresencePluginContacts::Open -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::OpenL() - { - DP_SDA( "CPresencePluginContacts::Open()" ); - iContactManager->ContactStoresL().OpenAllL( *this ); - } - - -// --------------------------------------------------------------------------- -// From class MPresenceContactsContextBase. -// CPresencePluginContacts::Search -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::SearchL() - { - DP_SDA( "CPresencePluginContacts::Search()" ); - iContactOperation = iContactManager->FindL( - *iSearchText, *iFieldTypeRefList, *this ); - } - - -// --------------------------------------------------------------------------- -// From class MPresenceContactsContextBase. -// CPresencePluginContacts::ContactLinkArray -// --------------------------------------------------------------------------- -// -const MVPbkContactLinkArray& CPresencePluginContacts::ContactLinkArrayL() - { - if ( NULL == iContactLinkArray ) - { - User::Leave( KErrNotReady ); - } - return *iContactLinkArray; - } - - -// --------------------------------------------------------------------------- -// From class MPresenceContactsContextBase. -//CPresencePluginContacts::RetrieveContactL -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::RetrieveContactL( - const MVPbkContactLink& aContactLink ) - { - DP_SDA( "CPresencePluginContacts::RetrieveContactL()" ); - iContactOperation = - iContactManager->RetrieveContactL( aContactLink, *this ); - } - - -// --------------------------------------------------------------------------- -// From class MVPbkContactStoreListObserver. -// CPresencePluginContacts::OpenComplete -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::OpenComplete() - { - DP_SDA( "CPresencePluginContacts::OpenComplete()" ); - iStateHandler->State()->Complete(); - } - - -// --------------------------------------------------------------------------- -// From class MVPbkContactStoreObserver. -// CPresencePluginContacts::StoreReady -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::StoreReady( - MVPbkContactStore& /*aContactStore*/ ) - { - DP_SDA( "CPresencePluginContacts::StoreReady()" ); - } - - -// --------------------------------------------------------------------------- -// From class MVPbkContactStoreObserver. -// CPresencePluginContacts::StoreUnavailable -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::StoreUnavailable( - MVPbkContactStore& /*aContactStore*/, TInt /*aReason*/ ) - { - DP_SDA( "CPresencePluginContacts::StoreUnavailable()" ); - } - - -// --------------------------------------------------------------------------- -// From class MVPbkContactStoreObserver. -// CPresencePluginContacts::HandleStoreEventL -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::HandleStoreEventL( - MVPbkContactStore& /*aContactStore*/, - TVPbkContactStoreEvent /*aStoreEvent*/ ) - { - DP_SDA( "CPresencePluginContacts::HandleStoreEventL()" ); - } - - -// --------------------------------------------------------------------------- -// From class MVPbkContactFindObserver. -// CPresencePluginContacts::FindCompleteL -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::FindCompleteL( MVPbkContactLinkArray* aResults ) - { - DP_SDA( "CPresencePluginContacts::FindCompleteL()" ); - - delete iContactLinkArray; - iContactLinkArray = NULL; - iContactLinkArray = aResults; - - delete iContactOperation; - iContactOperation = NULL; - - iStateHandler->State()->Complete(); - } - - -// --------------------------------------------------------------------------- -// From class MVPbkContactFindObserver. -// CPresencePluginContacts::FindFailed -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::FindFailed( TInt aError ) - { - DP_SDA( "CPresencePluginContacts::FindFailed()" ); - - delete iContactOperation; - iContactOperation = NULL; - - iStateHandler->State()->Error( aError ); - } - - -// --------------------------------------------------------------------------- -// From class MVPbkSingleContactOperationObserver. -// CPresencePluginContacts::VPbkSingleContactOperationComplete -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::VPbkSingleContactOperationComplete( - MVPbkContactOperationBase& aOperation, - MVPbkStoreContact* aContact ) - { - DP_SDA( "CPresencePluginContacts::VPbkSingleContactOperationComplete()" ); - - if ( iContactOperation == &aOperation ) - { - delete iContactOperation; - iContactOperation = NULL; - } - - TInt error = iStoreContactArray.Append( aContact ); - if ( KErrNone != error ) - { - delete aContact; - aContact = NULL; - iStateHandler->State()->Error( error ); - } - else - { - iStateHandler->State()->Complete(); - } - } - - -// --------------------------------------------------------------------------- -// From class MVPbkSingleContactOperationObserver. -// CPresencePluginContacts::VPbkSingleContactOperationFailed -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::VPbkSingleContactOperationFailed( - MVPbkContactOperationBase& aOperation, - TInt aError ) - { - DP_SDA( "CPresencePluginContacts::VPbkSingleContactOperationFailed()" ); - - if ( iContactOperation == &aOperation ) - { - delete iContactOperation; - iContactOperation = NULL; - } - - iStateHandler->State()->Error( aError); - } - - -// --------------------------------------------------------------------------- -// From class CActive. -// CPresencePluginContacts::RunL -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::RunL() - { - DP_SDA2( "CPresencePluginContacts::RunL - status %d", iStatus.Int() ); - - TBool result( EFalse ); - TBool found( EFalse ); - CPresencePluginLocalstore* localStore = NULL; - TInt error = iStatus.Int(); - - switch( iOperation ) - { - case EOperationIsPresenceStoredToContacts: - DP_SDA( "CPresencePluginContacts::RunL -EOperationIsPresenceStoredToContacts" ); - - if ( KErrNone == error ) - { - localStore = CPresencePluginLocalstore::NewLC( *iServiceName ); - - for ( TInt i( 0 ); ( i < iStoreContactArray.Count() ) && !found; i++ ) - { - MVPbkContactLink* link = iStoreContactArray[ i ]->CreateLinkLC(); - CVPbkContactIdConverter* converter = - CVPbkContactIdConverter::NewL( link->ContactStore() ); - CleanupStack::PushL( converter ); - - TInt32 id = converter->LinkToIdentifier( *link ); - if ( localStore->SeekRowAtContactColL( id ) ) - { - found = ETrue; - result = ETrue; - } - CleanupStack::PopAndDestroy( converter ); - CleanupStack::PopAndDestroy(); // link - } - - CleanupStack::PopAndDestroy( localStore ); - } - if ( KErrNotFound == error ) - { - error = KErrNone; - } - iObserver->RequestComplete( &result, iOperation, error ); - break; - default: - break; - } - // Operation completed. - // State handler not needet anymore - delete iStateHandler; - iStateHandler = NULL; - // Close contact stores - iContactManager->ContactStoresL().CloseAll( *this ); - - User::RequestComplete( iClientStatus, error ); - } - - -// --------------------------------------------------------------------------- -// From class CActive. -// CPresencePluginContacts::DoCancel -// --------------------------------------------------------------------------- -// -void CPresencePluginContacts::DoCancel() - { - if ( iClientStatus && *iClientStatus == KRequestPending ) - { - User::RequestComplete( iClientStatus, KErrCancel ); - } - iStateHandler->Complete( KErrCancel ); - } - - -// --------------------------------------------------------------------------- -// From class CActive. -// CPresencePluginContacts::RunError -// --------------------------------------------------------------------------- -// -TInt CPresencePluginContacts::RunError( TInt aError ) - { - DP_SDA2( "CPresencePluginContacts::RunError - status %d", aError ); - User::RequestComplete( iClientStatus, aError ); - return KErrNone; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugincontactstate.cpp --- a/simpledatamodeladapter/src/presenceplugincontactstate.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include "presenceplugincontactstate.h" -#include "presenceplugincontactstatehandler.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencepluginContactState::CPresencepluginContactState -// --------------------------------------------------------------------------- -// -CPresencepluginContactState::CPresencepluginContactState( - MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ) - : iContext( &aContext ), iStateHandler( &aStateHandler ) - { - } - - -// --------------------------------------------------------------------------- -// CPresencepluginContactState::~CPresencepluginContactState -// --------------------------------------------------------------------------- -// -CPresencepluginContactState::~CPresencepluginContactState() - { - } - - -// --------------------------------------------------------------------------- -// CPresencepluginContactState::Complete -// --------------------------------------------------------------------------- -// -void CPresencepluginContactState::Complete() - { - iStateHandler->ProgressToNextState(); - } - - -// --------------------------------------------------------------------------- -// CPresencepluginContactState::Complete -// --------------------------------------------------------------------------- -// -void CPresencepluginContactState::Error( TInt aError ) - { - iStateHandler->Complete( aError ); - } diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugincontactstateend.cpp --- a/simpledatamodeladapter/src/presenceplugincontactstateend.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include "presenceplugincontactstateend.h" -#include "presenceplugincontactstatehandler.h" -#include "presencecontactscontextbase.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateEnd::CPresencePluginContactStateEnd -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateEnd::CPresencePluginContactStateEnd( - MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ) - : CPresencepluginContactState( aContext, aStateHandler ) - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateEnd::~CPresencePluginContactStateEnd -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateEnd::~CPresencePluginContactStateEnd() - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateEnd::HandleL -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateEnd::HandleL() - { - iStateHandler->Complete( KErrNone ); - } diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugincontactstatehandler.cpp --- a/simpledatamodeladapter/src/presenceplugincontactstatehandler.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include "presenceplugincontactstatehandler.h" -#include "presenceplugincontactstate.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateHandler::CPresencePluginContactStateHandler -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateHandler::CPresencePluginContactStateHandler() - : iCurrentStateIndex( 0 ) - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateHandler::~CPresencePluginContactStateHandler -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateHandler::~CPresencePluginContactStateHandler() - { - iStateArray.ResetAndDestroy(); - iClientStatus = NULL; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateHandler::NewL -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateHandler* CPresencePluginContactStateHandler::NewL() - { - CPresencePluginContactStateHandler* self = - new (ELeave) CPresencePluginContactStateHandler(); - return self; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateHandler::Start -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateHandler::Start( TRequestStatus* aStatus ) - { - iClientStatus = aStatus; - *iClientStatus = KRequestPending; - iCurrentStateIndex = 0; - HandleNextState(); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateHandler::Complete -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateHandler::Complete( TInt aError ) - { - if( iClientStatus && *iClientStatus == KRequestPending ) - { - User::RequestComplete( iClientStatus, aError ); - } - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateHandler::ProgressToNextState -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateHandler::ProgressToNextState() - { - iCurrentStateIndex++; - HandleNextState(); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateHandler::HandleNextState -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateHandler::HandleNextState() - { - TRAPD( error, State()->HandleL() ); - if ( KErrNone != error ) - { - Complete( error ); - } - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateHandler::AddStateL -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateHandler::AddStateL( - CPresencepluginContactState* aState ) - { - CleanupStack::PushL( aState ); - iStateArray.AppendL( aState ); - CleanupStack::Pop( aState ); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateHandler::State -// --------------------------------------------------------------------------- -// -CPresencepluginContactState* CPresencePluginContactStateHandler::State() - { - return iStateArray[ iCurrentStateIndex ]; - } diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugincontactstateopen.cpp --- a/simpledatamodeladapter/src/presenceplugincontactstateopen.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include "presenceplugincontactstateopen.h" -#include "presencecontactscontextbase.h" -#include "presenceplugincontactstatehandler.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateOpen::CPresencePluginContactStateOpen -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateOpen::CPresencePluginContactStateOpen( - MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ) - : CPresencepluginContactState( aContext, aStateHandler ) - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateOpen::~CPresencePluginContactStateOpen -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateOpen::~CPresencePluginContactStateOpen() - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateOpen::HandleL -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateOpen::HandleL() - { - iContext->OpenL(); - } diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugincontactstateresolve.cpp --- a/simpledatamodeladapter/src/presenceplugincontactstateresolve.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include "presenceplugincontactstateresolve.h" -#include "presencecontactscontextbase.h" -#include "presenceplugincontactstatehandler.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateResolve::PresencePluginContactStateResolve -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateResolve::CPresencePluginContactStateResolve( - MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ) - : CPresencepluginContactState( aContext, aStateHandler ), - iContactLinkIndex( NULL ), - iContactLinkCount( NULL ) - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateResolve::~CPresencePluginContactStateResolve -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateResolve::~CPresencePluginContactStateResolve() - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateResolve::HandleL -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateResolve::HandleL() - { - iContactLinkCount = iContext->ContactLinkArrayL().Count(); - if ( NULL == iContactLinkCount ) - { - Error( KErrNotFound ); - } - else - { - iContext->RetrieveContactL( - iContext->ContactLinkArrayL().At( iContactLinkIndex ) ); - iContactLinkIndex++; - } - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateResolve::Complete -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateResolve::Complete() - { - if ( iContactLinkIndex < iContactLinkCount ) - { - TRAPD( error, HandleL() ); - if ( KErrNone != error ) - { - Error( error ); - } - } - else - { - iStateHandler->ProgressToNextState(); - } - } diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugincontactstatesearch.cpp --- a/simpledatamodeladapter/src/presenceplugincontactstatesearch.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include "presenceplugincontactstatesearch.h" -#include "presencecontactscontextbase.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateSearch::CPresencePluginContactStateSearch -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateSearch::CPresencePluginContactStateSearch( - MPresenceContactsContextBase& aContext, - CPresencePluginContactStateHandler& aStateHandler ) - : CPresencepluginContactState( aContext, aStateHandler ) - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateSearch::~CPresencePluginContactStateSearch -// --------------------------------------------------------------------------- -// -CPresencePluginContactStateSearch::~CPresencePluginContactStateSearch() - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginContactStateSearch::HandleL -// --------------------------------------------------------------------------- -// -void CPresencePluginContactStateSearch::HandleL() - { - iContext->SearchL(); - } diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugindata.cpp --- a/simpledatamodeladapter/src/presenceplugindata.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1839 +0,0 @@ -/* -* Copyright (c) 2007-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "presenceplugindata.h" -#include "presenceplugincommon.h" -#include "presencepluginvirtualgroup.h" -#include "presencepluginlanguagecodes.h" - -// --------------------------------------------------------------------------- -// CPresencePluginData::CPresencePluginData -// --------------------------------------------------------------------------- -// -CPresencePluginData::CPresencePluginData( - MPresencePluginConnectionObs& aObs, - TInt aServiceId ): - iConnObs( aObs ), - iServiceId( aServiceId ), - iPresenceCacheWriter( NULL ), - iPresenceCacheReader( NULL ) - { - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::~CPresencePluginData -// --------------------------------------------------------------------------- -// -CPresencePluginData::~CPresencePluginData() - { - DP_SDA("CPresencePluginData::~CPresencePluginData"); - delete iPresenceCacheWriter; - delete iPresenceCacheReader; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::NewL -// --------------------------------------------------------------------------- -// -CPresencePluginData* CPresencePluginData::NewL( - MPresencePluginConnectionObs& aObs, TInt aServiceId ) - { - CPresencePluginData* self = CPresencePluginData::NewLC( - aObs, - aServiceId ); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginData::ConstructL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::ConstructL() - { - DP_SDA("CPresencePluginData::ConstructL"); - iPresenceCacheWriter = MPresenceCacheWriter2::CreateWriterL(); - iPresenceCacheReader = MPresenceCacheReader2::CreateReaderL(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::NewLC -// --------------------------------------------------------------------------- -// -CPresencePluginData* CPresencePluginData::NewLC( - MPresencePluginConnectionObs& aObs, TInt aServiceId ) - { - CPresencePluginData* self = - new( ELeave ) CPresencePluginData( aObs, aServiceId ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::NotifyToBlockedToXIMPL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::NotifyToBlockedToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent ) - { - DP_SDA("CPresencePluginData::NotifyToBlockedToXIMPL"); - MPersonPresenceInfo* persInfo = - aPresenceFactory.NewPersonPresenceInfoLC(); - MPresenceInfoFieldCollection& coll = persInfo->Fields(); - - //Set pending - using namespace NPresenceInfo::NFieldType; - using namespace NPresencePlugin::NPresenceStates; - - MPresenceInfoField* field = aPresenceFactory.NewInfoFieldLC(); - field->SetFieldTypeL( KAvailabilityEnum ); - - // use mapped enums to pass status - MPresenceInfoFieldValueEnum* enumField = - aPresenceFactory.NewEnumInfoFieldLC(); - - // HOX: BLOCKED ENUM NEEDED TO XIMP - enumField->SetValueL( NPresenceInfo::ENotAvailable ); - field->SetFieldValue( enumField ); - - coll.AddOrReplaceFieldL( field ); - CleanupStack::Pop( 2 ); // >> field, enumField - - // Add status msg field - MPresenceInfoField* noteField = aPresenceFactory.NewInfoFieldLC(); - noteField->SetFieldTypeL( KStatusMessage ); - - MPresenceInfoFieldValueText* textField = - aPresenceFactory.NewTextInfoFieldLC(); - textField->SetTextValueL( aUnicodeNoteContent ); - - noteField->SetFieldValue( textField ); - - coll.AddOrReplaceFieldL( noteField ); - CleanupStack::Pop( 2 ); // >> noteField, enumField - - aPrInfo.SetPersonPresenceL( persInfo ); - CleanupStack::Pop(); // >> persInfo - DP_SDA("CPresencePluginData::NotifyToBlockedToXIMPL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::NotifyToPendingToXIMPL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::NotifyToPendingToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent ) - { - DP_SDA("CPresencePluginData::NotifyToPendingToXIMP"); - MPersonPresenceInfo* persInfo = - aPresenceFactory.NewPersonPresenceInfoLC(); - MPresenceInfoFieldCollection& coll = persInfo->Fields(); - - //Set pending - using namespace NPresenceInfo::NFieldType; - using namespace NPresencePlugin::NPresenceStates; - - MPresenceInfoField* field = aPresenceFactory.NewInfoFieldLC(); - field->SetFieldTypeL( KAvailabilityEnum ); - - // use mapped enums to pass status - MPresenceInfoFieldValueEnum* enumField = - aPresenceFactory.NewEnumInfoFieldLC(); - enumField->SetValueL( NPresenceInfo::ERemotePending ); - field->SetFieldValue( enumField ); - - coll.AddOrReplaceFieldL( field ); - CleanupStack::Pop( 2 ); // >> field, enumField - - // Add status msg field - MPresenceInfoField* noteField = aPresenceFactory.NewInfoFieldLC(); - noteField->SetFieldTypeL( KStatusMessage ); - - MPresenceInfoFieldValueText* textField = - aPresenceFactory.NewTextInfoFieldLC(); - textField->SetTextValueL( aUnicodeNoteContent ); - - noteField->SetFieldValue( textField ); - - coll.AddOrReplaceFieldL( noteField ); - CleanupStack::Pop( 2 ); // >> noteField, enumField - - aPrInfo.SetPersonPresenceL( persInfo ); - CleanupStack::Pop(); // >> persInfo - DP_SDA("CPresencePluginData::NotifyToPendingToXIMP end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::NotifyActiveToPrInfoL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::NotifyToActiveToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent, - NPresenceInfo::TAvailabilityValues aAvailability ) - { - DP_SDA("CPresencePluginData::NotifyToActiveToXIMPL"); - MPersonPresenceInfo* persInfo = - aPresenceFactory.NewPersonPresenceInfoLC(); - MPresenceInfoFieldCollection& coll = persInfo->Fields(); - - //Set pending - using namespace NPresenceInfo::NFieldType; - using namespace NPresencePlugin::NPresenceStates; - - MPresenceInfoField* field = aPresenceFactory.NewInfoFieldLC(); - field->SetFieldTypeL( KAvailabilityEnum ); - - // use mapped enums to pass status - MPresenceInfoFieldValueEnum* enumField = - aPresenceFactory.NewEnumInfoFieldLC(); - enumField->SetValueL( aAvailability ); - field->SetFieldValue( enumField ); - - coll.AddOrReplaceFieldL( field ); - CleanupStack::Pop( 2 ); // >> field, enumField - - // Add status msg field - MPresenceInfoField* noteField = aPresenceFactory.NewInfoFieldLC(); - noteField->SetFieldTypeL( KStatusMessage ); - - MPresenceInfoFieldValueText* textField = - aPresenceFactory.NewTextInfoFieldLC(); - textField->SetTextValueL( aUnicodeNoteContent ); - - noteField->SetFieldValue( textField ); - - coll.AddOrReplaceFieldL( noteField ); - CleanupStack::Pop( 2 ); // >> noteField, enumField - - aPrInfo.SetPersonPresenceL( persInfo ); - CleanupStack::Pop(); // >> persInfo - DP_SDA("CPresencePluginData::NotifyToActiveToXIMPL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::NotifyTerminatedToPrInfoL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::NotifyTerminatedToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent ) - { - DP_SDA("CPresencePluginData::NotifyTerminatedToXIMPL"); - MPersonPresenceInfo* persInfo = - aPresenceFactory.NewPersonPresenceInfoLC(); - MPresenceInfoFieldCollection& coll = persInfo->Fields(); - - //Set pending - using namespace NPresenceInfo::NFieldType; - using namespace NPresencePlugin::NPresenceStates; - - MPresenceInfoField* field = aPresenceFactory.NewInfoFieldLC(); - field->SetFieldTypeL( KAvailabilityEnum ); - - // use mapped enums to pass status - MPresenceInfoFieldValueEnum* enumField = - aPresenceFactory.NewEnumInfoFieldLC(); - enumField->SetValueL( NPresenceInfo::EOffline ); - field->SetFieldValue( enumField ); - - coll.AddOrReplaceFieldL( field ); - CleanupStack::Pop( 2 ); // >> field, enumField - - // Add status msg field - MPresenceInfoField* noteField = aPresenceFactory.NewInfoFieldLC(); - noteField->SetFieldTypeL( KStatusMessage ); - - MPresenceInfoFieldValueText* textField = - aPresenceFactory.NewTextInfoFieldLC(); - textField->SetTextValueL( aUnicodeNoteContent ); - - noteField->SetFieldValue( textField ); - - coll.AddOrReplaceFieldL( noteField ); - CleanupStack::Pop( 2 ); // >> noteField, enumField - - aPrInfo.SetPersonPresenceL( persInfo ); - CleanupStack::Pop(); // >> persInfo - DP_SDA("CPresencePluginData::NotifyTerminatedToXIMPL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::NotifyToPrInfoL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::NotifyToPrInfoL( - MXIMPObjectFactory& /*aFactory*/, - MPresenceObjectFactory& aPresenceFactory, - MSimpleDocument& aDocument, - MPresenceInfo& aPrInfo ) - { - DP_SDA("CPresencePluginData::NotifyToPrInfoL"); - MPersonPresenceInfo* persInfo = - aPresenceFactory.NewPersonPresenceInfoLC(); - DP_SDA("CPresencePluginData::NotifyToPrInfoL persInfo"); - - if( !aDocument.EntityURI() ) - { - DP_SDA("CPresencePluginData::NotifyToPrInfoL entity URL not valid"); - User::Leave( KErrCancel ); - } - - MPresenceInfoFieldCollection& coll = persInfo->Fields(); - - DP_SDA("CPresencePluginData::NotifyToPrInfoL collection"); - // Search own person info. Notice: Extend supported attributes later - TBool basicElementFound = EFalse; - TBool activitiesElementFound = EFalse; - TBool noteElemFound = EFalse; - - DP_SDA("CPresencePluginData::NotifyToPrInfoL RPointerArray"); - RPointerArray elems; - DP_SDA("CPresencePluginData::NotifyToPrInfoL Push elems"); - CleanupClosePushL( elems ); - DP_SDA("CPresencePluginData::NotifyToPrInfoL aDocument"); - TInt err = aDocument.SimpleElementsL( elems ); - - DP_SDA2("CPresencePluginData::NotifyToPrInfoL err %d", err); - - RPointerArray basicElems; - CleanupClosePushL( basicElems ); - MSimpleElement* basicSimpleElem(NULL); - - RPointerArray activitiesElems; - CleanupClosePushL( activitiesElems ); - MSimpleElement* activitiesSimpleElem(NULL); - MSimpleElement* noteSimpleElem(NULL); - - if ( !err ) - { - DP_SDA("CPresencePluginData::NotifyToPrInfoL, elements ok"); - TInt count = elems.Count(); - DP_SDA2("CPresencePluginData::NotifyToPrInfoL, element count: %d", count ); - - using namespace NPresencePlugin::NPresence; - - MSimpleElement* elem = NULL; - TPtrC8 p8; - - for ( TInt i = 0; i < count; i++ ) - { - DP_SDA2("CPresencePluginData::NotifyToPrInfoL, handling elem[%d]", i ); - - elem = elems[i]; - p8.Set( elem->LocalName()); - if (!( p8.CompareF( KPresencePerson8 )) || - !( p8.CompareF( KPresenceTuple8 )) ) - { - // person element found - RPointerArray elems2; - CleanupClosePushL( elems2 ); - elem->SimpleElementsL( elems2 ); - TInt count2 = elems2.Count(); - DP_SDA2("CPresencePluginData::NotifyToPrInfoL count2 %d", count2); - for ( TInt j = 0; j < count2; j++ ) - { - DP_SDA("CPresencePluginData::NotifyToPrInfoL 4"); - // - MSimpleElement* elem2 = elems2[j]; - - //FIND BASIC/ACTIVITIES ELEMENT - if ( !elem2->LocalName().CompareF( KPresenceStatus8 ) && - !basicElementFound ) - { - DP_SDA("NotifyToPrInfoL PresenceStatus"); - //Get elem2 childs - elem2->SimpleElementsL( basicElems ); - TInt count3 = basicElems.Count(); //Child count - for ( TInt k = 0; k < count3; k++ ) - { - MSimpleElement* tempElem = basicElems[k]; - if ( !tempElem->LocalName().CompareF( - KPresenceBasic8 )) - { - DP_SDA("NotifyToPrInfoL basic elem true"); - basicSimpleElem = basicElems[k]; - basicElementFound = ETrue; - } - else if( !tempElem->LocalName().CompareF( - KPresenceActivities8 )) - { - DP_SDA("NotifyToPrInfoL activities under basic"); - activitiesSimpleElem = basicElems[k]; - activitiesElementFound = ETrue; - } - } - } - - //FIND ACTIVITIES ELEMENT - if ( basicElementFound && !activitiesElementFound && - !elem2->LocalName().CompareF( KPresenceActivities8 ) ) - { - DP_SDA("NotifyToPrInfoL activities found outside basic"); - elem2->SimpleElementsL( activitiesElems ); - TInt count4 = activitiesElems.Count(); - for ( TInt l = 0; l < count4; l++ ) - { - activitiesSimpleElem = activitiesElems[l]; - activitiesElementFound = ETrue; - DP_SDA("CPresencePluginData::NotifyToPrInfoL 6"); - } - } - } - - if ( basicElementFound && !noteSimpleElem ) - { - noteSimpleElem = ResolveNoteElementL( elems2 ); - } - - DP_SDA("NotifyToPrInfoL ALL DONE"); - CleanupStack::PopAndDestroy( &elems2 ); - - if ( basicElementFound && activitiesElementFound && noteElemFound ) - { - DP_SDA("NotifyToPrInfoL ALL DONE break out"); - //Just handle first status information from document - // In future server should support - //Also client should be can handle timestaps if there are present - break; - } - } - // Check note field - else if ( basicElementFound && !( p8.CompareF( KPresenceNote8 )) && - !noteSimpleElem ) - { - DP_SDA("NotifyToPrInfoL note field found outside tuple"); - noteSimpleElem = elem; - } - } - } - - if ( basicElementFound ) - { - DP_SDA("NotifyToPrInfoL basic proceed to handling"); - SingleUserStatusToXIMPL( - aPresenceFactory, basicSimpleElem, - activitiesSimpleElem, noteSimpleElem, coll ); - } - CleanupStack::PopAndDestroy( &activitiesElems ); - CleanupStack::PopAndDestroy( &basicElems ); - CleanupStack::PopAndDestroy( &elems ); - - aPrInfo.SetPersonPresenceL( persInfo ); - CleanupStack::Pop(); // >> persInfo - - // TODO2: Notice: the following crashes in old PrFW version - /* - aPrInfo.AddDevicePresenceL ( NULL ); - aPrInfo.AddServicePresenceL( NULL ); - */ - DP_SDA("CPresencePluginData::NotifyToPrInfoL end"); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginData::CacheEntriesFromPrInfo -// --------------------------------------------------------------------------- -// -void CPresencePluginData::CacheEntriesFromPrInfo( - MPresenceInfo& aPrInfo, - MPresenceBuddyInfo2::TAvailabilityValues& aAvailability, - TPtr& aExtendedAvailability, - TPtr& aStatusMessage ) - { - DP_SDA("CPresencePluginData::CacheEntriesFromPrInfoL"); - - DP_SDA(" -> CacheEntriesFromPrInfoL, fetch status enum field"); - MPresenceInfoField* statusEnumInfoField = NULL; - MPersonPresenceInfo* presInfo = aPrInfo.PersonPresence(); - if ( presInfo ) - { - DP_SDA(" -> CacheEntriesFromPrInfoL, has person presence, get field"); - presInfo->Fields().LookupFieldByFieldType( - statusEnumInfoField, - NPresenceInfo::NFieldType::KAvailabilityEnum ); - DP_SDA(" -> CacheEntriesFromPrInfoL, fetch status enum field done, check item"); - if ( statusEnumInfoField ) - { - DP_SDA(" -> status enum field found"); - const MPresenceInfoFieldValueEnum* availability = - TXIMPGetInterface< const MPresenceInfoFieldValueEnum >::From( - statusEnumInfoField->FieldValue(), MXIMPBase::EPanicIfUnknown ); - switch( availability->Value() ) - { - case NPresenceInfo::EAvailable: - { - DP_SDA(" -> status enum field => available"); - aAvailability = MPresenceBuddyInfo2::EAvailable; - aExtendedAvailability.Copy( KDefaultAvailableStatus() ); - } - break; - - case NPresenceInfo::EBusy: - { - DP_SDA(" -> status enum field => busy"); - aAvailability = MPresenceBuddyInfo2::EBusy; - aExtendedAvailability.Copy( KDndState() ); - } - break; - - case NPresenceInfo::EOnPhone: - { - DP_SDA(" -> status enum field => on phone"); - aAvailability = MPresenceBuddyInfo2::EBusy; - aExtendedAvailability.Copy( KOnPhoneState() ); - } - break; - - case NPresenceInfo::EAway: - { - DP_SDA(" -> status enum field => away"); - aAvailability = MPresenceBuddyInfo2::EBusy; - aExtendedAvailability.Copy( KAwayState() ); - } - break; - - case NPresenceInfo::EDoNotDisturb: - { - DP_SDA(" -> status enum field => dnd"); - aAvailability = MPresenceBuddyInfo2::EBusy; - aExtendedAvailability.Copy( KDndState() ); - } - break; - - case NPresenceInfo::EOffline: - case NPresenceInfo::ENotAvailable: - default: - { - DP_SDA(" -> status enum field => offline/not available/default"); - aAvailability = MPresenceBuddyInfo2::ENotAvailable; - aExtendedAvailability.Copy( KInvisibleState() ); - } - break; - } - } - else - { - DP_SDA(" -> status enum not found => set unknown"); - aAvailability = MPresenceBuddyInfo2::EUnknownAvailability; - aExtendedAvailability.Copy( KNullDesC() ); - } - DP_SDA(" -> fetch status message field"); - MPresenceInfoField* statusMsgInfoField = NULL; - presInfo->Fields().LookupFieldByFieldType( - statusMsgInfoField, - NPresenceInfo::NFieldType::KStatusMessage ); - DP_SDA(" -> CacheEntriesFromPrInfoL, fetch status message field done, check item"); - if ( statusMsgInfoField ) - { - DP_SDA(" -> status msg field found"); - const MPresenceInfoFieldValueText* statusMsg = - TXIMPGetInterface< const MPresenceInfoFieldValueText >::From( - statusMsgInfoField->FieldValue(), MXIMPBase::EPanicIfUnknown ); - if ( statusMsg && statusMsg->TextValue().Length() ) - { - DP_SDA(" -> status msg field found, copy content"); - aStatusMessage.Copy( statusMsg->TextValue() ); - } - } - else - { - DP_SDA(" -> status msg field not found, set empty"); - aStatusMessage.Copy( KNullDesC() ); - } - } - - DP_SDA("CPresencePluginData::CacheEntriesFromPrInfoL out"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::SingleUserStatusToXIMPL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::SingleUserStatusToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aBasicElement, - MSimpleElement* aActivitiesElement, - MSimpleElement* aNoteElement, - MPresenceInfoFieldCollection& aCollection ) - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL"); - - using namespace NPresenceInfo::NFieldType; - using namespace NPresencePlugin::NPresenceStates; - - //Get aBasicElem content - HBufC* nodeContent = aBasicElement->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - - TBuf basicContentBuf; - basicContentBuf.Copy( *nodeContent ); - DP_SDA2("SingleUserStatusToXIMPL basicContent %S", &basicContentBuf); - - TBuf activitiesContentBuf; - - if ( !aActivitiesElement ) - { - activitiesContentBuf.Copy( KPresenceUnknow ); - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL activities NULL"); - } - else - { - activitiesContentBuf.Copy( aActivitiesElement->LocalName() ); - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL else"); - } - - if ( nodeContent ) - { - using namespace NPresenceInfo::NFieldType; - MPresenceInfoField* field = aPresenceFactory.NewInfoFieldLC(); - field->SetFieldTypeL( KAvailabilityEnum ); - - // use mapped enums to pass status - MPresenceInfoFieldValueEnum* enumField = - aPresenceFactory.NewEnumInfoFieldLC(); - - // Busy case - if ( !nodeContent->Des().CompareF( KPresenceOpen ) && - !activitiesContentBuf.CompareF ( KPresenceBusy ) ) - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL open/busy"); - enumField->SetValueL( NPresenceInfo::EBusy ); - } - // On-The-Phone case - else if ( !nodeContent->Des().CompareF( KPresenceOpen ) && - !activitiesContentBuf.CompareF ( KPresenceOnThePhone ) ) - { - DP_SDA("CPresencePluginData::SingleUserStatusToXIMPL open/on-the-phone"); - enumField->SetValueL( NPresenceInfo::EOnPhone ); - } - //Away case - else if ( !nodeContent->Des().CompareF( KPresenceOpen ) && - !activitiesContentBuf.CompareF ( KPresenceAway ) ) - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL open/away"); - enumField->SetValueL( NPresenceInfo::EAway ); - } - //Dnd case - else if ( !nodeContent->Des().CompareF( KPresenceOpen ) && - !activitiesContentBuf.CompareF ( KPresenceDoNotDisturb ) ) - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL open/dnd"); - enumField->SetValueL( NPresenceInfo::EDoNotDisturb ); - } - // Unknown open - else if ( !nodeContent->Des().CompareF( KPresenceOpen ) && - !activitiesContentBuf.CompareF ( KPresenceUnknow ) ) - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL open/unknown"); - enumField->SetValueL( NPresenceInfo::EAvailable ); - } - // availale open - else if ( !nodeContent->Des().CompareF( KPresenceOpen ) && - !activitiesContentBuf.CompareF ( KPresenceAvailable ) ) - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL open/available"); - enumField->SetValueL( NPresenceInfo::EAvailable ); - } - //Unknown closed - else if ( !nodeContent->Des().CompareF( KPresenceClosed ) && - !activitiesContentBuf.CompareF ( KPresenceUnknow ) ) - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL closed/unknown"); - enumField->SetValueL( NPresenceInfo::EOffline ); - } - //Else set status according to basic status - else - { - if ( !nodeContent->Des().CompareF( KPresenceOpen ) ) - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL else open"); - enumField->SetValueL( NPresenceInfo::EAvailable ); - } - else - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL else closed"); - enumField->SetValueL( NPresenceInfo::ENotAvailable ); - } - } - - field->SetFieldValue( enumField ); - aCollection.AddOrReplaceFieldL( field ); - - CleanupStack::Pop( 2 ); // >> field, enumField - - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL check for note"); - - // Handle note field if found and buddy is "available". - if ( aNoteElement && - NPresenceInfo::EOffline != enumField->Value() && - NPresenceInfo::ENotAvailable != enumField->Value() ) - { - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL note elems found"); - // consider mapping note text to enum value if value not mapped - UserNoteToXIMPL( aPresenceFactory, aNoteElement, aCollection ); - } - } - CleanupStack::PopAndDestroy( nodeContent ); - DP_SDA(" CPresencePluginData::SingleUserStatusToXIMPL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::UserNoteToXIMPL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::UserNoteToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aElement, - MPresenceInfoFieldCollection& aCollection ) - { - DP_SDA(" CPresencePluginData::UserNoteToXIMPL IN"); - HBufC* nodeContent = aElement->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - if ( nodeContent ) - { - DP_SDA(" CPresencePluginData::UserNoteToXIMPL - content found"); - // Save note, convert from unicode - // notice: consider xml::lang-attribute - // note <-> KStatusMessage - // notice: no need to consider namespaces in XML? - using namespace NPresenceInfo::NFieldType; - - DP_SDA(" CPresencePluginData::UserNoteToXIMPL - create fields"); - MPresenceInfoField* field = aPresenceFactory.NewInfoFieldLC(); - field->SetFieldTypeL( KStatusMessage ); - MPresenceInfoFieldValueText* text = - aPresenceFactory.NewTextInfoFieldLC(); - text->SetTextValueL( nodeContent->Des() ); - field->SetFieldValue( text ); - CleanupStack::Pop(); // >> text - aCollection.AddOrReplaceFieldL( field ); - CleanupStack::Pop(); // >> field - DP_SDA(" -> fields added to collection"); - } - CleanupStack::PopAndDestroy( nodeContent ); - DP_SDA(" CPresencePluginData::UserNoteToXIMPL OUT"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::NotifyListToPrInfoL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::NotifyListToPrInfoL( - MXIMPObjectFactory& aFactory, - MPresenceObjectFactory& aPresenceFactory, - MSimplePresenceList& aList, - RPointerArray& aEntities, - RPointerArray& aActives, - RPointerArray& aTerminated ) - { - DP_SDA(" CPresencePluginData::NotifyListToPrInfoL"); - // Split array into individual prInfos - - aEntities.Reset(); - RPointerArray docs; - CleanupClosePushL( docs ); - // get documents, ownership is not transferred. - aList.GetDocuments( docs ); - - TInt count = docs.Count(); - - // active presentities - for ( TInt i = 0; i < count; i++ ) - { - MPresenceInfo* info = - aPresenceFactory.NewPresenceInfoLC();//<< info - aEntities.AppendL( info ); - // aEntities may contain entries even this method leaves - CleanupStack::Pop();// >> info - - NotifyToPrInfoL( aFactory, aPresenceFactory, *docs[i], *info ); - // Add SIp identity to active users list - MXIMPIdentity* active = aFactory.NewIdentityLC();// << active - aActives.AppendL( active ); - CleanupStack::Pop();// >> active - - // Convert SIP entity URI from UTF to Unicode. - const TDesC8* pUri8 = (docs[i])->EntityURI(); - HBufC16* uri16 = NULL; - uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *pUri8 ); - CleanupStack::PushL( uri16 ); // << uri16 - active->SetIdentityL( uri16->Des() ); - CleanupStack::PopAndDestroy( uri16 );// >> uri16 - } - - using namespace NPresencePlugin::NPresence; - - // Search "terminated" presentities - MSimpleMeta* meta = aList.MetaData(); - // ownership in not transferred - if ( meta && !meta->LocalName().CompareF( KPresenceList8 )) - { - // list element found - RPointerArray elems2; - CleanupClosePushL( elems2 ); - meta->SimpleElementsL( elems2); - TInt count2 = elems2.Count(); - - for ( TInt i = 0; i < count2; i++ ) - { - MSimpleElement* elem2 = elems2[i]; - if ( !elem2->LocalName().CompareF( KPresenceResource8 )) - { - // resource element - RPointerArray elems3; - CleanupClosePushL( elems3 ); - meta->SimpleElementsL( elems3 ); - TInt count3 = elems3.Count(); - - for ( TInt j=0; j < count3; j++ ) - { - MSimpleElement* elem3 = elems3[i]; - - if ( !elem3->LocalName().CompareF( KPresenceInstance8 )) - { - // instance element - const TDesC8* stateVal = - elem3->AttrValue( KPresenceState8 ); - if ( stateVal && stateVal-> - CompareF( KPresenceTerminated8 )) - { - // get next entity if this is not state="terminated" - break; - } - // Save resource element URI into list of - // "terminated" users. - const TDesC8* uri8 = elem2->AttrValue( KPresenceUri8 ); - MXIMPIdentity* terminated = - aFactory.NewIdentityLC();// << terminated - aTerminated.AppendL( terminated ); - CleanupStack::Pop(); // >> terminated - - // Convert SIP entity URI from UTF to Unicode. - HBufC16* uri16 = NULL; - uri16 = - CnvUtfConverter::ConvertToUnicodeFromUtf8L( *uri8 ); - CleanupStack::PushL( uri16 ); // << uri16 - terminated->SetIdentityL( uri16->Des() ); - CleanupStack::PopAndDestroy( uri16 ); // >> uri16 - } - } - CleanupStack::PopAndDestroy( &elems3 ); - } // resource element - }// for (i); list element subelement - CleanupStack::PopAndDestroy( &elems2 ); - } - - CleanupStack::PopAndDestroy( &docs ); - DP_SDA(" CPresencePluginData::NotifyListToPrInfoL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::AddPrPersToSimpleDocumentL -// --------------------------------------------------------------------------- -// -void CPresencePluginData::AddPrPersToSimpleDocumentL( - const MPersonPresenceInfo* aInfo, - MSimpleDocument& aDocument, - const TDesC8& aSipId, TInt aTupleId ) - { - DP_SDA("CPresencePluginData::AddPrPersToSimpleDocumentL start"); - iNumBuf = aTupleId; - // notice: later: generate random id. - - using namespace NPresencePlugin::NPresence; - using namespace NPresenceInfo::NFieldType; - - const MPresenceInfoFieldCollection& coll = aInfo->Fields(); - - const MPresenceInfoField* statusEmumField = NULL; - const MPresenceInfoField* messageField = NULL; - - TInt myCount = coll.FieldCount(); - for ( TInt i = 0; i < myCount; i++ ) - { - DP_SDA("CPresencePluginData::AddPrPersToSimpleDocumentL 1"); - - const MPresenceInfoField& field = coll.FieldAt( i ); - const TDesC8& fieldType = field.FieldType(); - TBuf printBuf; - printBuf.Copy( fieldType ); - - if ( !fieldType.Compare( KAvatar ) ) - { - // Do nothing in sawfis, maybe later? - } - else if ( !fieldType.Compare( KAvailabilityEnum ) ) - { - DP_SDA("AddPrPersToSimpleDocumentL Avaibility"); - statusEmumField = &field; - DP_SDA("AddPrPersToSimpleDocumentL Avaibility done"); - } - else if ( !fieldType.Compare( KStatusMessage ) ) - { - DP_SDA("AddPrPersToSimpleDocumentL statusmessage"); - messageField = &field; - } - } - if ( statusEmumField ) - { - DoCreateDocumentL( aDocument, aSipId, - statusEmumField, messageField ); - } - - - DP_SDA("CPresencePluginData::AddPrPersToSimpleDocumentL end"); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginData::CreatePresenceUri8LC -// --------------------------------------------------------------------------- -// -HBufC8* CPresencePluginData::CreatePresenceUri8LC( - const TDesC8& aPresentityUri ) - { - DP_SDA("CPresencePluginData::CreatePresenceUri8LC "); - const TInt KMyLenSipPrefix = 4; - const TInt KMyLenSipsPrefix = 5; - _LIT8( KMySip8, "sip:" ); - _LIT8( KMySips8, "sips:" ); - TInt uriLen = aPresentityUri.Length(); - DP_SDA2( "CPresencePluginData::CreatePresenceUri8LC - param length: %d ", uriLen ); - - //For debugging purposes - //TBuf<256> tmpPresentityUri; - //tmpPresentityUri.Copy( aPresentityUri ); - //DP_SDA2( "CPresencePluginData::CreatePresenceUri8LC - URI: %S ", &tmpPresentityUri ); - - HBufC8* buf = HBufC8::NewLC( uriLen ); - TPtr8 pBuf( buf->Des() ); - - //SIP uri check - if ( !aPresentityUri.Left( KMyLenSipPrefix ).CompareF( KMySip8 ) ) - { - DP_SDA("CPresencePluginData::CreatePresenceUri8LC (sip:) prefix in SIP URI "); - pBuf.Append( aPresentityUri ); - } - else if ( !aPresentityUri.Left( KMyLenSipsPrefix ).CompareF( KMySips8 ) ) - { - DP_SDA( "CPresencePluginData::CreatePresenceUri8LC (sips:) prefix in SIP URI " ); - pBuf.Append( aPresentityUri ); - } - else // No prefix, strange ... - { - DP_SDA( "CPresencePluginData::CreatePresenceUri8LC NO prefix in SIP URI, adding... " ); - // Maybe should check which prefix to use, - // but assume that no secure is used if prefix missing - TInt len = aPresentityUri.Length() + KMyLenSipPrefix; - buf = buf->ReAllocL( len ); - //update pointer after realloc - CleanupStack::Pop( 1 ); - CleanupStack::PushL( buf ); - // Since realloc may have changed the location in memory - // we must also reset ptr - pBuf.Set( buf->Des() ); - pBuf.Append( KMySip8 ); - pBuf.Append( aPresentityUri ); - } - return buf; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::RemovePrefixLC -// --------------------------------------------------------------------------- -// -HBufC16* CPresencePluginData::RemovePrefixLC( - const TDesC& aPresentityUri ) - { - DP_SDA2("CPresencePluginData::RemovePrefixLC, uri: %S", &aPresentityUri ); - - HBufC* withouPrefix = HBufC::NewLC( KBufSize255 ); - TPtr withouPrefixPtr( withouPrefix->Des() ); - - TInt prefixLocation = aPresentityUri.Locate( ':' ); - DP_SDA2("CPresencePluginData::RemovePrefixLC, prefix pos: %d", prefixLocation ); - if ( KErrNotFound != prefixLocation ) - { - DP_SDA("CPresencePluginData::RemovePrefixLC - has prefix"); - withouPrefixPtr.Copy( aPresentityUri.Mid( prefixLocation+1 ) ); - DP_SDA("CPresencePluginData::RemovePrefixLC - copy ok"); - } - else - { - DP_SDA("CPresencePluginData::RemovePrefixLC - has no prefix"); - withouPrefixPtr.Copy( aPresentityUri ); - } - - //DP_SDA2("CPresencePluginData::RemovePrefixLC - returns %S", *withouPrefix ); - return withouPrefix; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::DoCreateDocumentL() -// --------------------------------------------------------------------------- -// -void CPresencePluginData::DoCreateDocumentL( - MSimpleDocument& aDocument, - const TDesC8& aSipId, - const MPresenceInfoField* aStatusField, - const MPresenceInfoField* aMessageField ) - { - DP_SDA("CPresencePluginData::DoCreateDocumentL "); - const TInt KNumBuf = 20; - const TInt KTupleBuf = 10; - - using namespace NPresencePlugin::NPresence; - using namespace NPresencePlugin::NPresenceStates; - using namespace NPresenceInfo::NFieldType; - - TBuf numBuf; - TBuf tupleBuf; - - tupleBuf.Copy( KIndent ); - numBuf.Num( iNumBuf ); - tupleBuf.Append( numBuf ); - DP_SDA2("CPresencePluginData::DoCreateDocumentL id %d", iNumBuf); - DP_SDA("CPresencePluginData::DoCreateDocumentL 2"); - - //Add tuple id to document - MSimpleElement* tuple = aDocument.AddSimpleElementL( KPresenceTuple8 ); - CleanupClosePushL( *tuple ); - tuple->AddAttrL( KPresenceId8, tupleBuf); - - //Presence status field - MSimpleElement* status = tuple->AddSimpleElementL( KPresenceStatus8 ); - CleanupClosePushL( *status ); - - //basic field - MSimpleElement* basic = status->AddSimpleElementL( KPresenceBasic8 ); - CleanupClosePushL( *basic ); - - basic->SetContentUnicodeL( DoCheckBasicStatusValueL( *aStatusField ) ); - - DP_SDA("CPresencePluginData::DoCreateDocumentL Basic ok, check msg"); - - if ( aMessageField ) - { - DP_SDA("CPresencePluginData::DoCreateDocumentL message field"); - //Creating note - MSimpleElement* note = - aDocument.AddSimpleElementL( KPresenceNote8 ); - CleanupClosePushL( *note ); - - // Get status msg field from info field - const MPresenceInfoFieldValueText* textField = - TXIMPGetInterface< - const MPresenceInfoFieldValueText >::From( - aMessageField->FieldValue(), - MXIMPBase::EPanicIfUnknown ); - note->SetContentUnicodeL( textField->TextValue() ); - CleanupStack::PopAndDestroy( note ); - } - - /* Basic model example - - - open - - closed - - sip:someone@example.com - - sleeping - - */ - - DP_SDA("CPresencePluginData::DoCreateDocumentL Rich presence person"); - //Creatin person presence field - MSimpleElement* pers = - aDocument.AddSimpleElementL( KSimpleNsPDM, KPresencePerson8 ); - CleanupClosePushL( *pers ); - TBuf buf; - TBuf personId; - personId.Copy( KPersonId ); - buf.Num( iNumBuf ); - personId.Append( buf ); - pers->AddAttrL( KPresenceId8, personId ); - DP_SDA("CPresencePluginData::DoCreateDocumentL Rich presence person ok"); - - HBufC8* urlBuf = CreatePresenceUri8LC( aSipId ); - DP_SDA("CPresencePluginData::DoCreateDocumentL Push urlBuf"); - - aDocument.SetEntityURIL( urlBuf->Des() ); - DP_SDA("CPresencePluginData::DoCreateDocumentL 2"); - - DP_SDA("CPresencePluginData::DoCreateDocumentLC Rich presence activities"); - MSimpleElement* activ = pers->AddSimpleElementL( - KSimpleNsRPID, KPresenceActivities8 ); - CleanupClosePushL( *activ ); - - //unknown used if person presence is just open or closed - MSimpleElement* unknown = activ->AddSimpleElementL( - KSimpleNsRPID, DoCheckActivitiesValueL( *aStatusField ) ); - DP_SDA("CPresencePluginData::DoCreateDocumentL, unknown/status element created"); - CleanupClosePushL( *unknown ); - - DP_SDA("CPresencePluginData::DoCreateDocumentL Destroy unknown"); - CleanupStack::PopAndDestroy( unknown ); - DP_SDA("CPresencePluginData::DoCreateDocumentL Destroy activ"); - CleanupStack::PopAndDestroy( activ ); - - DP_SDA("CPresencePluginData::DoCreateDocumentL Destroy urlBuf"); - CleanupStack::PopAndDestroy( urlBuf ); - - DP_SDA("CPresencePluginData::DoCreateDocumentL Destroy pers"); - CleanupStack::PopAndDestroy( pers ); - DP_SDA("CPresencePluginData::DoCreateDocumentL Rich presence activities ok"); - - DP_SDA("CPresencePluginData::DoCreateDocumentL Destroy basic"); - CleanupStack::PopAndDestroy( basic ); - - DP_SDA("CPresencePluginData::DoCreateDocumentL Destroy status"); - CleanupStack::PopAndDestroy( status ); - - DP_SDA("CPresencePluginData::DoCreateDocumentL Destroy tuple"); - CleanupStack::PopAndDestroy( tuple ); - DP_SDA("CPresencePluginData::DoCreateDocumentL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::DoCheckBasicStatusValueL() -// --------------------------------------------------------------------------- -// -TPtrC CPresencePluginData::DoCheckBasicStatusValueL( - const MPresenceInfoField& aField ) - { - using namespace NPresencePlugin::NPresence; - using namespace NPresencePlugin::NPresenceStates; - using namespace NPresenceInfo::NFieldType; - - TPtrC basicStatus( KPresenceOpen ); //default status open - //First check what is person status value - const MXIMPBase& storage = aField.FieldValue(); - const MPresenceInfoFieldValueEnum* enumObject = - TXIMPGetInterface< const MPresenceInfoFieldValueEnum >:: - From( storage,MXIMPBase::EReturnNullIfUnknown ); - - __ASSERT_ALWAYS( NULL != enumObject, User::Leave( KErrArgument ) ); - - DP_SDA2(" DoCheckBasicStatusValueL - enumValue: %d", enumObject->Value() ); - switch ( enumObject->Value() ) - { - case NPresenceInfo::EAvailable: - { - DP_SDA("DoCheckBasicStatusValueL stopPublish false status open"); - iConnObs.SetStopPublishState( EFalse ); - basicStatus.Set( KPresenceOpen ); - } - break; - - case NPresenceInfo::EOffline: - case NPresenceInfo::EHidden: - case NPresenceInfo::ENotAvailable: - { - //If state is closed we can stop publish - //if client is going to offline - DP_SDA("DoCheckBasicStatusValueL stopPublish true status Closed"); - iConnObs.SetStopPublishState( ETrue ); - basicStatus.Set( KPresenceClosed ); - } - break; - - default: - { - DP_SDA("DoCheckBasicStatusValueL stopPublish false else open"); - iConnObs.SetStopPublishState( EFalse ); - basicStatus.Set( KPresenceOpen ); - } - break; - } - return basicStatus; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::DoCheckActivitiesValueL() -// --------------------------------------------------------------------------- -// -TPtrC8 CPresencePluginData::DoCheckActivitiesValueL( - const MPresenceInfoField& aField ) - { - using namespace NPresencePlugin::NPresence; - using namespace NPresencePlugin::NPresenceStates; - using namespace NPresenceInfo::NFieldType; - - TPtrC8 activities( KPresenceUnknow8 ); //default activities unknown - - const MXIMPBase& storage = aField.FieldValue(); - const MPresenceInfoFieldValueEnum* enumObject = - TXIMPGetInterface< const MPresenceInfoFieldValueEnum >:: - From( storage,MXIMPBase::EReturnNullIfUnknown ); - - __ASSERT_ALWAYS( NULL != enumObject, User::Leave( KErrArgument ) ); - - DP_SDA2(" DoCheckActivitiesValueL - enumValue: %d", enumObject->Value() ); - switch ( enumObject->Value() ) - { - case NPresenceInfo::EAvailable: - { - DP_SDA("DoCheckActivitiesValueL - available, set publish"); - iConnObs.SetStopPublishState( EFalse ); - DP_SDA("DoCheckActivitiesValueL - available, set value"); - activities.Set( KPresenceUnknow8 ); - DP_SDA("DoCheckActivitiesValueL - available, ok"); - } - break; - - case NPresenceInfo::EOffline: - case NPresenceInfo::ENotAvailable: - { - DP_SDA("DoCheckActivitiesValueL - offline/not available"); - iConnObs.SetStopPublishState( ETrue ); - activities.Set( KPresenceUnknow8 ); - } - break; - - case NPresenceInfo::EBusy: - { - DP_SDA("DoCheckActivitiesValueL - busy"); - iConnObs.SetStopPublishState( EFalse ); - activities.Set( KPresenceBusy8 ); - } - break; - - case NPresenceInfo::EExtAway: - case NPresenceInfo::EAway: - { - DP_SDA("DoCheckActivitiesValueL - away"); - iConnObs.SetStopPublishState( EFalse ); - activities.Set( KPresenceAway8 ); - } - break; - - case NPresenceInfo::EOnPhone: - { - DP_SDA("DoCheckActivitiesValueL - on phone"); - iConnObs.SetStopPublishState( EFalse ); - activities.Set( KPresenceOnThePhone8 ); - } - break; - - - case NPresenceInfo::EDoNotDisturb: - { - DP_SDA("DoCheckActivitiesValueL - dnd"); - iConnObs.SetStopPublishState( EFalse ); - activities.Set( KPresenceDoNotDisturb8 ); - } - break; - - default: - { - DP_SDA("DoCheckActivitiesValueL default => unknown"); - iConnObs.SetStopPublishState( EFalse ); - activities.Set( KPresenceUnknow8 ); - } - break; - } - DP_SDA("DoCheckActivitiesValueL - done and return"); - return activities; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::DoCheckNoteValueL() -// --------------------------------------------------------------------------- -// -TPtrC CPresencePluginData::DoCheckNoteValueL( - const MPresenceInfoField& aField ) - { - using namespace NPresencePlugin::NPresence; - using namespace NPresencePlugin::NPresenceStates; - using namespace NPresenceInfo::NFieldType; - - TPtrC note( KPresenceUnknow ); //default activities unknown - //First check what is person status value - const MXIMPBase& storage = aField.FieldValue(); - const MPresenceInfoFieldValueText* text = - TXIMPGetInterface< const MPresenceInfoFieldValueText >:: - From( storage,MXIMPBase::EReturnNullIfUnknown ); - - __ASSERT_ALWAYS( NULL != text, User::Leave( KErrArgument ) ); - - TBuf buffer; - buffer.Copy( text->TextValue() ); - - //Check if status is closed - if( !buffer.CompareF( KPresenceClosed ) ) - { - //If state is closed we can stop publish - //if client is going to offline - DP_SDA("DoCheckNoteValueL stopPublish true closed"); - iConnObs.SetStopPublishState( ETrue ); - note.Set( KPresenceOffline ); - } - else if( !buffer.CompareF( KPresenceOpen ) ) - { - DP_SDA("DoCheckNoteValueL stopPublish false open"); - iConnObs.SetStopPublishState( EFalse ); - note.Set( KPresenceAvailable ); - } - else if( !buffer.CompareF( KPresenceBusy ) ) - { - DP_SDA("DoCheckNoteValueL activities BUSY"); - iConnObs.SetStopPublishState( EFalse ); - note.Set( KPresenceBusy ); - } - else if( !buffer.CompareF( KPresenceOnThePhone ) ) - { - DP_SDA("DoCheckNoteValueL activities OnThePhone"); - iConnObs.SetStopPublishState( EFalse ); - note.Set( KPresenceOnThePhone ); - } - else if( !buffer.CompareF( KPresenceAway ) ) - { - DP_SDA("DoCheckNoteValueL activities OnThePhone"); - iConnObs.SetStopPublishState( EFalse ); - note.Set( KPresenceAway ); - } - else - { - DP_SDA("DoCheckNoteValueL stopPublish false"); - iConnObs.SetStopPublishState( EFalse ); - note.Set( KPresenceUnknow ); - } - return note; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginData::GenerateTupleId() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginData::GenerateTupleId() - { - // Generate unique session tuple id - DP_SDA("CPresencePluginData::GenerateTupleId start"); - const TInt KMaxRand = KMaxNumber; - TInt64 seed; - TTime time; - time.HomeTime(); - seed = time.Int64(); - TInt random = Math::Rand( seed ) % KMaxRand; - DP_SDA("CPresencePluginData::GenerateTupleId 1"); - return random; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::ServiceId() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginData::ServiceId() - { - return iServiceId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::ServiceNameLC() -// --------------------------------------------------------------------------- -// -HBufC* CPresencePluginData::ServiceNameLC( TInt aServiceId ) const - { - CSPSettings* spSettings = CSPSettings::NewLC(); - CSPEntry* entry = CSPEntry::NewLC(); - HBufC* serviceName = NULL; - - User::LeaveIfError( spSettings->FindEntryL( aServiceId, *entry ) ); - - serviceName = entry->GetServiceName().AllocL(); - - CleanupStack::PopAndDestroy( entry ); - CleanupStack::PopAndDestroy( spSettings ); - CleanupStack::PushL( serviceName ); - return serviceName; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::ResolveCacheXspIdentifierL() -// --------------------------------------------------------------------------- -// -HBufC* CPresencePluginData::ResolveCacheXspIdentifierL( - const TDesC& aIdentity ) const - { - DP_SDA( "CPresencePluginData::ResolveCacheXspIdentifierL" ); - - CSPSettings* spSettings = CSPSettings::NewLC(); - CSPEntry* entry = CSPEntry::NewLC(); - - User::LeaveIfError( spSettings->FindEntryL( iServiceId, *entry ) ); - - TInt cacheUriLength = ( entry->GetServiceName().Length() + - aIdentity.Length() + 1 ); - - HBufC* cacheUri = HBufC::NewL( cacheUriLength ); - TPtr cacheUriPtr( cacheUri->Des() ); - - cacheUriPtr.Append( entry->GetServiceName() ); - cacheUriPtr.Append( ':' ); - cacheUriPtr.Append( aIdentity ); - - CleanupStack::PopAndDestroy( entry ); - CleanupStack::PopAndDestroy( spSettings ); - - DP_SDA2( "CPresencePluginData::ResolveCacheXspIdentifierL returns: %S", cacheUri ); - return cacheUri; - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::WriteBlockItemsToCacheL() -// --------------------------------------------------------------------------- -// -void CPresencePluginData::WriteStatusToCacheL( - const TDesC& aPresentityId, - MPresenceBuddyInfo2::TAvailabilityValues aAvailability, - const TDesC& aAvailabilityText, - const TDesC& aStatusMessage ) - { - DP_SDA( "CPresencePluginData::WriteStatusToCacheL start" ); - DP_SDA2( "CPresencePluginData::WriteStatusToCacheL, aStatus: %d", - aAvailability ); - DP_SDA2( "CPresencePluginData::WriteStatusToCacheL, availabilityText: %S", - &aAvailabilityText ); - DP_SDA2( "CPresencePluginData::WriteStatusToCacheL, statusMessage: %S", - &aStatusMessage ); - - TBool updateCache( ETrue ); - - // Decode encoded username (spaces to %20). - HBufC* decodedUsername = EscapeUtils::EscapeDecodeL( aPresentityId ); - CleanupStack::PushL( decodedUsername ); - - // convert to 8 bit version - HBufC8* tmp = HBufC8::NewLC( decodedUsername->Length() ); - tmp->Des().Copy( *decodedUsername ); - - // convert to unicode - HBufC* userName16 = - EscapeUtils::ConvertToUnicodeFromUtf8L( tmp->Des() ); - - HBufC* cacheUri = ResolveCacheXspIdentifierL( userName16->Des() ); - CleanupStack::PopAndDestroy( tmp ); - CleanupStack::PopAndDestroy( decodedUsername ); - delete userName16; - CleanupStack::PushL( cacheUri ); - - DP_SDA(" -> WriteStatusToCacheL - read previous values from cache"); - - // Read previous values from cache - MPresenceBuddyInfo2* previousPresInfo = - iPresenceCacheReader->PresenceInfoLC( *cacheUri ); - - if ( previousPresInfo ) - { - DP_SDA(" -> WriteStatusToCacheL - get availability value"); - - MPresenceBuddyInfo2::TAvailabilityValues availability = - previousPresInfo->Availability(); - - DP_SDA(" -> WriteStatusToCacheL - get availability text"); - - TPtrC availabilityText = previousPresInfo->AvailabilityText(); - - DP_SDA(" -> WriteStatusToCacheL - get status message"); - - TPtrC statusMessage = previousPresInfo->StatusMessage(); - CleanupStack::PopAndDestroy(); //previousPresInfo - - DP_SDA2( "CPresencePluginData::WriteStatusToCacheL, OLD STATUS: %d", - availability ); - DP_SDA2( "CPresencePluginData::WriteStatusToCacheL, OLD AVAILABILITY TEXT: %S", - &availabilityText ); - DP_SDA2( "CPresencePluginData::WriteStatusToCacheL, OLD STATUS MESSAGE: %S", - &statusMessage ); - - if ( ( aAvailability == availability ) && - ( aAvailabilityText.Compare( availabilityText ) == 0 ) && - ( aStatusMessage.Compare( statusMessage ) == 0 )) - { - DP_SDA(" -> WriteStatusToCacheL - no need to update cache"); - updateCache = EFalse; - } - } - - if ( updateCache ) - { - MPresenceBuddyInfo2* newPresInfo = MPresenceBuddyInfo2::NewLC(); - newPresInfo->SetIdentityL( *cacheUri ); - - DP_SDA(" -> WriteStatusToCacheL - update cache"); - - TBuf buf; - TBool handled = EFalse; - - buf.Copy( KBlockedExtensionValue ); - - if( aAvailabilityText.Compare( buf ) == 0 ) - { - DP_SDA( " -> WriteStatusToCacheL - set Blocked" ); - newPresInfo->SetAnyFieldL( KExtensionKey, KBlockedExtensionValue ); - handled = ETrue; - } - - buf.Copy( KPendingRequestExtensionValue ); - - if ( aAvailabilityText.Compare( buf ) == 0 ) - { - DP_SDA( " -> WriteStatusToCacheL - set Pending request" ); - newPresInfo->SetAnyFieldL( KExtensionKey, KPendingRequestExtensionValue ); - handled = ETrue; - } - - if ( !handled ) - { - DP_SDA2( " -> WriteStatusToCacheL - set availability text: %S", &aAvailabilityText ); - newPresInfo->SetAvailabilityL( aAvailability, aAvailabilityText ); - } - - if ( aStatusMessage.Length() ) - { - DP_SDA2( " -> WriteStatusToCacheL - set status message: %S", &aStatusMessage ); - newPresInfo->SetStatusMessageL( aStatusMessage ); - } - - DP_SDA( " -> WriteStatusToCacheL - write presence to cache" ); - TInt cacheError = iPresenceCacheWriter->WritePresenceL( newPresInfo ); - DP_SDA2( "CPresencePluginEntityWatcher::WriteStatusToCacheL error: %d", - cacheError ); - - DP_SDA( " -> destroy buddy info" ); - CleanupStack::PopAndDestroy(); // newPresInfo - } - - DP_SDA(" -> destroy uri"); - CleanupStack::PopAndDestroy( cacheUri ); - - DP_SDA("CPresencePluginData::WriteStatusToCacheL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::RemoveCacheL() -// --------------------------------------------------------------------------- -// -void CPresencePluginData::RemoveCacheL() - { - DP_SDA("CPresencePluginData::RemoveCacheL"); - - // Resolve service name (cache xsp identifier) - CSPSettings* spSettings = CSPSettings::NewL(); - CleanupStack::PushL( spSettings ); - - CSPEntry* entry = CSPEntry::NewLC(); - DP_SDA2(" -> RemoveCacheL look for service: %d", ServiceId() ); - spSettings->FindEntryL( ServiceId(), *entry ); - - DP_SDA(" -> RemoveCacheL cache xsp identifier found"); - TInt cacheUriLength = entry->GetServiceName().Length(); - DP_SDA2(" -> cache uri length: %d", cacheUriLength ); - - HBufC* cacheUri = HBufC::NewLC( cacheUriLength ); - TPtr cacheUriPtr( cacheUri->Des() ); - - DP_SDA(" -> RemoveCacheL - form cache entry"); - cacheUriPtr.Append( entry->GetServiceName() ); - - DP_SDA(" -> RemoveCacheL - delete cache entries"); - TInt error = iPresenceCacheWriter->DeleteService( cacheUriPtr ); - DP_SDA2(" -> RemoveCacheL - delete error: %d", error ); - CleanupStack::PopAndDestroy( cacheUri ); - - DP_SDA(" -> destroy sp entry"); - CleanupStack::PopAndDestroy( entry ); - DP_SDA(" -> destroy sp"); - CleanupStack::PopAndDestroy( spSettings ); - DP_SDA("CPresencePluginData::RemoveCacheL out"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::DeletePresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginData::DeletePresenceL( const TDesC& aIdentity ) - { - DP_SDA("CPresencePluginData::DeletePresenceL"); - - // Resolve service name (cache xsp identifier) - CSPSettings* spSettings = CSPSettings::NewL(); - CleanupStack::PushL( spSettings ); - CSPEntry* entry = CSPEntry::NewLC(); - DP_SDA2(" -> DeletePresenceL look for service: %d", ServiceId() ); - spSettings->FindEntryL( ServiceId(), *entry ); - - DP_SDA(" -> DeletePresenceL cache xsp identifier found"); - TInt cacheUriLength = ( entry->GetServiceName().Length() + - aIdentity.Length() + 1 ); - DP_SDA2(" -> cache uri length: %d", cacheUriLength ); - - HBufC* cacheUri = HBufC::NewLC( cacheUriLength ); - TPtr cacheUriPtr( cacheUri->Des() ); - - DP_SDA(" -> DeletePresenceL - form cache entry"); - cacheUriPtr.Append( entry->GetServiceName() ); - cacheUriPtr.Append( ':' ); - cacheUriPtr.Append( aIdentity ); - - iPresenceCacheWriter->DeletePresenceL( cacheUriPtr ); - - CleanupStack::PopAndDestroy( cacheUri ); - CleanupStack::PopAndDestroy( entry ); - DP_SDA(" -> destroy sp"); - CleanupStack::PopAndDestroy( spSettings ); - DP_SDA("CPresencePluginData::DeletePresenceL out"); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginData::StorePresenceOwnPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginData::StorePresenceOwnPresenceL( - const TUint aServiceId, - NPresenceInfo::TAvailabilityValues aAvailability, - const TDesC& aStatusMessage ) - { - DP_SDA("CPresencePluginData::StorePresenceOwnPresenceL IN"); - DP_SDA2(" -> aServiceId: %d", aServiceId ); - - DP_SDA2(" -> SAVE AVAILABILITY VALUE: %d", aAvailability ); - DP_SDA2(" -> SAVE STATUS MESSAGE: %S", &aStatusMessage ); - - MVIMPSTSettingsStore* settings = CVIMPSTSettingsStore::NewLC(); - - DP_SDA("CPresencePluginData::StorePresenceOwnPresenceL 1"); - - // Store availability value to uiservicetabsettings - TInt availabilityInt = ( ( TInt ) aAvailability ); - User::LeaveIfError( settings->SetL( - aServiceId, EServicePresenceAvailablilityValue, availabilityInt ) ); - - DP_SDA("CPresencePluginData::StorePresenceOwnPresenceL 2"); - - // Store custom status message to uiservicetabsettings - User::LeaveIfError( settings->SetL( - aServiceId, EServiceCustomStatusMessage, aStatusMessage ) ); - - CleanupStack::PopAndDestroy(); //settings - - DP_SDA("CPresencePluginData::StorePresenceOwnPresenceL OUT"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::ReadDocumentIdL() -// --------------------------------------------------------------------------- -// -void CPresencePluginData::ReadDocumentIdL( - const TInt aServiceId, - TDes8& aDocumentId ) - { - DP_SDA("CPresencePluginData::ReadDocumentIdL IN"); - - DP_SDA2(" -> aServiceId: %d", aServiceId ); - - MVIMPSTSettingsStore* settings = CVIMPSTSettingsStore::NewLC(); - - RBuf8 documentId; - CleanupClosePushL( documentId ); - documentId.CreateL( KBufSize255 ); - - TInt error = settings->GetL( - aServiceId, EServicePresenceSessionIdentifier, documentId ); - - DP_SDA2(" -> ERROR: %d", error ); - DP_SDA2(" -> DOCUMENT ID LENGTH: %d", documentId.Length() ); - - if ( !error && documentId.Length() ) - { - aDocumentId.Copy( documentId ); - - TBuf printDocumentId; - printDocumentId.Copy( aDocumentId ); - DP_SDA("CPresencePluginData::ReadDocumentIdL - 1"); - DP_SDA2(" -> READ DOCUMENT ID: %S", &printDocumentId ); - } - else if ( KErrNotFound == error || !documentId.Length() ) - { - DP_SDA("CPresencePluginData::ReadDocumentIdL - 2"); - // If document id lenght is zero (KNullDesC8) or error - // is KErrNotFound leave with KErrNotFound - User::Leave( KErrNotFound ); - } - else - { - User::Leave( error ); - } - - CleanupStack::PopAndDestroy( &documentId ); - CleanupStack::PopAndDestroy(); //settings - - DP_SDA("CPresencePluginData::ReadDocumentIdL OUT"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginData::DeletePresenceVariablesL() -// --------------------------------------------------------------------------- -// -void CPresencePluginData::DeletePresenceVariablesL( const TInt aServiceId ) - { - DP_SDA("CPresencePluginData::DeletePresenceVariablesL IN"); - DP_SDA2(" -> aServiceId: %d", aServiceId ); - - MVIMPSTSettingsStore* settings = CVIMPSTSettingsStore::NewLC(); - - // Reset availability value in uiservicetabsettings - User::LeaveIfError( settings->SetL( - aServiceId, EServicePresenceAvailablilityValue, KErrNotFound ) ); - - // Reset status message in uiservicetabsettings - User::LeaveIfError( settings->SetL( - aServiceId, EServiceCustomStatusMessage, KNullDesC ) ); - - // Reset document id value in uiservicetabsettings - User::LeaveIfError( settings->SetL( - aServiceId, EServicePresenceSessionIdentifier, KNullDesC8 ) ); - - CleanupStack::PopAndDestroy(); // settings - - DP_SDA("CPresencePluginData::DeletePresenceVariablesL OUT"); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginData::ResolveNoteElementL -// Returns element corresponding current locale or first -// element if better match is not found. -// --------------------------------------------------------------------------- -// -MSimpleElement* CPresencePluginData::ResolveNoteElementL( - const RPointerArray& aElements ) const - { - DP_SDA("CPresencePluginData::ResolveNoteElementL" ) - - MSimpleElement* bestMatch = NULL; - MSimpleElement* secondBestMatch = NULL; - - for ( TInt i = aElements.Count() - 1; i >= 0 && NULL == bestMatch; i-- ) - { - MSimpleElement* element = aElements[i]; - - using namespace NPresencePlugin::NPresence; - if ( 0 == element->LocalName().CompareF( KPresenceNote8 ) ) - { - if ( IsElementLanguageValidForCurrentLocaleL( *element ) ) - { - DP_SDA("CPresencePluginData::ResolveNoteElementL, BEST MATCH.") - bestMatch = element; - } - else - { - secondBestMatch = element; - } - } - } - - return ( bestMatch ? bestMatch : secondBestMatch ); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginData::IsElementLanguageValidForCurrentLocaleL -// --------------------------------------------------------------------------- -// -TBool CPresencePluginData::IsElementLanguageValidForCurrentLocaleL( - MSimpleElement& aElement ) const - { - DP_SDA( "CPresencePluginData::IsElementLanguageValidForCurrentLocaleL" ) - - TBool isLanguageResolved = EFalse; - _LIT8( KLanguageAttribute, "xml:lang" ); - - TLanguage language = User::Language(); - RPointerArray attributes; - CleanupClosePushL( attributes ); - aElement.SimpleAttributesL( attributes ); - for ( TInt i = attributes.Count() - 1; i >= 0 && !isLanguageResolved; i-- ) - { - if ( 0 == KLanguageAttribute().CompareF( attributes[i]->Name() ) ) - { - const TDesC8& attributeValue = attributes[i]->Value(); - for ( TInt index = 0; index < KLanguageCodeMappingsCount; index++ ) - { - if ( language == KLanguageCodeMappings[index].SymbianLanguageCode() && - 0 == attributeValue.CompareF( - KLanguageCodeMappings[index].IsoLanguageCode() ) ) - { - isLanguageResolved = ETrue; - } - } - } - } - CleanupStack::Pop( &attributes ); - - return isLanguageResolved; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginentitywatcher.cpp --- a/simpledatamodeladapter/src/presencepluginentitywatcher.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,689 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "presencepluginentitywatcher.h" -#include "presenceplugindata.h" -#include "presencepluginwatcher.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::CPresencePluginEntityWatcher() -// --------------------------------------------------------------------------- -// -CPresencePluginEntityWatcher::CPresencePluginEntityWatcher( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CPresencePluginWatcher& aWatcher ) - :iConnObs(aObs), iConnection(aConn), - iPluginWatcher(aWatcher), iOperation( EPluginIdle ) - { - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::ConstructL( - CPresencePluginData* aPresenceData ) - { - DP_SDA("CPresencePluginEntityWatcher::ConstructL - begin"); - iWatcher = TSimpleFactory::NewWatcherL( iConnection, *this ); - iPresenceData = aPresenceData; - DP_SDA("CPresencePluginEntityWatcher::ConstructL - end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginEntityWatcher* CPresencePluginEntityWatcher::NewL( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CPresencePluginWatcher& aWatcher, - CPresencePluginData* aPresenceData ) - { - DP_SDA("CPresencePluginEntityWatcher::NewL"); - CPresencePluginEntityWatcher* self = - new( ELeave ) CPresencePluginEntityWatcher( aObs, aConn, aWatcher ); - CleanupStack::PushL( self ); - self->ConstructL( aPresenceData ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::~CPresencePluginEntityWatcher() -// --------------------------------------------------------------------------- -// -CPresencePluginEntityWatcher::~CPresencePluginEntityWatcher() - { - DP_SDA("CPresencePluginEntityWatcher::~CPresencePluginEntityWatcher"); - if ( iWatcher ) - { - iWatcher->Close(); - } - delete iEntityId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::StartSubscribeL() -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::StartSubscribeL( - const TDesC8& aPresentityId ) - { - DP_SDA("CPresencePluginEntityWatcher::StartSubscribeL"); - delete iEntityId; - iEntityId = NULL; - DP_SDA(" StartSubscribeL - entity id deleted"); - - TRAPD( error, iSimpleId = iWatcher->SubscribeL( - aPresentityId, NULL, ETrue, EFalse );); - DP_SDA2("StartSubscribeL subscribe error %d",error); - - if( KErrNone != error ) - { - DP_SDA("CPresencePluginEntityWatcher::StartSubscribeL ERROR"); - if( KErrInUse == error ) - { - DP_SDA(" iWatcher is in use try to close and restart"); - iWatcher->Close(); - iWatcher = TSimpleFactory::NewWatcherL( iConnection, *this ); - DP_SDA("StartSubscribeL Second try after creating iWatcher again"); - error = KErrNone; - TRAP( error, iSimpleId = iWatcher->GetPresenceL( - aPresentityId, NULL, EFalse );); - DP_SDA2("iWatcher->GetPresenceL error2 = %d",error ); - } - } - - // Save entity id after successful call - DP_SDA("StartSubscribeL - allocate entity id"); - iEntityId = aPresentityId.AllocL(); - DP_SDA("StartSubscribeL - new entity id stored"); - - iOperation = EPluginStart; - - DP_SDA("CPresencePluginEntityWatcher::StartSubscribeL End"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::StartSubscribeL() -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::StartSubscribeL( - const TDesC8& aPresentityId, TRequestStatus& aClientRequst ) - { - DP_SDA("CPresencePluginEntityWatcher::StartSubscribeL 2"); - delete iEntityId; - iEntityId = NULL; - DP_SDA("CPresencePluginEntityWatcher::StartSubscribeL - entity id deleted"); - - iClientStatus = &aClientRequst; - *iClientStatus = KRequestPending; // wait for watcher complete - iOperation = EPluginStartNotifyClient; - - TRAPD( error, iSimpleId = iWatcher->SubscribeL( - aPresentityId, NULL, ETrue, EFalse );); - DP_SDA2("StartSubscribeL subscribe error %d",error); - - if( KErrInUse == error ) - { - DP_SDA("CPresencePluginEntityWatcher::StartSubscribeL ERROR"); - DP_SDA("StartSubscribeL iWatcher is in use try to close and restart"); - iWatcher->Close(); - iWatcher = TSimpleFactory::NewWatcherL( iConnection, *this ); - DP_SDA("StartSubscribeL Second try after creating iWatcher again"); - error = KErrNone; - TRAP( error, iSimpleId = iWatcher->GetPresenceL( - aPresentityId, NULL, EFalse );); - DP_SDA2("iWatcher->GetPresenceL error2 = %d",error ); - } - User::LeaveIfError( error ); - - // Save entity id after successful call - DP_SDA("StartSubscribeL - allocate entity id"); - iEntityId = aPresentityId.AllocL(); - DP_SDA("StartSubscribeL - new entity id stored"); - - DP_SDA("CPresencePluginEntityWatcher::StartSubscribeL End"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::StopSubscribeL() -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::StopSubscribeL( - TRequestStatus& aClientRequst ) - { - DP_SDA("CPresencePluginEntityWatcher::StopSubscribeL 2 (list)"); - iClientStatus = &aClientRequst; - *iClientStatus = KRequestPending; // wait for watcher complete - - iSimpleId = iWatcher->UnsubscribeL(); - iOperation = EPluginStop; - DP_SDA("CPresencePluginEntityWatcher::StopSubscribeL 2 end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::StopSubscribeL() -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::StopSubscribeL( ) - { - DP_SDA("CPresencePluginEntityWatcher::StopSubscribeL"); - iSimpleId = iWatcher->UnsubscribeL(); - iOperation = EPluginStop; - DP_SDA("CPresencePluginEntityWatcher::StopSubscribeL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::WatcherReqCompleteL -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::WatcherReqCompleteL( - TInt /*aOpId*/, TInt aStatus ) - { - DP_SDA("CPresencePluginEntityWatcher::WatcherReqCompleteL"); - DP_SDA2("WatcherReqCompleteL status %d",aStatus ); - TPluginEntityWatcherOperation orig = iOperation; - DP_SDA2("WatcherReqCompleteL orig %d",orig ); - iOperation = EPluginIdle; - - if( !aStatus ) - { - iPluginWatcher.AcceptL( this ); - } - - if ( EPluginStartNotifyClient == orig ) - { - orig = EPluginStart; - DP_SDA(" WatcherReqCompleteL complete client"); - CompleteClientReq( aStatus ); - } - else if ( iClientStatus ) - { - DP_SDA(" WatcherReqCompleteL complete client 2"); - CompleteClientReq( aStatus ); - } - - MSimpleWatcher::TSimpleSipSubscriptionState subscribeStatus = - iWatcher->SipSubscriptionState(); - DP_SDA2("WatcherReqCompleteL subscribe status %d",subscribeStatus ); - - if ( aStatus && ( orig == EPluginStop || orig == EPluginStart && - MSimpleWatcher::ESimpleStateTerminated != subscribeStatus ) ) - { - DP_SDA("CPresencePluginEntityWatcher::WatcherReqCompleteL if"); - // Delete this entity as useless - DP_SDA("WatcherReqCompleteL DELETE WATCHER"); - iPluginWatcher.DeleteWatcher( iEntityId->Des() ); - //Do not call anything, - //since the method call above deletes this instance. - } - else if( !aStatus && ( MSimpleWatcher::ESimpleStateActive == - subscribeStatus && - orig == EPluginStop ) ) - { - DP_SDA(" WatcherReqCompleteL state STOP"); - // Delete this entity as useless - DP_SDA("WatcherReqCompleteL DELETE WATCHER 2"); - iPluginWatcher.DeleteWatcher( iEntityId->Des() ); - } - else if ( MSimpleWatcher::ESimpleStatePending == subscribeStatus ) - { - SetPendingToXIMPL(); - } - DP_SDA("CPresencePluginEntityWatcher::WatcherReqCompleteL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::SetPendingToXIMPL -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::SetPendingToXIMPL() - { - DP_SDA("CPresencePluginEntityWatcher::SetPendingToXIMPL"); - //check what is grand request list subscribe state - if( iConnObs.GrandListState() ) - { - DP_SDA("CPresencePluginEntityWatcher::SetPendingToXIMPL True"); - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.ProtocolPresenceHost().WatchingDataHost(); - MPresenceInfo* prInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresenceInfoLC(); - - //Call set to pending - iPresenceData->NotifyToPendingToXIMPL( - iConnObs.PresenceObjectFactoryOwn(), - *prInfo ); - - MXIMPIdentity* identity2 = iConnObs.ObjectFactory().NewIdentityLC(); - HBufC* uniBuffer = - CnvUtfConverter::ConvertToUnicodeFromUtf8L( iEntityId->Des() ); - CleanupStack::PushL( uniBuffer ); - - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *uniBuffer ); - identity2->SetIdentityL( *withoutPrefix ); - - //Call presence cache writer too - TBuf<20> buf; - buf.Copy( KPendingRequestExtensionValue ); - - iPresenceData->WriteStatusToCacheL( *withoutPrefix, - MPresenceBuddyInfo2::ENotAvailable, - buf, - KNullDesC() ); - - // XIMP Host API callback - watcherHost.HandleSubscribedPresentityPresenceL( identity2, prInfo ); - - CleanupStack::PopAndDestroy( withoutPrefix ); - CleanupStack::PopAndDestroy( uniBuffer ); - CleanupStack::Pop(); // >> identity2 - CleanupStack::Pop(); // >> prInfo - } - DP_SDA("CPresencePluginEntityWatcher::SipSubscriptionState end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::SetActiveToXIMPL -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::SetActiveToXIMPL( const TDesC& aIdentity ) - { - DP_SDA("CPresencePluginEntityWatcher::SetActiveToXIMPL, identity"); - //check what is grand request list subscribe state - if( iConnObs.GrandListState() ) - { - DP_SDA("CPresencePluginEntityWatcher::SetPendingToXIMPL True"); - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.ProtocolPresenceHost().WatchingDataHost(); - MPresenceInfo* prInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresenceInfoLC(); - - //Call set to pending - DP_SDA(" SetPendingToXIMPL, notify active"); - iPresenceData->NotifyToActiveToXIMPL( - iConnObs.PresenceObjectFactoryOwn(), - *prInfo ); - - DP_SDA(" SetActiveToXIMPL, create new identity"); - MXIMPIdentity* identity2 = iConnObs.ObjectFactory().NewIdentityLC(); - - DP_SDA(" SetActiveToXIMPL, strip prefix"); - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( aIdentity ); - identity2->SetIdentityL( *withoutPrefix ); - - DP_SDA(" SetActiveToXIMPL, write to cache"); - //Call presence cache writer too - iPresenceData->WriteStatusToCacheL( *withoutPrefix, - MPresenceBuddyInfo2::ENotAvailable, - KDefaultAvailableStatus(), - KNullDesC() ); - - DP_SDA(" SetActiveToXIMPL, ximp api callback"); - // XIMP Host API callback - watcherHost.HandleSubscribedPresentityPresenceL( identity2, prInfo ); - - DP_SDA("CPresencePluginEntityWatcher::SetActiveToXIMPL, cleanup"); - CleanupStack::PopAndDestroy( withoutPrefix ); - CleanupStack::Pop(); // >> identity2 - CleanupStack::Pop(); // >> prInfo - } - DP_SDA("CPresencePluginEntityWatcher::SetActiveToXIMPL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::SetTerminatedToXIMPL -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::SetTerminatedToXIMPL( - const TDesC& aIdentity ) - { - DP_SDA("CPresencePluginEntityWatcher::SetTerminatedToXIMPL"); - DP_SDA2("CPresencePluginEntityWatcher::SetTerminatedToXIMPL, uri: %S", - &aIdentity ); - //check what is grand request list subscribe state - if( iConnObs.GrandListState() ) - { - DP_SDA("CPresencePluginEntityWatcher::SetTerminatedToXIMPL True"); - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.ProtocolPresenceHost().WatchingDataHost(); - MPresenceInfo* prInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresenceInfoLC(); - - //Call set to pending - iPresenceData->NotifyTerminatedToXIMPL( - iConnObs.PresenceObjectFactoryOwn(), - *prInfo ); - - MXIMPIdentity* identity2 = iConnObs.ObjectFactory().NewIdentityLC(); - - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( aIdentity ); - identity2->SetIdentityL( *withoutPrefix ); - - DP_SDA("SetTerminatedToXIMPL, write offline status to cache"); - iPresenceData->WriteStatusToCacheL( *withoutPrefix, - MPresenceBuddyInfo2::ENotAvailable, - KNullDesC(), - KNullDesC() ); - - // XIMP Host API callback - watcherHost.HandleSubscribedPresentityPresenceL( identity2, prInfo ); - - CleanupStack::PopAndDestroy( withoutPrefix ); - CleanupStack::Pop(); // >> identity2 - CleanupStack::Pop( ); // >> prInfo - } - DP_SDA("CPresencePluginEntityWatcher::SetTerminatedToXIMPL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::SetActiveToXIMPL -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::SetActiveToXIMPL( - MSimpleDocument& aDocument ) - { - DP_SDA("CPresencePluginEntityWatcher::SetActiveToXIMPL, aDocument"); - // No need to check the expiration here since WatcherTerminatedL - // is called then too. - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.ProtocolPresenceHost().WatchingDataHost(); - MPresenceInfo* prInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresenceInfoLC(); - - DP_SDA(" SetActiveToXIMPL, call NotifyToPrInfoL"); - - iPresenceData->NotifyToPrInfoL( - iConnObs.ObjectFactory(), - iConnObs.PresenceObjectFactoryOwn(), - aDocument, *prInfo ); - DP_SDA(" SetActiveToXIMPL, NotifyToPrInfoL ok"); - - // Get variables from presence info object for cache entry - MPresenceBuddyInfo2::TAvailabilityValues availability = - MPresenceBuddyInfo2::ENotAvailable; - - HBufC* extendedAvailability = HBufC::NewLC( KBufSize255 ); - TPtr extendedAvailabilityPtr( extendedAvailability->Des() ); - - HBufC* statusMessage = HBufC::NewLC( KBufSize255 ); - TPtr statusMessagePtr( statusMessage->Des() ); - - DP_SDA(" SetActiveToXIMPL, NotifyToPrInfoL ok, get cache entries"); - iPresenceData->CacheEntriesFromPrInfo( *prInfo, - availability, extendedAvailabilityPtr, statusMessagePtr ); - - DP_SDA(" SetActiveToXIMPL, create identity"); - MXIMPIdentity* identity2 = iConnObs.ObjectFactory().NewIdentityLC(); - HBufC* uniBuffer = - CnvUtfConverter::ConvertToUnicodeFromUtf8L( - *aDocument.EntityURI() ); - CleanupStack::PushL( uniBuffer ); - DP_SDA("CPresencePluginEntityWatcher::SetActiveToXIMPL, identity ok"); - - DP_SDA("CPresencePluginEntityWatcher::SetActiveToXIMPL, strip prefix"); - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *uniBuffer ); - identity2->SetIdentityL( *withoutPrefix ); - - //Call presence cache writer too - iPresenceData->WriteStatusToCacheL( *withoutPrefix, availability, - extendedAvailabilityPtr, statusMessagePtr ); - - // XIMP Host API callback - watcherHost.HandleSubscribedPresentityPresenceL( identity2, prInfo ); - - CleanupStack::PopAndDestroy( withoutPrefix ); - CleanupStack::PopAndDestroy( uniBuffer ); - CleanupStack::Pop(); // >> identity2 - - CleanupStack::PopAndDestroy( statusMessage ); - CleanupStack::PopAndDestroy( extendedAvailability ); - - CleanupStack::Pop(); // >> prInfo - DP_SDA("CPresencePluginEntityWatcher::SetActiveToXIMPL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::SetTerminatedToXIMPL -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::SetTerminatedToXIMPL( ) - { - DP_SDA("CPresencePluginEntityWatcher::SetTerminatedToXIMPL"); - DP_SDA("CPresencePluginEntityWatcher::SetTerminatedToXIMPL True"); - - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.ProtocolPresenceHost().WatchingDataHost(); - MPresenceInfo* prInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresenceInfoLC(); - - //Call set to pending - iPresenceData->NotifyTerminatedToXIMPL( - iConnObs.PresenceObjectFactoryOwn(), - *prInfo ); - - MXIMPIdentity* identity2 = iConnObs.ObjectFactory().NewIdentityLC(); - HBufC* uniBuffer = - CnvUtfConverter::ConvertToUnicodeFromUtf8L( iEntityId->Des() ); - - CleanupStack::PushL( uniBuffer ); - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *uniBuffer ); - identity2->SetIdentityL( *withoutPrefix ); - - //Call presence cache writer too - iPresenceData->WriteStatusToCacheL( *withoutPrefix, - MPresenceBuddyInfo2::ENotAvailable, - KInvisibleState(), - KNullDesC() ); - - // XIMP Host API callback - watcherHost.HandleSubscribedPresentityPresenceL( identity2, prInfo ); - - DP_SDA2("SetTerminatedToXIMPL2: ident %S", &identity2->Identity() ); - CleanupStack::PopAndDestroy( withoutPrefix ); - CleanupStack::PopAndDestroy( uniBuffer ); - CleanupStack::Pop(); // >> identity21 - CleanupStack::Pop(); // >> prInfo - - DP_SDA("CPresencePluginEntityWatcher::SetTerminatedToXIMPL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::WatcherNotificationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::WatcherNotificationL( - MSimpleDocument& aDocument ) - { - DP_SDA("CPresencePluginEntityWatcher::WatcherNotificationL"); - - MSimpleWatcher::TSimpleSipSubscriptionState subscribeStatus = - iWatcher->SipSubscriptionState(); - DP_SDA2("WatcherNotificationL subscribe status %d",subscribeStatus ); - - //If subscribeStatus = pending - if( MSimpleWatcher::ESimpleStatePending == subscribeStatus ) - { - // Pending - DP_SDA("CPresencePluginEntityWatcher::WatcherNotificationL PENDING"); - SetPendingToXIMPL(); - } - else if( MSimpleWatcher::ESimpleStateTerminated == subscribeStatus ) - { - DP_SDA("CPresencePluginEntityWatcher::WatcherNotificationL TERMINATED"); - SetTerminatedToXIMPL( ); - } - else - { - //Active - DP_SDA("WatcherNotificationL normal Case"); - SetActiveToXIMPL( aDocument ); - } - DP_SDA("CPresencePluginEntityWatcher::WatcherNotificationL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::WatcherListNotificationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::WatcherListNotificationL( - MSimplePresenceList& aList ) - { - DP_SDA("CPresencePluginEntityWatcher::WatcherListNotificationL"); - // call all the necessary callbacks, for new data + teminated ones. - - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.Host()->ProtocolPresenceDataHost().WatchingDataHost(); - - RPointerArray entities; - RPointerArray terminated; - RPointerArray actives; - - TRAPD( err, iPresenceData->NotifyListToPrInfoL( - iConnObs.ObjectFactory(),iConnObs.PresenceObjectFactoryOwn(), - aList, entities, actives, terminated )); - if ( err ) - { - entities.ResetAndDestroy(); - terminated.ResetAndDestroy(); - actives.ResetAndDestroy(); - entities.Close(); - terminated.Close(); - actives.Close(); - return; - } - - // Start to collect data for HandleSubscribedPresentityPresenceL - TInt counter = entities.Count(); - for ( TInt i = counter-1 ; i>=0; i-- ) - { - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( - actives[i]->Identity() ); - actives[i]->SetIdentityL( *withoutPrefix ); - - watcherHost.HandleSubscribedPresentityPresenceL( - actives[i], entities[i] ); - // Owenership is transferred - actives.Remove(i); - entities.Remove(i); - CleanupStack::PopAndDestroy( withoutPrefix ); - } - - entities.ResetAndDestroy(); - terminated.ResetAndDestroy(); - actives.ResetAndDestroy(); - - entities.Close(); - terminated.Close(); - actives.Close(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::WatcherTerminatedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::WatcherTerminatedL( - TInt /*aOpId*/, TInt aReason ) - { - DP_SDA2("CPresencePluginEntityWatcher::WatcherTerminatedL -reason: %d", aReason ); - - MProtocolPresenceWatchingDataHost& watcherHost = - iConnObs.Host()->ProtocolPresenceDataHost().WatchingDataHost(); - - MXIMPDataSubscriptionState *state = - iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - MXIMPStatus* status = iConnObs.ObjectFactory().NewStatusLC(); - state->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - status->SetResultCode( aReason ); - MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); - - HBufC16* buf16 = HBufC16::NewLC( PresentityId().Length()); - buf16->Des().Copy( PresentityId() ); - identity->SetIdentityL( buf16->Des() ); - - //Visualize closed state OpenSer - SetTerminatedToXIMPL( buf16->Des() ); - - CleanupStack::PopAndDestroy( buf16 ); - watcherHost.SetPresentityPresenceDataSubscriptionStateL( - identity, state, status ); - DP_SDA("CPresencePluginEntityWatcher::WatcherTerminatedL pop"); - CleanupStack::Pop( 3 ); - - iPluginWatcher.DeleteWatcher( iEntityId->Des() ); - - DP_SDA("CPresencePluginEntityWatcher::WatcherTerminatedL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::CompleteClientReq() -// --------------------------------------------------------------------------- -// -void CPresencePluginEntityWatcher::CompleteClientReq( TInt aStatus ) - { - DP_SDA("CPresencePluginEntityWatcher::CompleteClientReq"); - iOperation = EPluginIdle; - TRequestStatus* s = iClientStatus; - User::RequestComplete( s, aStatus ); - iClientStatus = NULL; - DP_SDA("CPresencePluginEntityWatcher::CompleteClientReq out"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::PresentityId -// --------------------------------------------------------------------------- -// -TPtrC8 CPresencePluginEntityWatcher::PresentityId( ) - { - DP_SDA("CPresencePluginEntityWatcher::PresentityId"); - return iEntityId ? iEntityId->Des() : TPtrC8(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginEntityWatcher::XIMPRequestId -// --------------------------------------------------------------------------- -// -TXIMPRequestId CPresencePluginEntityWatcher::XIMPRequestId( ) - { - return iXIMPId; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presenceplugingroup.cpp --- a/simpledatamodeladapter/src/presenceplugingroup.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,925 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "mpresencepluginconnectionobs.h" -#include "presenceplugingroup.h" -#include "presencepluginxdmutils.h" -#include "presenceplugincommon.h" -#include "presencepluginvirtualgroup.h" -#include "presenceplugindata.h" -#include "presencepluginwatcher.h" -#include "presencepluginauthorization.h" -#include "presencepluginutility.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::CPresencePluginGroups -// --------------------------------------------------------------------------- -// -CPresencePluginGroups::CPresencePluginGroups( - MPresencePluginConnectionObs& aObs, - CPresencePluginVirtualGroup* aSubscribedBuddies, - CPresencePluginData* aPresenceData ): - CActive( CActive::EPriorityStandard ), - iConnObs(aObs), - iOperation( ENoOperation), - iState( EPluginIdle ), iCompleted( ETrue ), - iSubscribedBuddies( aSubscribedBuddies ), - iPresenceData( aPresenceData ) - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::NewL -// --------------------------------------------------------------------------- -// -CPresencePluginGroups* CPresencePluginGroups::NewL( - MPresencePluginConnectionObs& aObs, - CPresencePluginVirtualGroup* aSubscribedBuddies, - CPresencePluginData* aPresenceData ) - { - CPresencePluginGroups* self = - CPresencePluginGroups::NewLC( - aObs, - aSubscribedBuddies, - aPresenceData ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::NewLC -// --------------------------------------------------------------------------- -// -CPresencePluginGroups* CPresencePluginGroups::NewLC( - MPresencePluginConnectionObs& aObs, - CPresencePluginVirtualGroup* aSubscribedBuddies, - CPresencePluginData* aPresenceData ) - { - CPresencePluginGroups* self = - new( ELeave ) CPresencePluginGroups( - aObs, - aSubscribedBuddies, - aPresenceData ); - CleanupStack::PushL( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::~CPresencePluginGroups -// --------------------------------------------------------------------------- -// -CPresencePluginGroups::~CPresencePluginGroups() - { - DP_SDA("CPresencePluginGroups::~CPresencePluginGroups"); - Cancel(); - delete iPresIdentity; - delete iDisplayName; - DP_SDA("CPresencePluginGroups::~CPresencePluginGroups end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoSubscribePresentityGroupListL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoSubscribePresentityGroupListL( - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginGroups::DoSubscribePresentityGroupListL"); - iCompleted = EFalse; - // List of lists under buddylist - StartXdmOperationL( aReqId, EGetListOfLists ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoUnsubscribePresentityGroupListL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoUnsubscribePresentityGroupListL( - TXIMPRequestId /*aReqId*/ ) - { - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoCreatePresentityGroupL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoCreatePresentityGroupL( - const MXIMPIdentity& /*aGroupId*/, - const TDesC16& /*aDisplayName*/, - TXIMPRequestId /*aReqId*/ ) - { - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoDeletePresentityGroupL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoDeletePresentityGroupL( - const MXIMPIdentity& /*aGroupId*/, - TXIMPRequestId /*aReqId*/ ) - { - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoUpdatePresentityGroupDisplayNameL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoUpdatePresentityGroupDisplayNameL( - const MXIMPIdentity& /*aGroupId*/, - const TDesC16& /*aDisplayName*/, - TXIMPRequestId /*aReqId*/ ) - { - // Notice: later - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoSubscribePresentityGroupContentL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoSubscribePresentityGroupContentL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginGroups::DoSubscribePresentityGroupContentL"); - iCompleted = EFalse; - // List of lists under buddylist - StartXdmOperationL( aGroupId, aReqId, EGetListContent ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoUnsubscribePresentityGroupContentL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoUnsubscribePresentityGroupContentL( - const MXIMPIdentity& /*aGroupId*/, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginGroups::DoUnsubscribePresentityGroupContentL"); - - iXIMPId = aReqId; - iConnObs.WatcherHandlerL()->UnSubscribeAllL(); - iCompleted = EFalse; - CompleteXIMPReq( KErrNone ); - DP_SDA("CPresencePluginGroups::DoUnsubscribePresentityGroupContentL out"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoAddPresentityGroupMemberL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoAddPresentityGroupMemberL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - const TDesC16& /*aMemberDisplayName*/, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL"); - __ASSERT_ALWAYS( !IsActive(), User::Leave( KErrNotReady ) ); - - SetPresIdentityL( aMemberId, ETrue ); - - iCompleted = EFalse; - iXIMPId = aReqId; - - if( !aGroupId.Identity().Compare( KPresenceBuddyList ) ) - { - DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL - buddylist"); - TBool contactIsBlocked = EFalse; - RPointerArray blockedList; - CleanupStack::PushL( TCleanupItem( - TPresencePluginUtility::ResetAndDestroyIdentities, - &blockedList ) ); - iXdmUtils->SubscribeBlockListL( blockedList ); - DP_SDA2( "CPresencePluginGroups::DoAddPresentityGroupMemberL - blockedList.Count = %d", - blockedList.Count() ); - - for ( TInt i( 0 ); i < blockedList.Count() && !contactIsBlocked; i++ ) - { - if ( 0 == blockedList[i]->Identity().Compare( aMemberId.Identity() ) ) - { - // contact found from blocked list - contactIsBlocked = ETrue; - } - } - CleanupStack::PopAndDestroy( &blockedList ); - - if ( contactIsBlocked ) - { - DP_SDA( "CPresencePluginGroups::DoAddPresentityGroupMemberL - contact is Blocked" ); - iOperation = EUnblockInAddPresentityGroupMember; - iConnObs.InternalPresenceAuthorization(). - DoPerformCancelPresenceBlockFromPresentityL( - aMemberId, iStatus ); - SetActive(); - } - else - { - DP_SDA( "CPresencePluginGroups::DoAddPresentityGroupMemberL - contact is not Blocked" ); - iOperation = EAddPresentityGroupMember; - // write pending to presence cache - TBuf<20> buf; - buf.Copy( KPendingRequestExtensionValue ); - iPresenceData->WriteStatusToCacheL( aMemberId.Identity(), - MPresenceBuddyInfo2::ENotAvailable, - buf, - KNullDesC() ); - iConnObs.WatcherHandlerL()->DoPerformSubscribePresentityPresenceL( - aMemberId, iStatus ); - SetActive(); - } - } - else if ( !aGroupId.Identity().Compare( KPresenceBlockedList ) ) - { - DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL - blockedlist"); - iOperation = EBlockPresentityGroupMember; - iConnObs.InternalPresenceAuthorization(). - DoPerformBlockPresenceForPresentityL( aMemberId, iStatus ); - SetActive(); - } - else - { - DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL - unknown, leave"); - User::Leave( KErrNotSupported ); - } - - DP_SDA("CPresencePluginGroups::DoAddPresentityGroupMemberL out"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoRemovePresentityGroupMemberL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoRemovePresentityGroupMemberL( - const MXIMPIdentity& aGroupId, - const MXIMPIdentity& aMemberId, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginGroups::DoRemovePresentityGroupMemberL"); - __ASSERT_ALWAYS( !IsActive(), User::Leave( KErrNotReady ) ); - - SetPresIdentityL( aMemberId, ETrue ); - - iCompleted = EFalse; - iXIMPId = aReqId; - iOperation = ERemovePresentityGroupMember; - - if( !aGroupId.Identity().Compare( KPresenceBuddyList ) ) - { - DP_SDA( "DoRemovePresentityGroupMemberL - buddylist" ); - iConnObs.WatcherHandlerL()->DoPerformUnsubscribePresentityPresenceL( - aMemberId, iStatus ); - SetActive(); - } - else if ( !aGroupId.Identity().Compare( KPresenceBlockedList ) ) - { - DP_SDA( "DoRemovePresentityGroupMemberL - blockedlist" ); - // Contact blocking is not cancelled when blocked contact is removed - // user can remove blocking from blocked list later - DeletePersonCacheL(); - CompleteXIMPReq( KErrNone ); - } - else - { - DP_SDA("DoRemovePresentityGroupMemberL - unknown, leave"); - User::Leave( KErrNotSupported ); - } - - DP_SDA("CPresencePluginGroups::DoRemovePresentityGroupMemberL out"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoUpdatePresentityGroupMemberDisplayNameL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoUpdatePresentityGroupMemberDisplayNameL( - const MXIMPIdentity& /*aGroupId*/, - const MXIMPIdentity& /*aMemberId*/, - const TDesC16& /*aMemberDisplayName*/, - TXIMPRequestId /*aReqId*/ ) - { - DP_SDA("CPresencePluginGroups::DoUpdatePresentityGroupMemberDisplayNameL"); - // Notice: Later - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoCancel() -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoCancel( ) - { - if ( iOperation != ENoOperation ) - { - iXdmUtils->Cancel(); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::RunL() -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::RunL() - { - DP_SDA("CPresencePluginGroups::RunL"); - TInt myStatus = iStatus.Int(); - DP_SDA2("CPresencePluginGroups::RunL myStatus %d", myStatus ); - - if ( !myStatus && !iCompleted ) - { - DP_SDA("CPresencePluginGroups::RunL !myStatus"); - // OK response - CallActualXdmOperationL( myStatus ); - } - else if ( KErrNotFound == myStatus && !iCompleted ) - { - DP_SDA("CPresencePluginGroups::RunL KErrNotFound == myStatus"); - - // DoPerformUnsubscribePresentityPresenceL didn't find watcher - // so it did not execute StopSubscribeL from the watcher. Still - // presentity group member has to be removed. - CallActualXdmOperationL( KErrNone ); - } - else if ( !myStatus && iCompleted ) - { - DP_SDA("CPresencePluginGroups::RunL SEND COMPLETE"); - CompleteXIMPReq( myStatus ); - } - else - { - if ( iOperation == EDeletePresentityGroup && iState == - EPluginCommitRls ) - { - DP_SDA("CPresencePluginGroups::RunL CallActualXdmOperation"); - CallActualXdmOperationL( myStatus ); - } - else - { - DP_SDA("CPresencePluginGroups::RunL SEND COMPLETE 2"); - // Other errors terminated the show - CompleteXIMPReq( myStatus ); - } - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::CallActualXdmOperationL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::CallActualXdmOperationL( TInt aCompleteStatus ) - { - DP_SDA("CPresencePluginGroups::CallActualXdmOperationL"); - - DP_SDA2("CallActualXdmOperationL iOperation %d", iOperation); - switch ( iOperation ) - { - case EGetListOfLists: - { - DP_SDA("PluginGroups::CallActualXdmOperationL EGetListOfLists"); - iOperation = EGetListOfLists; - GetListOfListsL(); - } - break; - - case EGetListContent: - { - DP_SDA("PluginGroups::CallActualXdmOperationL EGetListContent"); - iOperation = EGetListContent; - GetListContentL(); - } - break; - - case EAddPresentityGroupMember: - { - DP_SDA(" CallActualXdmOperationL EAddPresentityGroupMember"); - - iOperation = EGrantPresentityGroupMember; - MXIMPIdentity* newIdentity = - iConnObs.ObjectFactory().NewIdentityLC(); - newIdentity->SetIdentityL( *iPresIdentity ); - - iConnObs.InternalPresenceAuthorization(). - DoPerformGrantPresenceForPresentityL( *newIdentity, iStatus ); - CleanupStack::PopAndDestroy(); // >> newIdentity - SetActive(); - } - break; - - case ERemovePresentityGroupMember: - { - DP_SDA(" CallActualXdmOperationL ERemovePresentityGroupMember"); - iOperation = EWithdrawGrantFromMember; - MXIMPIdentity* newIdentity = iConnObs.ObjectFactory().NewIdentityLC(); - newIdentity->SetIdentityL( *iPresIdentity ); - iConnObs.InternalPresenceAuthorization(). - DoPerformWithdrawPresGrantFromPresentityL( - *newIdentity, iStatus ); - CleanupStack::PopAndDestroy(); // >> newIdentity - SetActive(); - } - break; - - case EGrantPresentityGroupMember: - { - DP_SDA(" CallActualXdmOperationL EGrantPresentityGroupMember"); - CompleteXIMPReq( aCompleteStatus ); - } - break; - - case EWithdrawGrantFromMember: - { - DP_SDA(" CallActualXdmOperationL EWithdrawGrantFromMember"); - if ( !aCompleteStatus ) - { - DP_SDA(" -> succesfully unblocked, store to cache"); - DeletePersonCacheL(); - DP_SDA(" -> store info to cache done"); - } - CompleteXIMPReq( aCompleteStatus ); - } - break; - - case EBlockPresentityGroupMember: - { - DP_SDA(" CallActualXdmOperationL EBlockPresentityGroupMember"); - if ( !aCompleteStatus ) - { - DP_SDA(" -> succesfully blocked, store to cache"); - - DP_SDA(" -> strip prefix from uri"); - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( - *iPresIdentity ); - DP_SDA(" -> store info to cache"); - - TBuf<20> buf; - buf.Copy( KBlockedExtensionValue ); - - iPresenceData->WriteStatusToCacheL( *withoutPrefix, - MPresenceBuddyInfo2::EUnknownAvailability, - buf, - KNullDesC() ); - - CleanupStack::PopAndDestroy( withoutPrefix ); - DP_SDA(" -> store info to cache done"); - } - CompleteXIMPReq( aCompleteStatus ); - } - break; - - case EUnblockPresentityGroupMember: - { - DP_SDA(" CallActualXdmOperationL EUnblockPresentityGroupMember"); - if ( !aCompleteStatus ) - { - DP_SDA(" -> succesfully unblocked, store to cache"); - DeletePersonCacheL(); - DP_SDA(" -> store info to cache done"); - } - CompleteXIMPReq( aCompleteStatus ); - } - break; - - case EUnblockInAddPresentityGroupMember: - { - DP_SDA(" CallActualXdmOperationL EUnblockInAddPresentityGroupMember"); - iOperation = EAddPresentityGroupMember; - MXIMPIdentity* newIdentity = iConnObs.ObjectFactory().NewIdentityLC(); - newIdentity->SetIdentityL( *iPresIdentity ); - - TBuf<20> buf; - buf.Copy( KPendingRequestExtensionValue ); - iPresenceData->WriteStatusToCacheL( *iPresIdentity, - MPresenceBuddyInfo2::ENotAvailable, - buf, KNullDesC() ); - - iConnObs.WatcherHandlerL()->DoPerformSubscribePresentityPresenceL( - *newIdentity, iStatus ); - CleanupStack::PopAndDestroy(); // >> newIdentity - SetActive(); - } - break; - - default: - User::Leave( KErrNotSupported ); - break; - } - DP_SDA("CPresencePluginGroups::CallActualXdmOperationL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::RunError -// --------------------------------------------------------------------------- -// -TInt CPresencePluginGroups::RunError( TInt aError ) - { - DP_SDA("CPresencePluginGroups::RunError SEND COMPLETE"); - // complete the open request - CompleteXIMPReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CPresencePluginGroups::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - MProtocolPresentityGroups* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::GetInterface() -// --------------------------------------------------------------------------- -// -const TAny* CPresencePluginGroups::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - const MProtocolPresentityGroups* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::GetInterfaceId() -// --------------------------------------------------------------------------- -// -TInt32 CPresencePluginGroups::GetInterfaceId() const - { - return MProtocolPresentityGroups::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::SetPresIdentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::SetPresIdentityL( - const MXIMPIdentity& aPresentityId, - TBool aFormatUri ) - { - DP_SDA2("CPresencePluginGroups::SetPresIdentityL: %S", - &aPresentityId.Identity() ); - - delete iPresIdentity; - iPresIdentity = NULL; - - if ( aFormatUri ) - { - DP_SDA("CPresencePluginGroups::SetPresIdentityL, format uri"); - - HBufC8* identityCopy = HBufC8::NewLC( KBufSize255 ); - TPtr8 identityCopyPtr( identityCopy->Des() ); - identityCopyPtr.Copy( aPresentityId.Identity() ); - - HBufC8* prefixUri = iPresenceData->CreatePresenceUri8LC( - identityCopyPtr ); - - HBufC* prefixUri16 = HBufC::NewLC( KBufSize255 ); - TPtr prefixUri16Ptr( prefixUri16->Des() ); - prefixUri16Ptr.Copy( *prefixUri ); - - iPresIdentity = prefixUri16; - CleanupStack::Pop( prefixUri16 ); - CleanupStack::PopAndDestroy( prefixUri ); - CleanupStack::PopAndDestroy( identityCopy ); - } - else - { - DP_SDA("CPresencePluginGroups::SetPresIdentityL, use as it is"); - iPresIdentity = aPresentityId.Identity().AllocL(); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::StartXdmOperationL( - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ) - { - DP_SDA("StartXdmOperationL StartXdmOperationL two param"); - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - iXIMPId = aReqId; - iOperation = aOperation; - StartXdmOperationL(); - DP_SDA("StartXdmOperationL StartXdmOperationL two param end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::StartXdmOperationL( - const MXIMPIdentity& aId, - TXIMPRequestId aReqId, - TPluginGroupsOperation aOperation ) - { - DP_SDA("StartXdmOperationL StartXdmOperationL three param"); - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - SetPresIdentityL( aId, EFalse ); - iXIMPId = aReqId; - iOperation = aOperation; - StartXdmOperationL(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::StartXdmOperationL() - { - if ( !iXdmUtils ) - { - DP_SDA("CPresencePluginGroups::StartXdmOperationL Get xdmUtils"); - iXdmUtils = iConnObs.XdmUtilsL(); - } - DP_SDA("CPresencePluginGroups::StartXdmOperationL StartXdmOperationL"); - - iXdmUtils->InitializeXdmL( iStatus ); - iState = EPluginInitXdm; - DP_SDA("CPresencePluginGroups::StartXdmOperationL SetActive"); - SetActive(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::GetListOfListsL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::GetListOfListsL() - { - DP_SDA("CPresencePluginGroups::GetListOfListsL"); - - RPointerArray subscribed; - CleanupClosePushL( subscribed ); - - iXdmUtils->SubscribeBuddyListL( subscribed ); - DP_SDA("CPresencePluginGroups::GetListOfListsL SubscribeBudyList Ready"); - - MXIMPObjectCollection* coll = - iConnObs.ObjectFactory().NewObjectCollectionLC(); // << coll - - TInt count = subscribed.Count(); - DP_SDA2("CPresencePluginGroups::GetListOfListsL soul count %d", count); - - for ( TInt i = 0; i < count; i++ ) - { - MXIMPIdentity* currId = subscribed[i]; - MPresentityGroupInfo* sInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresentityGroupInfoLC(); - sInfo->SetGroupIdL( currId ); // ownership is taken - sInfo->SetGroupDisplayNameL( currId->Identity() ); - - coll->AddObjectL( sInfo ); // ownership is taken - CleanupStack::Pop(); // >> bInfo - } - DP_SDA("SubscribeBudyList For ready SEND COMPLETE continue"); - - CompleteXIMPReq( KErrNone ); - - // Callback for subscription state (terminated). - MXIMPDataSubscriptionState* myState = - iConnObs.ObjectFactory().NewDataSubscriptionStateLC(); - - MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC(); - - // Notice: consider XIMP error codes - myStatus->SetResultCode( KErrNone ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - - MProtocolPresentityGroupsDataHost& dataHost = - iConnObs.ProtocolPresenceHost().GroupsDataHost(); - - dataHost.SetPresentityGroupListDataSubscriptionStateL( - myState, myStatus ); - - dataHost.HandlePresentityGroupListL( coll ); - - CleanupStack::Pop( 3 ); // >> myState, myStatus, coll - CleanupStack::Pop( &subscribed ); - DP_SDA("CPresencePluginGroups::GetListOfListsL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::GetListContentL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::GetListContentL() - { - DP_SDA("CPresencePluginGroups::GetListContentL"); - - if( !iPresIdentity->Compare( KPresenceBuddyList ) ) - { - DP_SDA("CPresencePluginGroups::GetListContentL - get buddies"); - DoGetSubscribedBuddyListL(); - - // Consider waiting complete for each subscribe before completing - CompleteXIMPReq( KErrNone ); - } - else if( !iPresIdentity->Compare( KPresenceSubcribedBuddys ) ) - { - //Subscribe subscribed buddyes virtual group - DP_SDA("GetListContentL KPresenceSubcribedBuddys"); - DoGetSubscribedBuddyListL(); - } - else - { - DP_SDA("CPresencePluginGroups::GetListContentL Wrong list name"); - User::Leave( KErrNotFound ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoGetBuddyListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoGetBuddyListL() - { - DP_SDA("CPresencePluginGroups::DoGetBuddyListL KPresenceBuddyList"); - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - MProtocolPresentityGroupsDataHost& dataHost = - iConnObs.ProtocolPresenceHost().GroupsDataHost(); - - MXIMPObjectCollection* entities = - myFactory.NewObjectCollectionLC(); // << entities - iXdmUtils->GetEntitiesInListL( iPresIdentity->Des(), *entities ); - DP_SDA("DoGetBuddyListL entities get ready SEND COMPLETE"); - - // callback for data - DP_SDA("CPresencePluginGroups::DoGetBuddyListL callback data"); - MXIMPIdentity* id = myFactory.NewIdentityLC(); // << id - id->SetIdentityL( iPresIdentity->Des() ); - dataHost.HandlePresentityGroupContentL( id, entities ); - CleanupStack::Pop();// >> id - CleanupStack::Pop();// >> entities - DP_SDA("CPresencePluginGroups::DoGetBuddyListL callback ready"); - - // Callback for subscription state (terminated). - DP_SDA("CPresencePluginGroups::DoGetBuddyListL terminated "); - id = myFactory.NewIdentityLC(); // << id - id->SetIdentityL( iPresIdentity->Des() ); - MXIMPDataSubscriptionState* myState = - myFactory.NewDataSubscriptionStateLC(); - MXIMPStatus* myStatus = myFactory.NewStatusLC(); - // Notice: consider XIMP error codes - myStatus->SetResultCode( KErrNone ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - - dataHost.SetPresentityGroupContentDataSubscriptionStateL( - id, myState, myStatus ); - - DP_SDA("CPresencePluginGroups::DoGetBuddyListL Pop"); - CleanupStack::Pop( 3 ); - - DP_SDA("CPresencePluginGroups::DoGetBuddyListL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DoGetSubscribedBuddyListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DoGetSubscribedBuddyListL() - { - DP_SDA("CPresencePluginGroups::DoGetSubscribedBuddyListL"); - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - MProtocolPresentityGroupsDataHost& dataHost = - iConnObs.ProtocolPresenceHost().GroupsDataHost(); - - // Get internal list content - MXIMPObjectCollection* entities = - myFactory.NewObjectCollectionLC(); // << entities - iXdmUtils->GetEntitiesInListL( iPresIdentity->Des(), *entities ); - DP_SDA("DoGetBuddyListL entities get ready SEND COMPLETE"); - CleanupStack::PopAndDestroy(); // entities - - // start getting virtualEntities - MXIMPObjectCollection* virtualEntities = - myFactory.NewObjectCollectionLC();// << virtualEntities - - iSubscribedBuddies->GetVirtualEntitiesL( *virtualEntities ); - - DP_SDA("CPresencePluginGroups::DoGetSubscribedBuddyListL - subscribe all"); - iConnObs.WatcherHandlerL()->SubscribeAllL(); - DP_SDA("CPresencePluginGroups::DoGetSubscribedBuddyListL - subscribe all ok"); - - // callback for data - DP_SDA("DoGetSubscribedBuddyListL callback data"); - MXIMPIdentity* id = myFactory.NewIdentityLC(); // << id - id->SetIdentityL( iPresIdentity->Des() ); - dataHost.HandlePresentityGroupContentL( id, virtualEntities ); - CleanupStack::Pop(); // >> id - CleanupStack::Pop(); // >> entities - DP_SDA("DoGetSubscribedBuddyListL callback ready"); - - // Callback for subscription state (terminated). - DP_SDA("CPresencePluginGroups::DoGetSubscribedBuddyListL terminated"); - id = myFactory.NewIdentityLC(); // << id - id->SetIdentityL( iPresIdentity->Des() ); - MXIMPDataSubscriptionState* myState = - myFactory.NewDataSubscriptionStateLC(); - MXIMPStatus* myStatus = myFactory.NewStatusLC(); - // Notice: consider XIMP error codes - myStatus->SetResultCode( KErrNone ); - myState->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionActive ); - dataHost.SetPresentityGroupContentDataSubscriptionStateL( - id, myState, myStatus ); - - CleanupStack::Pop( 3 ); - - DP_SDA("DoGetSubscribedBuddyListL - KPresenceOnlineBuddy case end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::CompleteXIMPReq -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::CompleteXIMPReq( TInt aStatus ) - { - DP_SDA("CPresencePluginGroups::CompleteXIMPReq"); - if ( iCompleted ) - { - DP_SDA("CPresencePluginGroups::CompleteXIMPReq return"); - return; - } - - iCompleted = ETrue; - iOperation = ENoOperation; - iConnObs.CompleteReq( iXIMPId, aStatus ); - iXIMPId = TXIMPRequestId(); - DP_SDA("CPresencePluginGroups::CompleteXIMPReq end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginGroups::DeletePersonCacheL -// --------------------------------------------------------------------------- -// -void CPresencePluginGroups::DeletePersonCacheL() - { - DP_SDA("CPresencePluginGroups::DeletePersonCacheL"); - DP_SDA(" -> strip prefix from uri"); - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity ); - iPresenceData->DeletePresenceL( *withoutPrefix ); - CleanupStack::PopAndDestroy( withoutPrefix ); - DP_SDA("CPresencePluginGroups::DeletePersonCacheL out"); - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginpublisher.cpp --- a/simpledatamodeladapter/src/presencepluginpublisher.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1440 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // For KSimplePDM -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "presenceplugincommon.h" -#include "presencepluginpublisher.h" -#include "presencepluginwinfo.h" -#include "presenceplugindata.h" -#include "presencepluginxdmutils.h" -#include "presencepluginwatcherinfo.h" -#include "presenceplugincommon.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::CPresencePluginPublisher() -// --------------------------------------------------------------------------- -// -CPresencePluginPublisher::CPresencePluginPublisher( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn ) - : CActive( CActive::EPriorityStandard ), - iConnObs(aObs), iConnection(aConn), - iPublisher( NULL ), iWatcher( NULL ), - iSubscribed(EFalse), iSubscribedOwn(EFalse), - iPublished(EFalse), iRePublish(EFalse), - iWatcherList( CPresencePluginWatcherInfo::LinkOffset() ) - { - DP_SDA("CPresencePluginPublisher::CPresencePluginPublisher "); - CActiveScheduler::Add(this); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::ConstructL( CPresencePluginData* aPresenceData ) - { - DP_SDA("CPresencePluginPublisher::ConstructL "); - iWatcher = TSimpleFactory::NewWatcherL( iConnection, *this ); - iPublisher = TSimpleFactory::NewPublisherL( iConnection, *this ); - iPresenceData = aPresenceData; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginPublisher* CPresencePluginPublisher::NewL( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CPresencePluginData* aPresenceData ) - { - CPresencePluginPublisher* self = - new( ELeave ) CPresencePluginPublisher( aObs, aConn ); - CleanupStack::PushL( self ); - self->ConstructL( aPresenceData ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::~CPresencePluginPublisher() -// --------------------------------------------------------------------------- -// -CPresencePluginPublisher::~CPresencePluginPublisher() - { - DP_SDA("CPresencePluginPublisher::~CPresencePluginPublisher"); - - if ( iDocument ) - { - iDocument->Close(); - } - - if ( iPublisher ) - { - iPublisher->Close(); - } - - if ( iWatcher ) - { - iWatcher->Close(); - } - - DeleteWatchers(); - iClientStatus = NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::DeleteWatchers -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::DeleteWatchers() - { - DP_SDA("CPresencePluginPublisher::DeleteWatchers"); - // Delete all buffered transaction requests - TDblQueIter rIter( iWatcherList ); - rIter.SetToFirst(); - - while ( rIter ) - { - DP_SDA("CPresencePluginPublisher::DeleteWatchers while"); - CPresencePluginWatcherInfo* w = rIter; - rIter++; - // delete wathcer info - w->Destroy(); - } - DP_SDA("CPresencePluginPublisher::DeleteWatchers end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::AddWatcherIfNotExistsL -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::AddWatcherIfNotExistsL( - const TDesC8& aId, - const TDesC& aSipId ) - { - DP_SDA("CPresencePluginPublisher::AddWatcherIfNotExistsL"); - // Delete all buffered transaction requests - TDblQueIter rIter( iWatcherList ); - rIter.SetToFirst(); - - TBool found(EFalse); - - while ( rIter ) - { - CPresencePluginWatcherInfo* w = rIter; - rIter++; - found = w->Match( aId, aSipId ); - if ( found ) - { - DP_SDA("CPresencePluginPublisher::AddWatcherIfNotExistsL found"); - break; - } - } - if ( !found ) - { - DP_SDA("CPresencePluginPublisher::AddWatcherIfNotExistsL !found"); - CPresencePluginWatcherInfo* w = - CPresencePluginWatcherInfo::NewL( aId, aSipId ); - iWatcherList.AddLast( *w ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::RemoveWatcherIfExistsL -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::RemoveWatcherIfExists( - const TDesC8& aId, const TDesC& aSipId ) - { - DP_SDA("CPresencePluginPublisher::RemoveWatcherIfExistsL"); - // Delete all buffered transaction requests - TDblQueIter rIter( iWatcherList ); - rIter.SetToFirst(); - - TBool found(EFalse); - - while ( rIter ) - { - CPresencePluginWatcherInfo* w = rIter; - rIter++; - // delete wathcer info - found = w->Match( aId, aSipId ); - if ( found ) - { - w->Destroy(); - break; - } - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::DoPublishOwnPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::DoPublishOwnPresenceL( - const MPresenceInfo& aOwnPresence, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginPublisher::DoPublishOwnPresenceL"); - const MPersonPresenceInfo* persInfo = aOwnPresence.PersonPresence(); - if ( !persInfo ) - { - // Notice: error codes - CompleteXIMPReq( KErrArgument ); - return; - } - InitializeSimpleDocumentL( ); - AddSimpleDocumentPersL( persInfo ); - - StartXdmOperationL( aReqId ); - iOperation = EPublishOwn; - DP_SDA("CPresencePluginPublisher::DoPublishOwnPresenceL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::DoSubscribeOwnPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::DoSubscribeOwnPresenceL( - const MPresenceInfoFilter& /*aPif*/, // notice: later - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginPublisher::DoSubscribeOwnPresenceL"); - StartXdmOperationL( aReqId ); - iOperation = ESubscribeOwn; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::DoUpdateOwnPresenceSubscriptionPifL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::DoUpdateOwnPresenceSubscriptionPifL( - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { - // Notice: later - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::DoUnsubscribeOwnPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::DoUnsubscribeOwnPresenceL( - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginPublisher::DoUnsubscribeOwnPresenceL"); - iSubscribedOwn = EFalse; - iSimpleId = iWatcher->UnsubscribeL(); - iXIMPId = aReqId; - iOperation = EUnsubscribeOwn; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::DoSubscribePresenceWatcherListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::DoSubscribePresenceWatcherListL( - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginPublisher::DoSubscribePresenceWatcherListL"); - if ( !iSubscribed ) - { - DP_SDA("DoSubscribePresenceWatcherListL !Subscribed"); - iConnObs.WinfoHandlerL()->SubscribeWinfoListL( aReqId ); - iSubscribed = ETrue; - iXIMPId = aReqId; - iOperation = ESubscribeWinfo; - } - else - { - DP_SDA("DoSubscribePresenceWatcherListL else"); - iXIMPId = aReqId; - iOperation = ESubscribeWinfo; - CompleteXIMPReq( KErrNone ); - } - DP_SDA("CPresencePluginPublisher::DoSubscribePresenceWatcherListL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::DoUnsubscribePresenceWatcherListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::DoUnsubscribePresenceWatcherListL( - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginPublisher::DoUnsubscribePresenceWatcherListL"); - if ( iSubscribed ) - { - DP_SDA("DoUnsubscribePresenceWatcherListL: if ( iSubscribed ) - begin"); - iConnObs.WinfoHandlerL()->UnsubscribeWinfoListL( aReqId ); - iSubscribed = EFalse; - iXIMPId = aReqId; - iOperation = EUnsubscribeWinfo; - DP_SDA("DoUnsubscribePresenceWatcherListL: if ( iSubscribed ) - end"); - - } - else - { - DP_SDA("DoUnsubscribePresenceWatcherListL: iSubscribed ) is false"); - iXIMPId = aReqId; - iOperation = EUnsubscribeWinfo; //hameed - CompleteXIMPReq( KErrNone ); - } - } - - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::PublishReqCompleteL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::PublishReqCompleteL( - TInt /*aOpid*/, - TInt aStatus ) - { - DP_SDA("CPresencePluginPublisher::PublishReqCompleteL"); - // Notice: make 415 error code conversion here and other - //SIP code -> XIMP conversions - DP_SDA2("PublishReqCompleteL STATUS %d",aStatus ); - - if( iConnObs.GetSessionStatus() ) - { - DP_SDA2("PublishReqComp stopState %d",iConnObs.GetStopPublishState()); - if ( !aStatus && !iConnObs.GetStopPublishState() ) - { - DP_SDA("CPresencePluginPublisher::PublishReqCompleteL ETrue"); - iPublished = ETrue; - iConnObs.SetStopPublishState( ETrue ); - } - // Save E-Tag - if( !aStatus ) - { - DP_SDA("CPresencePluginPublisher::PublishReqCompleteL Save ETAG"); - TBuf8 buf; - buf.Copy( iPublisher->SIPETag() ); - iConnObs.SetETag( buf ); - } - //Do not complete if error republish is true. XIMPFW is not knowing we - //are sending republish. - if( EFalse == iRePublish && !aStatus ) - { - //Complete Publish request - DP_SDA("CPresencePluginPublisher::PublishReqCompleteL complete"); - if( !(iConnObs.IsStopPublishCalled()) ) - { - DP_SDA("CPresencePluginPublisher::PublishReqCompleteL complete normal"); - // successfull Online / others: store status to cache - StoreOwnStatusToCacheL( ); - CompleteXIMPReq( aStatus ); - } - //Complete stopPublish and close session if stopPublish is called - if( iConnObs.IsStopPublishCalled() ) - { - DP_SDA("PublishReqCompleteL complete closeSession"); - iPresenceData->DeletePresenceVariablesL( iConnObs.ServiceId() ); - // successfull Online / others: store status to cache - StoreOwnStatusToCacheL( ); - //Complete close session - CompleteClientReq( aStatus ); - } - } - if( EFalse == iRePublish && ( KSimpleErrTemporary == aStatus ) ) - { - DP_SDA("PublishReqCompleteL KSimpleErrTemporary"); - // Make new publish request without ETag - CreatePublisherL(); - iSimpleId = iPublisher->StartPublishL( *iDocument, ETrue ); - } - else if( EFalse == iRePublish && ( KErrTimedOut == aStatus ) ) - { - DP_SDA("PublishReqCompleteL KErrTimedOut"); - iPublisher->StopPublishL(); - CompleteXIMPReq( KXIMPErrServicRequestTimeouted ); - } - else if( KErrCommsBreak == aStatus ) - { - DP_SDA("PublishReqCompleteL KErrCommsBreak"); - CompleteXIMPReq( KErrCommsBreak ); - } - else - { - //Set rePublish flag back to false. - iRePublish = EFalse; - } - } - else - { - //Run this case if connection is not good any more - DP_SDA("PublishReqCompleteL No connect CANCEL"); - Cancel(); - } - DP_SDA("CPresencePluginPublisher::PublishReqCompleteL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::PublishTerminatedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::PublishTerminatedL( TInt aOpid ) - { - DP_SDA("CPresencePluginPublisher::PublishTerminatedL"); - DP_SDA2("CPresencePluginPublisher::PublishTerminatedL opID %d",aOpid ); - DP_SDA2("PublishTerminatedL iSimpleId %d",iSimpleId ); - DP_SDA2("PublishTerminatedL iStatus %d",iStatus.Int() ); - - if ( iSimpleId == aOpid && iConnObs.GetSessionStatus() ) - { - DP_SDA("CPresencePluginPublisher::PublishTerminatedL NewPublish"); - CreatePublisherL(); - TRAPD( error , iSimpleId = iPublisher->StartPublishL( - *iDocument, ETrue ) ); - if ( KErrNone == error ) - { - DP_SDA("PublishTerminatedL NewPublish KErrNone"); - iRePublish = ETrue; - iConnObs.SetStopPublishState( EFalse ); - } - } - else - { - DP_SDA("CPresencePluginPublisher::PublishTerminatedL else"); - iPublished = EFalse; - if( iPublisher ) - { - iPublisher->Close(); - iPublisher = NULL; - } - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::WatcherReqCompleteL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::WatcherReqCompleteL( TInt /*aOpid*/, - TInt aStatus ) - { - DP_SDA("CPresencePluginPublisher::WatcherReqCompleteL"); - if ( !aStatus ) - { - iSubscribedOwn = ETrue; - } - - CompleteXIMPReq( aStatus ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::WatcherNotificationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::WatcherNotificationL( - MSimpleDocument& aDocument ) - { - // Notice: Do not need to check the expiration here since - // WatcherTerminatedL is called then too. - DP_SDA("CPresencePluginPublisher::WatcherNotificationL"); - - MProtocolPresencePublishingDataHost& publishHost = - iConnObs.ProtocolPresenceHost().PublishingDataHost(); - - MPresenceInfo* prInfo = - iConnObs.PresenceObjectFactoryOwn().NewPresenceInfoLC();// << prInfo - - iPresenceData->NotifyToPrInfoL( - iConnObs.ObjectFactory(), - iConnObs.PresenceObjectFactoryOwn(), - aDocument, - *prInfo ); - - // XIMP Host API callbacks - - publishHost.HandleSubscribedOwnPresenceL( prInfo ); - CleanupStack::Pop(); // >> prInfo - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::WatcherListNotificationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::WatcherListNotificationL( - MSimplePresenceList& /*aList*/ ) - { - //Do nothing now - DP_SDA("CPresencePluginPublisher::WatcherListNotificationL EMPTY"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::WatcherTerminatedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::WatcherTerminatedL( - TInt /*aOpId*/, TInt aReason ) - { - DP_SDA("CPresencePluginPublisher::WatcherTerminatedL"); - - iSubscribedOwn = EFalse; - - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - MProtocolPresencePublishingDataHost& publishHost = - iConnObs.ProtocolPresenceHost().PublishingDataHost(); - - MXIMPDataSubscriptionState *state = - myFactory.NewDataSubscriptionStateLC(); - MXIMPStatus* status = myFactory.NewStatusLC(); - state->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - - status->SetResultCode( aReason ); - publishHost.SetOwnPresenceDataSubscriptionStateL( state, status ); - CleanupStack::Pop( 2 ); // status, state - - DP_SDA("CPresencePluginPublisher::WatcherTerminatedL - end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::CompleteXIMPReq() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::CompleteXIMPReq( TInt aStatus ) - { - DP_SDA("CPresencePluginPublisher::CompleteXIMPReq"); - DP_SDA2("CompleteXIMPReq: iOperation = %d",(TInt) iOperation ); - // Notice: should this yield active scheduler??? - if ( iOperation != ENoOperation ) - { - DP_SDA("CPresencePluginPublisher::CompleteXIMPReq complete"); - iOperation = ENoOperation; - iConnObs.CompleteReq( iXIMPId, aStatus ); - iXIMPId = TXIMPRequestId(); - } - DP_SDA("CPresencePluginPublisher::CompleteXIMPReq end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::CompleteClientReq() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::CompleteClientReq( TInt aStatus ) - { - DP_SDA2("CPresencePluginPublisher::CompleteClientReq status %d ", aStatus); - iOperation = ENoOperation; - TRequestStatus* s = iClientStatus; - User::RequestComplete( s, aStatus ); - DP_SDA("CPresencePluginPublisher::CompleteClientReq end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::DoCancel() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::DoCancel( ) - { - DP_SDA("CPresencePluginPublisher::DoCancel CANCEL"); - iXdmUtils->Cancel(); - iPublisher->Close(); - iPublisher = NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::RunL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::RunL( ) - { - DP_SDA("CPresencePluginPublisher::RunL"); - TInt status = iStatus.Int(); - DP_SDA2("CPresencePluginPublisher::RunL status %d", status ); - if ( !status ) - { - - if ( iOperation == ESubscribeOwn ) - { - DP_SDA("CPresencePluginPublisher::RunL Subscribe Own"); - iSimpleId = iWatcher->SubscribeL( - iConnObs.CurrentSipPresentity8(), - NULL, // aFilter <-> aPif - ETrue, EFalse ); - } - else if( iOperation == EPublishOwn ) - { - DP_SDA("CPresencePluginPublisher::RunL MakePublishReqL"); - MakePublishReqL(); - } - } - else - { - DP_SDA("CPresencePluginPublisher::RunL complete"); - CompleteXIMPReq( status ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::RunError -// --------------------------------------------------------------------------- -// -TInt CPresencePluginPublisher::RunError( TInt aError ) - { - DP_SDA2("CPresencePluginPublisher::RunError %d",aError ); - - CompleteXIMPReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CPresencePluginPublisher::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - DP_SDA("CPresencePluginPublisher::GetInterface"); - - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - MProtocolPresencePublishing* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::GetInterface() -// --------------------------------------------------------------------------- -// -const TAny* CPresencePluginPublisher::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - DP_SDA("CPresencePluginPublisher::GetInterface 2 "); - - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - const MProtocolPresencePublishing* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::GetInterfaceId() -// --------------------------------------------------------------------------- -// -TInt32 CPresencePluginPublisher::GetInterfaceId() const - { - DP_SDA("CPresencePluginPublisher::GetInterfaceId"); - - return MProtocolPresencePublishing::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::InitializeSimpleDocumentL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::InitializeSimpleDocumentL( ) - { - _LIT8 ( KCipidNS, "urn:ietf:params:xml:ns:pidf:cipid" ); - _LIT8 ( KCipidCP, "c" ); - if ( iDocument ) - { - DP_SDA("CPresencePluginPublisher:: deletedocument"); - iDocument->Close(); - iDocument = NULL; - iDocument = TSimpleFactory::NewDocumentL(); - } - else - { - DP_SDA("CPresencePluginPublisher:: create document"); - iDocument = TSimpleFactory::NewDocumentL(); - } - iDocument->AddNamespaceL( KSimplePDM, KSimpleNsPDM ); - iDocument->AddNamespaceL( KSimpleRPID, KSimpleNsRPID ); - iDocument->AddNamespaceL( KCipidCP, KCipidNS ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::AddSimpleDocumentPersL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::AddSimpleDocumentPersL( - const MPersonPresenceInfo* aInfo ) - { - TInt tupleId = iConnObs.GetTupleId(); - - DP_SDA2("AddSimpleDocumentPersL tuple id get: %d", tupleId); - if ( tupleId == 0 ) - { - DP_SDA("AddSimpleDocumentPersL tuple generate"); - tupleId = iPresenceData->GenerateTupleId(); - iConnObs.SetTupleId(tupleId); - } - - iPresenceData->AddPrPersToSimpleDocumentL( - aInfo, *iDocument, iConnObs.CurrentSipPresentity8(), tupleId ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::StopPublishL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::StopPublishL( TRequestStatus& aStatus ) - { - DP_SDA2("StopPublish - begin : iPublished= %d ",(TInt) iPublished); - - aStatus = KRequestPending; - iClientStatus = &aStatus; - - TInt err1( 0 ); - TInt err2( 0 ); - - // get stored document id if available - HBufC8* oldDocumentId = HBufC8::NewLC( KBufSize255 ); - TPtr8 oldDocumentIdPtr( oldDocumentId->Des() ); - TRAP( err1, iPresenceData->ReadDocumentIdL( - iConnObs.ServiceId(), oldDocumentIdPtr ) ); - - if ( iConnObs.GetStopPublishState() && iPublished ) - { - DP_SDA("CPresencePluginPublisher::StopPublish really Stop"); - if ( !err1 ) - { - TRAP( err2, iPublisher->StopPublishL( oldDocumentIdPtr ) ); - } - else - { - // if stored document id is not available try with this - TRAP( err2, iPublisher->StopPublishL( iConnObs.GetETag() ) ); - } - DP_SDA2("StopPublish iPublisher->StopPublishL : error = %d ", err2 ); - if ( KErrNone != err2 ) - { - if( iPublisher ) - { - DP_SDA("StopPublish delete and recreate publisher"); - iPublisher->Close(); - iPublisher = NULL; - DP_SDA("StopPublish really Stop try again 1 "); - iPublisher = - TSimpleFactory::NewPublisherL( iConnection, *this ); - DP_SDA("StopPublish really Stop try again 2 "); - err2 = KErrGeneral; - TRAP( err2, iPublisher->StopPublishL( iConnObs.GetETag() );); - DP_SDA2("StopPublishL 2nd try : error = %d ", err2 ); - if ( KErrNone != err2 ) - { - DP_SDA("StopPublish TWO TIME Error, last try without tag "); - TRAP( err2, iPublisher->StopPublishL(); ); - DP_SDA2("StopPublishL 3rd try : error = %d ", err2 ); - } - } - } - iConnObs.SetStopPublishState( ETrue ); - iPublished = EFalse; - } - CleanupStack::PopAndDestroy( oldDocumentId ); - - DP_SDA("CPresencePluginPublisher::StopPublish- end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::Published() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginPublisher::Published() - { - return iPublished; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::MakePublishReqL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::MakePublishReqL( ) - { - DP_SDA("CPresencePluginPublisher::MakePublishReqL"); - - DP_SDA(" -> MakePublishReqL, check for old doc id"); - HBufC8* oldDocumentId = HBufC8::NewLC( KBufSize255 ); - TPtr8 oldDocumentIdPtr( oldDocumentId->Des() ); - TRAPD( error, iPresenceData->ReadDocumentIdL( - iConnObs.ServiceId(), oldDocumentIdPtr ) ); - if ( !iPublished ) - { - DP_SDA("CPresencePluginPublisher::MakePublishReqL 1"); - CreatePublisherL(); - - DP_SDA2(" -> MakePublishReqL, doc id error: %d", error ); - if ( !error ) - { - DP_SDA(" -> MakePublishReqL, publish with old id"); - iSimpleId = iPublisher->ContinuePublishL( - *iDocument, ETrue, oldDocumentIdPtr ); - } - else - { - DP_SDA(" -> MakePublishReqL, publish with new id"); - iSimpleId = iPublisher->StartPublishL( *iDocument, ETrue ); - } - } - else - { - DP_SDA("CPresencePluginPublisher::MakePublishReqL 2"); - CreatePublisherL(); - DP_SDA("CPresencePluginPublisher::MakePublishReqL Continue Publish"); - if ( !error ) - { - DP_SDA(" -> MakePublishReqL, publish with stored id"); - iSimpleId = iPublisher->ContinuePublishL( - *iDocument ,ETrue, oldDocumentIdPtr ); - } - else - { - DP_SDA(" -> MakePublishReqL, stored id not found" ); - DP_SDA(", publish with old id"); - iSimpleId = iPublisher->ContinuePublishL( - *iDocument ,ETrue, iConnObs.GetETag() ); - } - DP_SDA("CPresencePluginPublisher::MakePublishReqL modifyed"); - } - CleanupStack::PopAndDestroy( oldDocumentId ); - DP_SDA("CPresencePluginPublisher::MakePublishReqL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::StartXdmOperationL( - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginPublisher::StartXdmOperationL"); - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrNotReady ) ); - iXIMPId = aReqId; - if ( !iXdmUtils ) - { - DP_SDA("StartXdmOperationL Initialize XDMUtils"); - iXdmUtils = iConnObs.XdmUtilsL(); - } - - // Allways check those XDM files are ok / - //publish seems to be jam if xdm not initialized ? - iXdmUtils->InitializeXdmL( iStatus ); - SetActive(); - DP_SDA("CPresencePluginPublisher::StartXdmOperationL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::WinfoNotificationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::WinfoNotificationL( - MSimpleWinfo& aWinfo ) - { - DP_SDA("CPresencePluginPublisher::WinfoNotificationL"); - - RPointerArray elems; - CleanupClosePushL( elems ); // << elems - TInt err = aWinfo.SimpleElementsL( elems ); - User::LeaveIfError( err ); - TInt count = elems.Count(); - - DP_SDA2("WinfoNotificationL elems count%d", count); - - __ASSERT_ALWAYS( count == 1, User::Leave( KErrCorrupt ) ); - - using namespace NPresencePlugin::NPresence; - - const TDesC8* stateVal = aWinfo.AttrValue( KPresenceState8 ); - - if ( stateVal && !stateVal->CompareF( KPresenceFull8 )) //state full - { - // full winfo-list is received (New empty list ) - DP_SDA("CPresencePluginPublisher::WinfoNotificationL full list found"); - DeleteWatchers(); - } - else - { - DP_SDA("PluginPublisher: state != full"); - // Test if state is partitial - if ( stateVal && !stateVal->CompareF( KPresencePartial8 )) - { - DP_SDA("PluginPublisher: state = partitial"); - } - } - - MSimpleElement* elem = elems[0]; - TPtrC8 p8 = elem->LocalName(); - err = p8.CompareF( KPresenceWatcherList8 ); - DP_SDA2("WinfoNotificationL KPresenceWatcherList8 err %d", err); - User::LeaveIfError( err ); - DP_SDA("WinfoNotificationL KPresenceWatcherList8 continue"); - - //Get elemets from document - err = elem->SimpleElementsL( elems ); - User::LeaveIfError( err ); - DP_SDA2("WinfoNotificationL get elems err %d", err); - //Make collect from active watchers - CollectWatchersL( elems ); - - CDesCArrayFlat* watchers = MakeCurrentWatcherListLC();// << watchers - MXIMPObjectCollection *actives = - iConnObs.ObjectFactory().NewObjectCollectionLC();// << actives - - // Create MXIMPPresenceWatcherInfo entities for - // all active watchers and add to actives. - TInt wCount = watchers->MdcaCount(); - DP_SDA2("CPresencePluginPublisher::WinfoNotificationL wCount %d", wCount); - for ( TInt j = 0; j < wCount; j++ ) - { - // create MXIMPPresenceWatcherInfo object - MPresenceWatcherInfo* wInfo = - iConnObs.PresenceObjectFactoryOwn(). - NewPresenceWatcherInfoLC();// << wInfo - - MXIMPIdentity* identity = - iConnObs.ObjectFactory().NewIdentityLC();// << identity - - identity->SetIdentityL( watchers->MdcaPoint( j ) ); - wInfo->SetWatcherIdL( identity ); - CleanupStack::Pop( );// >> identity - - wInfo->SetWatcherDisplayNameL( watchers->MdcaPoint( j ) ); - wInfo->SetWatcherTypeL( MPresenceWatcherInfo::EPresenceSubscriber ); - - actives->AddObjectL( wInfo ); - CleanupStack::Pop( ); // >> wInfo - } - - MProtocolPresencePublishingDataHost& publishHost = - iConnObs.Host()->ProtocolPresenceDataHost().PublishingDataHost(); - - publishHost.HandlePresenceWatcherListL( actives ); - - CleanupStack::Pop(); // >> actives - CleanupStack::PopAndDestroy( watchers ); // >> watchers - - CleanupStack::PopAndDestroy( &elems ); // >> elems - DP_SDA("CPresencePluginPublisher::WinfoNotificationL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::WinfoTerminatedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::WinfoTerminatedL( TInt aReason ) - { - DP_SDA("CPresencePluginPublisher::WinfoTerminatedL - begin"); - - // call SetPresenceWatcherListDataSubscriptionStateL - iSubscribed = EFalse; - - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - MProtocolPresencePublishingDataHost& publishHost = - iConnObs.Host()->ProtocolPresenceDataHost().PublishingDataHost(); - MXIMPDataSubscriptionState *state = - myFactory.NewDataSubscriptionStateLC(); - - MXIMPStatus* status = myFactory.NewStatusLC(); - state->SetSubscriptionStateL( - MXIMPDataSubscriptionState::ESubscriptionInactive ); - - state->SetDataStateL( MXIMPDataSubscriptionState::EDataUnavailable ); - status->SetResultCode( aReason ); - publishHost.SetPresenceWatcherListDataSubscriptionStateL( state, status ); - CleanupStack::Pop( 2 ); // status, state - DP_SDA("CPresencePluginPublisher::WinfoTerminatedL - end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::NewETagL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::NewETagL( const TDesC8& aVal ) - { - DP_SDA("CPresencePluginPublisher::NewETagL"); - // Set ETag value - DP_SDA("CPresencePluginPublisher::NewETagL Set ETag"); - TBuf8 buf; - buf.Copy( aVal ); - iConnObs.SetETag( buf ); - buf.Zero(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::MakeCurrentWatcherListLC -// --------------------------------------------------------------------------- -// -CDesCArrayFlat* CPresencePluginPublisher::MakeCurrentWatcherListLC() - { - DP_SDA("CPresencePluginPublisher::MakeCurrentWatcherListLC - begin"); - // No one should be added more than once - const TInt KMyGran = 10; - CDesCArrayFlat* watchers = new (ELeave) CDesCArrayFlat( KMyGran ); - CleanupStack::PushL( watchers ); // << watchers - - // add user only once here. - TDblQueIter rIter( iWatcherList ); - rIter.SetToFirst(); - - while ( rIter ) - { - CPresencePluginWatcherInfo* w = rIter; - rIter++; - - TInt dummy = 0; - // Zero -> Found - if ( watchers->Find( w->SipId(), dummy )) - { - watchers->AppendL( w->SipId() ); - } - } - - DP_SDA("CPresencePluginPublisher::MakeCurrentWatcherListLC - end"); - return watchers; - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::CollectWatchers -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::CollectWatchersL( - RPointerArray& aElems ) - { - using namespace NPresencePlugin::NPresence; - HBufC* nodeContent = NULL; - - TInt count = aElems.Count(); - DP_SDA2("CPresencePluginPublisher::CollectWatchers elem count %d",count); - - for ( TInt i = 0; i < count; i++ ) - { - MSimpleElement* elem = aElems[i]; - TPtrC8 p8( elem->LocalName()); - - if (!( p8.CompareF( KPresenceWatcher8 ))) - { - DP_SDA("CPresencePluginPublisher::CollectWatchers watchers found"); - const TDesC8* pp8 = elem->AttrValue( KPresenceStatus8 ); - // Active wathers here - if ( pp8 && !pp8->CompareF( KPresenceActive8 )) - { - DP_SDA("CollectWatchers: ACTIVE found"); - // save id since there may be multiple subscriptions - // from a single watcher SIP identity. - const TDesC8* pId8 = elem->AttrValue( KPresenceId8 ); - - // Build collection of grant requests - // Find the child node containing the SIP entity - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent );// << nodeContent - - AddWatcherIfNotExistsL( - pId8 ? *pId8 : KNullDesC8, nodeContent->Des() ); - - CleanupStack::PopAndDestroy( nodeContent ); //>> nodeContent - } - // Terminated wathers here - else if ( pp8 && !pp8->CompareF( KPresenceTerminated8 )) - { - DP_SDA("CollectWatchers: Terminated"); - const TDesC8* pId8 = elem->AttrValue( KPresenceId8 ); - - // Remove terminated from iWatcherList - nodeContent = elem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent );// << nodeContent - - RemoveWatcherIfExists( - pId8 ? *pId8 : KNullDesC8, nodeContent->Des() ); - - CleanupStack::PopAndDestroy( nodeContent );// >> nodeContent - } - } - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::CreatePublisherL() -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::CreatePublisherL() - { - DP_SDA("CPresencePluginPublisher::CreatePublisherL"); - if( iPublisher ) - { - DP_SDA("CPresencePluginPublisher::CreatePublisherL create"); - iPublisher->Close(); - iPublisher = NULL; - iPublisher = TSimpleFactory::NewPublisherL( iConnection, *this ); - } - DP_SDA("CPresencePluginPublisher::CreatePublisherL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::StoreOwnStatusToCacheL -// --------------------------------------------------------------------------- -// -void CPresencePluginPublisher::StoreOwnStatusToCacheL() - { - DP_SDA("CPresencePluginPublisher::StoreOwnStatusToCacheL" ); - - using namespace NPresencePlugin::NPresence; - using namespace NPresencePlugin::NPresenceStates; - using namespace NPresenceInfo::NFieldType; - - DP_SDA(" CPresencePluginPublisher -> convert uri" ); - HBufC* entityUri = - CnvUtfConverter::ConvertToUnicodeFromUtf8L( - *iDocument->EntityURI() ); - CleanupStack::PushL( entityUri ); - - DP_SDA(" CPresencePluginPublisher -> strip prefix" ); - HBufC16* prefixStripped = iPresenceData->RemovePrefixLC( - *entityUri ); - - DP_SDA(" CPresencePluginPublisher -> fetch simple elements" ); - RPointerArray simpleElements; - CleanupClosePushL( simpleElements ); - DP_SDA(" CPresencePluginPublisher -> do fetch simple elements" ); - TInt error = iDocument->SimpleElementsL( simpleElements ); - DP_SDA2(" CPresencePluginPublisher -> fetch error: %d", error ); - User::LeaveIfError( error ); - TBool handled = EFalse; - DP_SDA2(" CPresencePluginPublisher -> element count: %d", - simpleElements.Count() ); - - MSimpleElement* basicSimpleElem(NULL); - MSimpleElement* noteSimpleElem(NULL); - - TBuf activitiesContentBuf; - TBool activitiesHandled( EFalse ); - - for( TInt index = 0 ; index < simpleElements.Count() ; index++ ) - { - DP_SDA(" CPresencePluginPublisher -> check for person element" ); - // Check for person element - if (!( simpleElements[index]->LocalName().CompareF( KPresencePerson8 )) || - !( simpleElements[index]->LocalName().CompareF( KPresenceTuple8 )) ) - { - DP_SDA(" CPresencePluginPublisher -> person/tuple element found" ); - RPointerArray personSubElems; - CleanupClosePushL( personSubElems ); - simpleElements[index]->SimpleElementsL( personSubElems ); - DP_SDA2(" CPresencePluginPublisher -> person/tuple sub elemen count: %d", - personSubElems.Count() ); - - for ( TInt j = 0; j < personSubElems.Count(); j++ ) - { - DP_SDA(" CPresencePluginPublisher -> check for status/activities element"); - if ( !personSubElems[j]->LocalName().CompareF( KPresenceStatus8 ) || - !personSubElems[j]->LocalName().CompareF( KPresenceActivities8 )) - { - DP_SDA(" CPresencePluginPublisher -> status/activities element found"); - //Get childs - RPointerArray basicElems; - CleanupClosePushL( basicElems ); - - personSubElems[j]->SimpleElementsL( basicElems ); - DP_SDA2(" CPresencePluginPublisher -> child elem count: %d", - basicElems.Count() ); - for ( TInt k = 0; k < basicElems.Count(); k++ ) - { - DP_SDA(" CPresencePluginPublisher -> check child elems"); - if ( !basicElems[k]->LocalName().CompareF( - KPresenceBasic8 )) - { - DP_SDA(" -> basic element found"); - basicSimpleElem = basicElems[k]; - } - else if ( basicSimpleElem && - !basicElems[k]->LocalName().CompareF( KPresenceActivities8 ) ) - { - DP_SDA(" -> activities found from basic elem"); - RPointerArray activitiesElems; - CleanupClosePushL( activitiesElems ); - - DP_SDA(" -> get activities"); - basicElems[k]->SimpleElementsL( activitiesElems ); - DP_SDA2(" -> activities count: %d", - activitiesElems.Count() ); - if ( activitiesElems.Count() ) - { - DP_SDA(" -> get activities, multiple, use last"); - TInt lastActiviesIndex = - ( activitiesElems.Count() - 1 ); - activitiesContentBuf.Copy( - activitiesElems[lastActiviesIndex]->LocalName() ); - activitiesHandled = ETrue; - DP_SDA(" -> activity elem ok"); - } - CleanupStack::PopAndDestroy( &activitiesElems ); - } - else if ( basicSimpleElem && - !personSubElems[j]->LocalName().CompareF( KPresenceActivities8 ) ) - { - DP_SDA(" -> activities found from person elem"); - RPointerArray activitiesElems; - CleanupClosePushL( activitiesElems ); - - DP_SDA(" -> get activities"); - personSubElems[j]->SimpleElementsL( activitiesElems ); - DP_SDA2(" -> activities count: %d", - activitiesElems.Count() ); - if ( activitiesElems.Count() ) - { - DP_SDA(" -> get activities, multiple, use last"); - TInt lastActiviesIndex = - ( activitiesElems.Count() - 1 ); - activitiesContentBuf.Copy( - activitiesElems[lastActiviesIndex]->LocalName() ); - activitiesHandled = ETrue; - DP_SDA2(" -> activities len: %d", - activitiesContentBuf.Length() ); - DP_SDA(" -> activity elem ok"); - } - CleanupStack::PopAndDestroy( &activitiesElems ); - } - } - CleanupStack::PopAndDestroy( &basicElems ); - } - } - CleanupStack::PopAndDestroy( &personSubElems ); - } - else if ( !simpleElements[index]->LocalName().CompareF( KPresenceNote8 )) - { - DP_SDA(" CPresencePluginPublisher -> note element found" ); - noteSimpleElem = simpleElements[index]; - } - } - DP_SDA(" CPresencePluginPublisher -> elements handled"); - __ASSERT_ALWAYS( basicSimpleElem, User::Leave( KErrCorrupt ) ); - - if ( !activitiesHandled ) - { - DP_SDA(" -> activities not handled, set unknown"); - activitiesContentBuf.Copy( KPresenceUnknow ); - } - - HBufC* nodeContent = basicSimpleElem->ContentUnicodeL(); - CleanupStack::PushL( nodeContent ); - - HBufC* noteContent = NULL; - if ( noteSimpleElem ) - { - noteContent = noteSimpleElem->ContentUnicodeL(); - CleanupStack::PushL( noteContent ); - } - else - { - noteContent = KNullDesC().AllocLC(); - } - - MPresenceBuddyInfo2::TAvailabilityValues cacheAvailability = - MPresenceBuddyInfo2::ENotAvailable; - NPresenceInfo::TAvailabilityValues ximpAvailability = - NPresenceInfo::ENotAvailable; - - HBufC* extendedCacheAvailability = HBufC::NewLC( KBufSize255 ); - TPtr extendedCacheAvailabilityPtr( extendedCacheAvailability->Des() ); - if ( nodeContent ) - { - handled = ResolveOwnCacheValues( *nodeContent, - activitiesContentBuf, cacheAvailability, - extendedCacheAvailabilityPtr, ximpAvailability ); - } - - __ASSERT_ALWAYS( handled, User::Leave( KErrCorrupt )); - - DP_SDA(" CPresencePluginPublisher -> write to cache" ); - - DP_SDA2(" CPresencePluginPublisher -> availability: %d", - cacheAvailability ); - DP_SDA2(" CPresencePluginPublisher -> ext availability len: %d", - extendedCacheAvailabilityPtr.Length() ); - - iPresenceData->WriteStatusToCacheL( - *prefixStripped, cacheAvailability, - extendedCacheAvailabilityPtr, *noteContent ); - - // Store publish variables for republish - iPresenceData->StorePresenceOwnPresenceL( - iConnObs.ServiceId(), ximpAvailability, *noteContent ); - - CleanupStack::PopAndDestroy( extendedCacheAvailability ); - CleanupStack::PopAndDestroy( noteContent ); - CleanupStack::PopAndDestroy( nodeContent ); - - DP_SDA(" CPresencePluginPublisher -> attributes handled" ); - CleanupStack::PopAndDestroy( &simpleElements ); - - DP_SDA(" CPresencePluginPublisher -> write to cache ok, cleanup" ); - - // prefixStripped, entityUri - CleanupStack::PopAndDestroy( 2 ); - DP_SDA("CPresencePluginPublisher::StoreOwnStatusToCacheL out" ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginPublisher::ResolveOwnCacheValues -// --------------------------------------------------------------------------- -// -TBool CPresencePluginPublisher::ResolveOwnCacheValues( - const TDesC& aUnicodeContent, - const TDesC& aActivities, - MPresenceBuddyInfo2::TAvailabilityValues& aCacheAvailability, - TPtr& aExtendedCacheAvailability, - NPresenceInfo::TAvailabilityValues& aXimpApiAvailability ) - { - DP_SDA("CPresencePluginPublisher::ResolveOwnCacheValuesL" ); - using namespace NPresencePlugin::NPresence; - using namespace NPresencePlugin::NPresenceStates; - using namespace NPresenceInfo::NFieldType; - - TBool handled = EFalse; - if ( !aUnicodeContent.CompareF( KPresenceOpen ) && - !aActivities.CompareF ( KPresenceBusy ) ) - { - DP_SDA(" CPresencePluginPublisher -> busy"); - aCacheAvailability = MPresenceBuddyInfo2::EBusy; - aExtendedCacheAvailability.Copy( KDndState() ); - aXimpApiAvailability = NPresenceInfo::EBusy; - handled = ETrue; - } - // On-The-Phone case - else if ( !aUnicodeContent.CompareF( KPresenceOpen ) && - !aActivities.CompareF ( KPresenceOnThePhone ) ) - { - DP_SDA(" CPresencePluginPublisher -> on-the-phone"); - aCacheAvailability = MPresenceBuddyInfo2::EBusy; - aExtendedCacheAvailability.Copy( KOnPhoneState() ); - aXimpApiAvailability = NPresenceInfo::EOnPhone; - handled = ETrue; - } - //Away case - else if ( !aUnicodeContent.CompareF( KPresenceOpen ) && - !aActivities.CompareF ( KPresenceAway ) ) - { - DP_SDA(" CPresencePluginPublisher -> away"); - aCacheAvailability = MPresenceBuddyInfo2::EBusy; - aExtendedCacheAvailability.Copy( KAwayState() ); - aXimpApiAvailability = NPresenceInfo::EAway; - handled = ETrue; - } - //Dnd case - else if ( !aUnicodeContent.CompareF( KPresenceOpen ) && - !aActivities.CompareF ( KPresenceDoNotDisturb ) ) - { - DP_SDA(" CPresencePluginPublisher -> dnd"); - aCacheAvailability = MPresenceBuddyInfo2::EBusy; - aExtendedCacheAvailability.Copy( KDndState() ); - aXimpApiAvailability = NPresenceInfo::EDoNotDisturb; - handled = ETrue; - } - // Unknown open - else if ( !aUnicodeContent.CompareF( KPresenceOpen ) && - !aActivities.CompareF ( KPresenceUnknow ) ) - { - DP_SDA(" CPresencePluginPublisher -> open"); - aCacheAvailability = MPresenceBuddyInfo2::EAvailable; - aExtendedCacheAvailability.Copy( KDefaultAvailableStatus() ); - aXimpApiAvailability = NPresenceInfo::EAvailable; - handled = ETrue; - } - // available open - else if ( !aUnicodeContent.CompareF( KPresenceOpen ) && - !aActivities.CompareF ( KPresenceAvailable ) ) - { - DP_SDA(" CPresencePluginPublisher -> open"); - aCacheAvailability = MPresenceBuddyInfo2::EAvailable; - aExtendedCacheAvailability.Copy( KDefaultAvailableStatus() ); - aXimpApiAvailability = NPresenceInfo::EAvailable; - handled = ETrue; - } - // available open - else if ( !aUnicodeContent.CompareF( KPresenceOpen ) && - !aActivities.CompareF ( KPresenceOpen ) ) - { - DP_SDA(" CPresencePluginPublisher -> open/open"); - aCacheAvailability = MPresenceBuddyInfo2::EAvailable; - aExtendedCacheAvailability.Copy( KDefaultAvailableStatus() ); - aXimpApiAvailability = NPresenceInfo::EAvailable; - handled = ETrue; - } - //Unknown closed - else if ( !aUnicodeContent.CompareF( KPresenceClosed ) && - !aActivities.CompareF ( KPresenceUnknow ) ) - { - DP_SDA(" CPresencePluginPublisher -> closed"); - aCacheAvailability = MPresenceBuddyInfo2::ENotAvailable; - aExtendedCacheAvailability.Copy( KInvisibleState() ); - aXimpApiAvailability = NPresenceInfo::ENotAvailable; - handled = ETrue; - } - //All other states are closed - else - { - DP_SDA(" CPresencePluginPublisher -> else closed"); - aCacheAvailability = MPresenceBuddyInfo2::ENotAvailable; - aExtendedCacheAvailability.Copy( KInvisibleState() ); - aXimpApiAvailability = NPresenceInfo::ENotAvailable; - handled = ETrue; - } - DP_SDA2("CPresencePluginPublisher::ResolveOwnCacheValuesL out, ret: %d", - handled ); - return handled; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginsession.cpp --- a/simpledatamodeladapter/src/presencepluginsession.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,498 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include //For MXIMPServiceInfo -#include //Handle command -#include //Connection callback methods -#include //create instances to abstract class -#include //Part of Registration API from SIMPLE engine -#include -#include //for TPresSettingsSet -#include -#include -#include -#include -#include - -#include "presencepluginxdmutils.h" -#include "presencepluginsession.h" -#include "mpresencepluginconnectionobs.h" -#include "presencepluginauthorization.h" -#include "presenceplugindata.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginSession::CPresencePluginSession() -// --------------------------------------------------------------------------- -// -CPresencePluginSession::CPresencePluginSession( - MPresencePluginConnectionObs& aObs ) - : CActive( CActive::EPriorityStandard ),iObs(aObs), - iType( MPresencePluginConnectionObs::ENoReq ),iSipConnected( EFalse ), - iXdmConnected( EFalse ), iXdmLocalMode( EFalse ), iOperation( ENoOperation ), - iServiceId( KErrNotFound ) - { - CActiveScheduler::Add(this); - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginSession::ConstructL( const MXIMPServiceInfo& aService ) - { - DP_SDA2("CPresencePluginSession::ConstructL: service id: %d", - aService.IapId() ); - - CSPSettings* spSettings = CSPSettings::NewL(); - CleanupStack::PushL( spSettings ); - - CSPProperty* property = CSPProperty::NewLC(); - spSettings->FindPropertyL( aService.IapId(), - ESubPropertyPresenceSettingsId, - *property ); - if ( property ) - { - property->GetValue( iPresSettingId ); - } - - CleanupStack::PopAndDestroy( property ); - CleanupStack::PopAndDestroy( spSettings ); - - DP_SDA2("PluginSession::ConstructL iPresSettingId %d",iPresSettingId ); - __ASSERT_ALWAYS( iPresSettingId > 0, User::Leave( KErrArgument ) ); - iServiceId = aService.IapId(); - - //Create connection - iConnection = TSimpleFactory::NewConnectionL( *this, aService.IapId() ); - - //Check here is xdm settings ok - CheckXDMSettingsL( aService.IapId() ); - - DP_SDA("CPresencePluginSession::ConstructL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginSession* CPresencePluginSession::NewL( - const MXIMPServiceInfo& aService, - MPresencePluginConnectionObs& aObs ) - { - DP_SDA("CPresencePluginSession::NewL"); - CPresencePluginSession* self = - new( ELeave ) CPresencePluginSession( aObs ); - CleanupStack::PushL( self ); - self->ConstructL( aService ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::~CPresencePluginSession() -// --------------------------------------------------------------------------- -// -CPresencePluginSession::~CPresencePluginSession() - { - DP_SDA("CPresencePluginSession::~CPresencePluginSession"); - - delete iUserId8; - delete iDomain; - if ( iConnection ) - { - iConnection->Close(); - } - - DP_SDA("~CPresencePluginSession iXdmUtils"); - delete iXdmUtils; - iXdmUtils = NULL; - DP_SDA("CPresencePluginSession::~CPresencePluginSession end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::SimpleConnection() -// --------------------------------------------------------------------------- -// -TInt32 CPresencePluginSession::GetPresenceSetId( ) const - { - return iPresSettingId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::SimpleConnection() -// --------------------------------------------------------------------------- -// -MSimpleConnection* CPresencePluginSession::SimpleConnection( ) - { - return iConnection; - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::XdmSettingsId() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginSession::XdmSettingsId( ) - { - DP_SDA("CPresencePluginSession::XdmSettingsId"); - return iXdmSetting; - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::CurrentDomain() -// --------------------------------------------------------------------------- -// -TPtrC16 CPresencePluginSession::CurrentDomain( ) - { - return iDomain ? iDomain->Des() : TPtrC16(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::IsXdmLocalmode() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginSession::IsXdmLocalmode() - { - DP_SDA("CPresencePluginSession::IsXdmLocalmode"); - return iXdmLocalMode; - } -// --------------------------------------------------------------------------- -// CPresencePluginSession::OpenSessionL() -// --------------------------------------------------------------------------- -// -void CPresencePluginSession::OpenSessionL() - { - DP_SDA("CPresencePluginSession::OpenSessionL"); - //Check connection status - MSimpleConnection::TSimpleState connectionStatus = - iConnection->ConnectionStatus(); - DP_SDA2("OpenSessionL Connection Status %d", connectionStatus); - - if( connectionStatus == MSimpleConnection::EInactive ) - { - DP_SDA("CPresencePluginSession::OpenSessionL Not connected yet"); - iSipConnected = EFalse; - // SIP register using by give presence setting id - iOpId = iConnection->LoginL( iPresSettingId ); - iType = MPresencePluginConnectionObs::EOpenSess; - } - else if ( connectionStatus == MSimpleConnection::EActive ) - { - DP_SDA(":OpenSessionL already connected complete"); - iSipConnected = ETrue; - iType = MPresencePluginConnectionObs::EOpenSess; - RequestCompleteL( iOpId, KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::ConnectionStatusL() -// --------------------------------------------------------------------------- -// -void CPresencePluginSession::ConnectionStatusL( - MSimpleConnection::TSimpleState aState ) - { - DP_SDA2("CPresencePluginSession::ConnectionStatusL aState %d", aState ); - - if ( (aState == MSimpleConnection::EInactive ) - && iSipConnected ) - { - DP_SDA("CPresencePluginSession::ConnectionStatusL EInactive"); - - DP_SDA("CPresencePluginSession::ConnectionStatusL clear pres cache"); - iObs.InternalPresenceAuthorization().PluginData().RemoveCacheL(); - DP_SDA("CPresencePluginSession::ConnectionStatusL clear cache ok"); - - // cancel all XDM request - iObs.XdmUtilsL()->Cancel(); - //Set connection Terminated, terminate will be remove all client binds - iObs.TerminateConnectionL(); - iSipConnected = EFalse; - iXdmConnected = EFalse; - } - else if( ( aState == MSimpleConnection::EUnavailable && iSipConnected ) ) - { - //Its seems that SIP connection is unavaible - DP_SDA("CPresencePluginSession::ConnectionStatusL EUnavailable"); - } - - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::CloseConnection() -// --------------------------------------------------------------------------- -// -void CPresencePluginSession::CloseConnection() - { - DP_SDA("CPresencePluginSession::CloseConnection"); - if( iConnection ) - { - DP_SDA("CPresencePluginSession::CloseConnection close called"); - iConnection->Close(); - iConnection = NULL; - } - DP_SDA("CPresencePluginSession::CloseConnection end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::ConnectionStatus() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginSession::ConnectionStatus() - { - DP_SDA("CPresencePluginSession::ConnectionStatus"); - TBool connection = EFalse; - if( iXdmConnected && iSipConnected ) - { - connection = ETrue; - } - return connection; - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::RequestCompleteL() -// --------------------------------------------------------------------------- -// -void CPresencePluginSession::RequestCompleteL( TInt /*aOpId*/, TInt aStatus ) - { - DP_SDA("CPresencePluginSession::RequestCompleteL"); - MPresencePluginConnectionObs::TReqType current = iType; - - if ( !aStatus ) - { - DP_SDA("CPresencePluginSession::RequestCompleteL SIP session is open"); - iSipConnected = ETrue; - if( iXdmConnected ) - { - DP_SDA("CPresencePluginSession::RequestCompleteL xdm IS OK"); - iType = MPresencePluginConnectionObs::ENoReq; - iObs.CompleteReq( current, aStatus ); - } - else - { - DP_SDA("CPresencePluginSession::RequestCompleteL Initialize XDM"); - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrNotReady ) ); - //Lets test XDM connection before complete - iXdmUtils = CPresencePluginXdmUtils::NewL( - iObs, iXdmSetting, iXdmLocalMode ); - - iOperation = EInitializeXdm; - iXdmUtils->InitializeXdmL( iStatus ); - SetActive(); - } - - } - DP_SDA("CPresencePluginSession::RequestCompleteL END"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::CurrentSipPresentity() -// --------------------------------------------------------------------------- -// -TPtrC8 CPresencePluginSession::CurrentSipPresentity() - { - DP_SDA("CPresencePluginSession::CurrentSipPresentity"); - // Get from Simple engine - delete iUserId8; - iUserId8 = NULL; - TRAPD(err, iUserId8 = iConnection->CurrentSIPIdentityL().AllocL() ) - if ( err == KErrNone ) - { - return iUserId8 ? iUserId8->Des() : TPtrC8(); - } - else - { - return iUserId8 ? KNullDesC8() : TPtrC8(); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::CheckXDMSettings() -// --------------------------------------------------------------------------- -// -void CPresencePluginSession::CheckXDMSettingsL( TUint aServiceId ) - { - //Check if xdm settings not valid or there is text http://localhost - //in settings. If not valid or text found client will be save resourcelist - //to in phonememory - - TPresSettingsSet mySet; - User::LeaveIfError( - PresSettingsApi::SettingsSetL( iPresSettingId, mySet )); - iXdmSetting = mySet.iXDMSetting; - if( iDomain ) - { - delete iDomain; - iDomain = NULL; - } - iDomain = mySet.iDomainSyntax.AllocL(); - - DP_SDA(" -> CheckXDMSettings - store domain to service table"); - // Service table - CSPSettings* spsettings = CSPSettings::NewLC(); - CSPProperty* property = CSPProperty::NewLC(); - - DP_SDA(" -> CheckXDMSettings - spsettings and property created"); - User::LeaveIfError( property->SetName( ESubPropertyPresenceAddrScheme ) ); - DP_SDA(" -> CheckXDMSettings - property name set"); - - TInt atPosInDomain = iDomain->Locate( '@' ); - DP_SDA2(" -> CheckXDMSettings - @ position in domain: %d", atPosInDomain ); - if ( KErrNotFound == atPosInDomain ) - { - DP_SDA(" -> CheckXDMSettings - no @ in domain, set"); - property->SetValue( iDomain->Des() ); - } - else - { - DP_SDA(" -> CheckXDMSettings - @ found in domain, remove"); - HBufC* formattedDomain = HBufC::NewLC( iDomain->Length() ); - TPtr formattedDomainPtr( formattedDomain->Des() ); - formattedDomainPtr.Copy( iDomain->Mid( ( atPosInDomain + 1 ) ) ); - property->SetValue( formattedDomainPtr ); - CleanupStack::PopAndDestroy( formattedDomain ); - } - DP_SDA(" -> CheckXDMSettings - property value set"); - User::LeaveIfError( - spsettings->AddOrUpdatePropertyL( aServiceId, *property ) ); - DP_SDA(" -> CheckXDMSettings - property added or updated"); - - CleanupStack::PopAndDestroy( property ); - CleanupStack::PopAndDestroy( spsettings ); - -#ifdef _DEBUG - DP_SDA2("XdmSettingsId xdmSetting id %d",iXdmSetting ); - DP_SDA2("CheckXDMSettings::XdmSettingsId domain %S",iDomain ); -#endif - - //Continue check, add localhost to buf2 - HBufC* buf2 = KLocalhost().AllocLC(); - - //Get Uri from XDM settings - HBufC* xcaproot = NULL; - - TRAPD( error, xcaproot = - TXdmSettingsApi::PropertyL( iXdmSetting, EXdmPropUri ) ); - DP_SDA2("CheckXDMSettings Set localmode, err %d", error); - - if( KErrNotFound != error && xcaproot ) - { - //Compare buf2 to xcaproot - if ( !xcaproot->Compare( buf2->Des() ) ) - { - DP_SDA("CheckXDMSettings Set localmode"); - iXdmLocalMode = ETrue; - } - else - { - DP_SDA("CheckXDMSettings Set Normal Mode"); - iXdmLocalMode = EFalse; - } - - DP_SDA("CheckXDMSettings PopAndDestroy buf2"); - } - else - { - //It seems there is no valid XCAP settings, so we try localmode - //Shuld we create automaticaly XCAP localhost settings? - iXdmLocalMode = ETrue; - } - - DP_SDA("CheckXDMSettings PopAndDestroy xcaproot"); - CleanupStack::PopAndDestroy( buf2 ); - delete xcaproot; - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::XdmUtilsL() -// --------------------------------------------------------------------------- -// -CPresencePluginXdmUtils* CPresencePluginSession::XdmUtilsL() - { - if ( !iXdmUtils ) - { - DP_SDA("CPresencePluginSession::XdmUtilsL !iXdmUtils"); - iXdmUtils = CPresencePluginXdmUtils::NewL( - iObs, iXdmSetting, iXdmLocalMode ); - } - - return iXdmUtils; - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::ServiceId() -// --------------------------------------------------------------------------- -// -TInt& CPresencePluginSession::ServiceId() - { - return iServiceId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::DoCancel() -// --------------------------------------------------------------------------- -// -void CPresencePluginSession::DoCancel( ) - { - DP_SDA("CPresencePluginSession::DoCancel CANCEL"); - iXdmUtils->Cancel(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::RunL() -// --------------------------------------------------------------------------- -// -void CPresencePluginSession::RunL( ) - { - DP_SDA("CPresencePluginSession::RunL"); - TInt status = iStatus.Int(); - DP_SDA2("CPresencePluginSession::RunL status %d", status ); - - if( ( iOperation == EInitializeXdm ) && !status ) - { - DP_SDA("CPresencePluginSession::RequestCompleteL connection ready"); - iXdmConnected = ETrue; - MPresencePluginConnectionObs::TReqType current = iType; - iType = MPresencePluginConnectionObs::ENoReq; - iObs.CompleteReq( current, status ); - } - else - { - DP_SDA("Connection FAIL terminated"); - iXdmConnected = EFalse; - iSipConnected = EFalse; - iType = MPresencePluginConnectionObs::ECloseSess; - iObs.CompleteReq( iType, status ); - } - - } - -// --------------------------------------------------------------------------- -// CPresencePluginSession::RunError -// --------------------------------------------------------------------------- -// -TInt CPresencePluginSession::RunError( TInt /*aError*/ ) - { - DP_SDA("CPresencePluginSession::RunError"); - return KErrNone; - } - - // End of file - diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginutility.cpp --- a/simpledatamodeladapter/src/presencepluginutility.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include "presencepluginutility.h" -#include "presencelogger.h" - -// ----------------------------------------------------------------------------- -// TPresencePluginUtility::ResetAndDestroyIdentities -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void TPresencePluginUtility::ResetAndDestroyIdentities( TAny* anArray ) - { - DP_SDA("TPresencePluginUtility::ResetAndDestroyIdentities"); - - RPointerArray* array = - reinterpret_cast*>( anArray ); - - if ( array ) - { - DP_SDA(" -> reset and destroy array items"); - array->ResetAndDestroy(); - DP_SDA(" -> close array"); - array->Close(); - } - DP_SDA("TPresencePluginUtility::ResetAndDestroyIdentities out"); - } - -// ========================== OTHER EXPORTED FUNCTIONS ========================= - -// End of File diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginvirtualgroup.cpp --- a/simpledatamodeladapter/src/presencepluginvirtualgroup.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,222 +0,0 @@ -/* -* Copyright (c) 2006-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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "presencepluginvirtualgroup.h" -#include "mpresencepluginconnectionobs.h" -#include "presenceplugincommon.h" -#include "presenceplugindata.h" - -const TInt KArrayGranularity = 5; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::~CPresencePluginVirtualGroup -// --------------------------------------------------------------------------- -CPresencePluginVirtualGroup::CPresencePluginVirtualGroup( - MPresencePluginConnectionObs& aObs, - CPresencePluginData* aPresenceData ) - :iConnObs( aObs ), - iPresenceData( aPresenceData ), - iVirtualMember( NULL ) - { - DP_SDA("CPresencePluginVirtualGroup::CPresencePluginVirtualGroup"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::~CPresencePluginVirtualGroup -// --------------------------------------------------------------------------- -CPresencePluginVirtualGroup::~CPresencePluginVirtualGroup() - { - DP_SDA("CPresencePluginVirtualGroup::~CPresencePluginVirtualGroup1"); - delete iVirtualMember; - delete iListName; - DP_SDA("CPresencePluginVirtualGroup::~CPresencePluginVirtualGroup2"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::NewL -// --------------------------------------------------------------------------- -// -CPresencePluginVirtualGroup* CPresencePluginVirtualGroup::NewL( - MPresencePluginConnectionObs& aObs, - const TDesC16& aListName, - CPresencePluginData* aPresenceData ) - { - CPresencePluginVirtualGroup* self = - new (ELeave) CPresencePluginVirtualGroup( aObs, aPresenceData ); - CleanupStack::PushL( self ); - self->ConstructL( aListName ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::ConstructL -// --------------------------------------------------------------------------- -// -void CPresencePluginVirtualGroup::ConstructL( const TDesC16& aListName ) - { - DP_SDA("CPresencePluginVirtualGroup::ConstructL begin"); - iVirtualMember = new (ELeave) CDesCArrayFlat( KArrayGranularity ); - iListName = aListName.AllocL(); - DP_SDA("CPresencePluginVirtualGroup::ConstructL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::GetVirtualEntities -// --------------------------------------------------------------------------- -void CPresencePluginVirtualGroup::GetVirtualEntitiesL( - MXIMPObjectCollection& aColl ) - { - DP_SDA("CPresencePluginVirtualGroup::GetVirtualEntities begin"); - TInt count = iVirtualMember->Count(); - if ( count ) - { - DP_SDA("CPresencePluginVirtualGroup MXIMPObjectFactory& myFactory"); - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - for ( TInt i=0; i < count; i++ ) - { - MXIMPIdentity* member = myFactory.NewIdentityLC(); - HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( (*iVirtualMember)[i] ); - member->SetIdentityL( *withoutPrefix ); - CleanupStack::PopAndDestroy( withoutPrefix ); - // create here MXIMPPresentityGroupMemberInfo - MPresentityGroupMemberInfo* info = - iConnObs.PresenceObjectFactoryOwn(). - NewPresentityGroupMemberInfoLC(); - - DP_SDA("CPresencePluginVirtualGroup:: info->SetGroupMemberIdL"); - info->SetGroupMemberIdL( member ); //ownership taken - info->SetGroupMemberDisplayNameL( member->Identity() ); - aColl.AddObjectL( info ); - CleanupStack::Pop( 2 ); // >> info, member - DP_SDA2("CPresencePluginVirtualGroup:: done= handle next = %d", i); - } - DP_SDA("CPresencePluginVirtualGroup::GetOnlineEntities all done"); - } - DP_SDA("CPresencePluginVirtualGroup::GetOnlineEntities end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::AddEntityL -// --------------------------------------------------------------------------- -void CPresencePluginVirtualGroup::AddEntityL( const TDesC& aIdentityUri ) - { - DP_SDA("CPresencePluginVirtualGroup::AddOnlineEntity - begin"); - HBufC* prefixStripped = aIdentityUri.AllocLC(); - if ( KErrNotFound == IdentityExists( aIdentityUri ) ) - { - DP_SDA("CPresencePluginVirtualGroup::ivirtuaBuddys->AddObjectL"); - iVirtualMember->AppendL( *prefixStripped ); - } - CleanupStack::PopAndDestroy( prefixStripped ); - DP_SDA("CPresencePluginVirtualGroup::AddOnlineEntity - end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::RemoveOnlineEntity -// --------------------------------------------------------------------------- -void CPresencePluginVirtualGroup::RemoveEntityL( - const TDesC& aIdentityUri ) - { - DP_SDA("CPresencePluginVirtualGroup::RemoveOnlineEntity - begin"); - if ( iVirtualMember->Count() ) - { - DP_SDA("CPresencePluginVirtualGroup::RemoveOnlineEntity - find"); - HBufC* prefixStripped = aIdentityUri.AllocLC(); - TInt result = IdentityExists( *prefixStripped ); - if ( KErrNotFound != result && result < iVirtualMember->Count() ) - { - DP_SDA("CPresencePluginVirtualGroup:: - Remove"); - iVirtualMember->Delete( result ); - } - CleanupStack::PopAndDestroy( prefixStripped ); - } - DP_SDA("CPresencePluginVirtualGroup::RemoveOnlineEntity - end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::IdentityExists -// --------------------------------------------------------------------------- -TInt CPresencePluginVirtualGroup::IdentityExists( const TDesC& aIdentityUri ) - { - DP_SDA("CPresencePluginVirtualGroup::IdentityExists - begin"); - - TInt result( KErrNotFound ); - - for ( TInt i=0; iCount(); i++ ) - { - if ( (*iVirtualMember)[i].CompareF( aIdentityUri ) == 0 ) - { - DP_SDA2("IdentityExists - found at index = %d", i); - result = i; - break; - } - } - - DP_SDA("CPresencePluginVirtualGroup::IdentityExists - end"); - return result; - } - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::GetVirtualIdentityArray -// --------------------------------------------------------------------------- -CDesCArray* CPresencePluginVirtualGroup::GetVirtualIdentityArray( ) - { - DP_SDA("CPresencePluginVirtualGroup::GetVirtualIdentityArray - begin"); - return iVirtualMember; - } - -// --------------------------------------------------------------------------- -// CPresencePluginVirtualGroup::HandlePresentityGroupMemberAddedL -// --------------------------------------------------------------------------- -void CPresencePluginVirtualGroup::HandlePresentityGroupMemberAddedL( - const TDesC& aIdentityUri ) - { - DP_SDA("CPresencePluginVirtualGroup::HandlePresentityGroupMemberAddedL"); - - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - MProtocolPresentityGroupsDataHost& dataHost = - iConnObs.ProtocolPresenceHost().GroupsDataHost(); - MXIMPIdentity* groupid = myFactory.NewIdentityLC(); - groupid->SetIdentityL( iListName->Des() ); - MXIMPIdentity* member = myFactory.NewIdentityLC(); - member->SetIdentityL( aIdentityUri ); - MPresentityGroupMemberInfo* info = - iConnObs.PresenceObjectFactoryOwn().NewPresentityGroupMemberInfoLC(); - info->SetGroupMemberIdL( member ); //ownership taken - info->SetGroupMemberDisplayNameL( member->Identity() ); - dataHost.HandlePresentityGroupMemberAddedL( - groupid, info );// ownership taken - DP_SDA("CPresencePluginVirtualGroup:: Notify Pop( 3 )"); - CleanupStack::Pop( 3 ); // groupid, member, info - - DP_SDA("CPresencePluginVirtualGroup::HandlePresentityGroupMemberAddedL End"); - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginwatcher.cpp --- a/simpledatamodeladapter/src/presencepluginwatcher.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,788 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "presencepluginvirtualgroup.h" -#include "mpresencepluginconnectionobs.h" -#include "presenceplugincommon.h" -#include "presencepluginwatcher.h" -#include "presencepluginentitywatcher.h" -#include "presencepluginxdmutils.h" -#include "presenceplugindata.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::CPresencePluginWatcher() -// --------------------------------------------------------------------------- -// -CPresencePluginWatcher::CPresencePluginWatcher( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, CPresencePluginData* aPresenceData ) - : CActive( CActive::EPriorityStandard ), - iConnObs(aObs), iConnection(aConn), iPresenceData( aPresenceData ), - iXdmState( EPluginIdle ),iCompleted( ETrue ), - iOperation( EPluginUndef ) - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginWatcher* CPresencePluginWatcher::NewL( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn, - CPresencePluginData* aPresenceData ) - { - DP_SDA("CPresencePluginWatcher::NewL"); - CPresencePluginWatcher* self = - new( ELeave ) CPresencePluginWatcher( aObs, aConn, aPresenceData ); - CleanupStack::PushL( self ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::~CPresencePluginWatcher() -// --------------------------------------------------------------------------- -// -CPresencePluginWatcher::~CPresencePluginWatcher() - { - iWatchers.ResetAndDestroy(); - iWatchers.Close(); - iWatcherCandidates.ResetAndDestroy(); - delete iPresIdentity; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::DoSubscribePresentityPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::DoSubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginWatcher::DoSubscribePresentityPresenceL"); - DP_SDA2(" DoSubscribePresentityPresenceL - identity: %S", - &aPresentityId.Identity() ); - - iOperation = EPluginSubscribeSingle; - iXdmState = EPluginIdle; - - SetPresIdentityL( aPresentityId, ETrue ); - - //Saving reguestID - iXIMPId = aReqId; - iCompleted = EFalse; - - HBufC8* pres8 = NULL; - pres8 = - CnvUtfConverter::ConvertFromUnicodeToUtf8L( iPresIdentity->Des() ); - CleanupStack::PushL( pres8 ); // << pres8 - - CPresencePluginEntityWatcher* watcher = - MatchWatcherL( pres8->Des(), ETrue ); - watcher->StartSubscribeL( pres8->Des() ); - CleanupStack::PopAndDestroy( pres8 ); // >> pres8 - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::DoPerformSubscribePresentityPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::DoPerformSubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aStatus ) - { - DP_SDA( "CPresencePluginWatcher::DoPerformSubscribePresentityPresenceL "); - DP_SDA( " -> From list operation"); - - iOperation = EPluginSubscribeByAdding; - iXdmState = EPluginIdle; - - SetPresIdentityL( aPresentityId, ETrue ); - - iCompleted = EFalse; - - HBufC8* pres8 = NULL; - pres8 = - CnvUtfConverter::ConvertFromUnicodeToUtf8L( iPresIdentity->Des() ); - CleanupStack::PushL( pres8 ); // << pres8 - - // remove escapes - HBufC8* encodedUsername = EscapeUtils::EscapeEncodeL( *pres8, EscapeUtils::EEscapeNormal ); - CleanupStack::PopAndDestroy( pres8 ); - CleanupStack::PushL( encodedUsername ); - - CPresencePluginEntityWatcher* watcher = - MatchWatcherL( encodedUsername->Des(), ETrue ); - watcher->StartSubscribeL( encodedUsername->Des(), aStatus ); - CleanupStack::PopAndDestroy( encodedUsername ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::DoUpdatePresentityPresenceSubscriptionPifL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::DoUpdatePresentityPresenceSubscriptionPifL( - const MXIMPIdentity& /*aPresentityId*/, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { - // Notice: later - User::Leave( KXIMPErrServiceRequestTypeNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::DoUnsubscribePresentityPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::DoUnsubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginWatcher::DoUnsubscribePresentityPresenceL"); - SetPresIdentityL( aPresentityId, ETrue ); - iXIMPId = aReqId; - iCompleted = EFalse; - - HBufC8* pres8 = NULL; - pres8 = - CnvUtfConverter::ConvertFromUnicodeToUtf8L( iPresIdentity->Des() ); - CleanupStack::PushL( pres8 ); // << pres8 - - CPresencePluginEntityWatcher* watcher = - MatchWatcherL( pres8->Des(), EFalse ); - if ( !watcher ) - { - DP_SDA("DoUnsubscribePresentityPresenceL error"); - User::Leave( KErrNotFound ); // Notice: error code - } - else - { - DP_SDA("DoUnsubscribePresentityPresenceL stop subscripe"); - watcher->StopSubscribeL(); - } - CleanupStack::PopAndDestroy( pres8 ); // >> pres8 - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::DoPerformUnsubscribePresentityPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::DoPerformUnsubscribePresentityPresenceL( - const MXIMPIdentity& aPresentityId, - TRequestStatus& aStatus ) - { - DP_SDA("CPresencePluginWatcher::DoPerformUnsubscribePresentityPresenceL"); - - SetPresIdentityL( aPresentityId, ETrue ); - iCompleted = EFalse; - - iOperation = EPluginUnSubscribeByRemoving; - - HBufC8* pres8 = NULL; - pres8 = - CnvUtfConverter::ConvertFromUnicodeToUtf8L( iPresIdentity->Des() ); - CleanupStack::PushL( pres8 ); // << pres8 - - CPresencePluginEntityWatcher* watcher = - MatchWatcherL( pres8->Des(), EFalse ); - if ( !watcher ) - { - DP_SDA("DoUnsubscribePresentityPresenceL watcher not found"); - aStatus = KRequestPending; - TRequestStatus* temp = &aStatus; - User::RequestComplete( temp, KErrNotFound ); - } - else - { - DP_SDA("DoUnsubscribePresentityPresenceL stop subscribe"); - watcher->StopSubscribeL( aStatus ); - } - CleanupStack::PopAndDestroy( pres8 ); // >> pres8 - - DP_SDA("CPresencePluginWatcher::DoPerformUnsubscribePresentityPresenceL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::DoSubscribePresentityGroupMembersPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::DoSubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId aReqId ) - { - DP_SDA("DoSubscribePresentityGroupMembersPresenceL"); - //Subscribe all buddys from virtual group - - iOperation = EPluginSubscribeGroup; - iXdmState = EPluginIdle; - - SetPresIdentityL( aGroupId, EFalse ); - iXIMPId = aReqId; - iCompleted = EFalse; - - StartXdmOperationL(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher:: -// DoUpdatePresentityGroupMembersPresenceSubscriptionPifL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher:: - DoUpdatePresentityGroupMembersPresenceSubscriptionPifL( - const MXIMPIdentity& /*aGroupId*/, - const MPresenceInfoFilter& /*aPif*/, - TXIMPRequestId /*aReqId*/ ) - { - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::DoUnsubscribePresentityGroupMembersPresenceL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::DoUnsubscribePresentityGroupMembersPresenceL( - const MXIMPIdentity& aGroupId, - TXIMPRequestId aReqId ) - { - DP_SDA("DoUnsubscribePresentityGroupMembersPresenceL"); - - iOperation = EPluginUnsubscribeGroup; - iXdmState = EPluginIdle; - - SetPresIdentityL( aGroupId, EFalse ); - iXIMPId = aReqId; - iCompleted = EFalse; - - StartXdmOperationL(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::GetInterface() -// --------------------------------------------------------------------------- -// -TAny* CPresencePluginWatcher::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - DP_SDA("CPresencePluginWatcher::GetInterface (......) "); - if ( aInterfaceId == GetInterfaceId() ) - { - DP_SDA("GetInterface : aInterfaceId == GetInterfaceId()"); - // caller wants this interface - MProtocolPresenceWatching* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - DP_SDA("GetInterface: aOptions == MXIMPBase::EPanicIfUnknown"); - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::GetInterface() -// --------------------------------------------------------------------------- -// -const TAny* CPresencePluginWatcher::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - DP_SDA("CPresencePluginWatcher::GetInterface (......) const "); - if ( aInterfaceId == GetInterfaceId() ) - { - DP_SDA("GetInterface : aInterfaceId == GetInterfaceId()"); - // caller wants this interface - const MProtocolPresenceWatching* myIf = this; - return myIf; - } - if ( aOptions == MXIMPBase::EPanicIfUnknown ) - { - DP_SDA("GetInterface: aOptions == MXIMPBase::EPanicIfUnknown"); - User::Panic( KPluginName, KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::GetInterfaceId() -// --------------------------------------------------------------------------- -// -TInt32 CPresencePluginWatcher::GetInterfaceId() const - { - DP_SDA("CPresencePluginWatcher::GetInterfaceId() const"); - return MProtocolPresenceWatching::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::MatchWatcherL -// --------------------------------------------------------------------------- -// -CPresencePluginEntityWatcher* CPresencePluginWatcher::MatchWatcherL( - const TDesC8& aPresentityid, TBool aCreate ) - { - DP_SDA("CPresencePluginWatcher::MatchWatcherL"); - DP_SDA2("CPresencePluginWatcher::MatchWatcherL %d", aCreate ) - TInt count = iWatchers.Count(); - DP_SDA2( "MatchWatcherL watcher count %d", count ); - for ( TInt i = 0; i < count; i++ ) - { - CPresencePluginEntityWatcher* temp = ( iWatchers[i] ); - //Check if prentity found from watcher - if ( !temp->PresentityId().CompareF( aPresentityid )) - { - DP_SDA("CPresencePluginWatcher::MatchWatcherL return temp"); - return temp; - } - } - if ( !aCreate ) - { - DP_SDA("CPresencePluginWatcher::MatchWatcherL return NULL"); - return NULL; - } - else - { - // Run this if like create new wathcer - DP_SDA("CPresencePluginWatcher::MatchWatcherL Else"); - CPresencePluginEntityWatcher* watcher = - CPresencePluginEntityWatcher::NewL( - iConnObs, iConnection, *this, iPresenceData ); - CleanupStack::PushL( watcher ); - iWatcherCandidates.AppendL( watcher ); - CleanupStack::Pop(); - DP_SDA("CPresencePluginWatcher::MatchWatcherL end"); - return watcher; - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::DeleteWatcher -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::DeleteWatcher( - const TDesC8& aPresentityid ) - { - DP_SDA( "CPresencePluginWatcher::DeleteWatcher" ); - TInt count = iWatchers.Count(); - DP_SDA2( "CPresencePluginWatcher::DeleteWatcher count %d", count); - - for ( TInt i = 0; i < count; i++ ) - { - CPresencePluginEntityWatcher* temp = ( iWatchers[i] ); - if ( !temp->PresentityId().CompareF( aPresentityid ) ) - { - DP_SDA2( "CPresencePluginWatcher::DeleteWatcher %d", i ); - iWatchers.Remove( i ); - iWatchers.GranularCompress(); - delete temp; - temp = NULL; - break; // delete all watchers? - } - } - DP_SDA( "CPresencePluginWatcher::DeleteWatcher end" ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::SetPresIdentityL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::SetPresIdentityL( - const MXIMPIdentity& aPresentityId, - TBool aFormatUri ) - { - DP_SDA2("CPresencePluginWatcher::SetPresIdentityL: %S", - &aPresentityId.Identity() ); - - delete iPresIdentity; - iPresIdentity = NULL; - - if( aFormatUri ) - { - HBufC8* identityCopy = HBufC8::NewLC( KBufSize255 ); - TPtr8 identityCopyPtr( identityCopy->Des() ); - identityCopyPtr.Copy( aPresentityId.Identity() ); - DP_SDA2(" SetPresIdentityL, org identity: %S", identityCopy ); - - HBufC8* prefixUri = iPresenceData->CreatePresenceUri8LC( - identityCopyPtr ); - - HBufC* prefixUri16 = HBufC::NewLC( KBufSize255 ); - TPtr prefixUri16Ptr( prefixUri16->Des() ); - prefixUri16Ptr.Copy( *prefixUri ); - - DP_SDA2("CPresencePluginWatcher::SetPresIdentityL: with prefix: %S", - prefixUri16 ); - - iPresIdentity = prefixUri16; - CleanupStack::Pop( prefixUri16 ); - CleanupStack::PopAndDestroy( 2, identityCopy ); - } - else - { - DP_SDA("CPresencePluginWatcher::SetPresIdentityL, use as it is"); - iPresIdentity = aPresentityId.Identity().AllocL(); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::CompleteXIMPReq() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::CompleteXIMPReq( TInt aStatus ) - { - DP_SDA("CPresencePluginWatcher::CompleteXIMPReq"); - iXdmState = EPluginIdle; - if ( iCompleted ) - { - return; - } - iCompleted = ETrue; - iConnObs.CompleteReq( iXIMPId, aStatus ); - iXIMPId = TXIMPRequestId(); - DP_SDA("CPresencePluginWatcher::CompleteXIMPReq END"); - iOperation = EPluginUndef; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::MatchWatcherId -// --------------------------------------------------------------------------- -// -TBool CPresencePluginWatcher::MatchWatcherId( - const TDesC8& aPresentityId ) const - { - DP_SDA("CPresencePluginWatcher::MatchWatcherId"); - - TBool watcherFound( EFalse ); - TInt count = iWatchers.Count(); - - DP_SDA2("CPresencePluginWatcher::MatchWatcherId watcher count %d", count); - - for ( TInt i = 0; i < count; i++ ) - { - CPresencePluginEntityWatcher* temp = ( iWatchers[i] ); - - //Check if ID is found from watcher - if ( !temp->PresentityId().CompareF( aPresentityId ) ) - { - DP_SDA("CPresencePluginWatcher::MatchWatcherId - Match!"); - watcherFound = ETrue; - } - } - - return watcherFound; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::CompleteWatcher -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::CompleteWatcher( TInt aStatus ) - { - - DP_SDA("CPresencePluginWatcher::CompleteWatcher"); - DP_SDA2("CPresencePluginWatcher::CompleteWatcher status %d", aStatus); - // start to remove RLS service when needed. - if ( iOperation == EPluginUnsubscribeGroup ) - { - DP_SDA("CompleteWatcher EPluginUnsubscribeGroup"); - if ( iXdmState == EPluginIdle ) - { - TRAPD( err, iXdmUtils->InitializeXdmsOnlyL( iStatus )); - if ( err ) - { - DP_SDA2("CompleteWatcher EPluginUnsubscribeGroup err %d",err); - CompleteXIMPReq( err ); - } - else - { - DP_SDA("CompleteWatcher EPluginUnsubscribeGroup fetch RLS"); - iXdmState = EPluginFetchRls; - if( !IsActive() ) - { - SetActive(); - } - } - return; - } - } - else - { - DP_SDA("CPresencePluginWatcher::CompleteWatcher complete"); - CompleteXIMPReq( aStatus ); - } - DP_SDA("CPresencePluginWatcher::CompleteWatcher end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::StartXdmOperationL -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::StartXdmOperationL() - { - DP_SDA("CPresencePluginWatcher::StartXdmOperationL"); - __ASSERT_DEBUG( !IsActive(), User::Leave( KErrCorrupt ) ); - if ( !iXdmUtils ) - { - iXdmUtils = iConnObs.XdmUtilsL(); - } - iXdmUtils->InitializeXdmsOnlyL( iStatus ); - - iXdmState = EPluginInitXdm; - - SetActive(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::DoCancel -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::DoCancel( ) - { - iXdmUtils->Cancel(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::RunL -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::RunL() - { - - TInt status = iStatus.Int(); - - DP_SDA2("CPresencePluginWatcher::RunL mystatus %d ", status); - - if ( !status ) - { - if( iOperation == EPluginUnsubscribeGroup ) - { - DP_SDA("CPresencePluginWatcher::RunL EPluginUnsubscribeGroup "); - UnSubscribeAllL(); - } - if ( iOperation == EPluginSubscribeGroup ) - { - //First check we have complete buddy list from server - if ( iXdmState == EPluginInitXdm ) - { - // get members of the list first - SubscribeAllL(); - return; - } - } - if ( iOperation == EPluginSubscribeSingle ) - { - DP_SDA("CPresencePluginWatcher::RunL EPluginSubscribeSingle "); - if ( iXdmState == EPluginIdle ) - { - DP_SDA("RunL EPluginSubscribeSingle complete"); - iOperation = EPluginUndef; - CompleteXIMPReq( status ); - } - else - { - iOperation = EPluginUndef; - CompleteXIMPReq( status ); - } - } - } - else - { - DP_SDA("CPresencePluginWatcher::RunL error, complete"); - CompleteXIMPReq( status ); - } - DP_SDA("CPresencePluginWatcher::RunL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::SubscribeL -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::SubscribeL( const TDesC& aIdentity ) - { - DP_SDA2("CPresencePluginWatcher::SubscribeL identity: %S", &aIdentity ); - - MXIMPIdentity* member = iConnObs.ObjectFactory().NewIdentityLC(); - member->SetIdentityL( aIdentity ); - - SetPresIdentityL( *member, EFalse ); - - HBufC8* pres8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( - member->Identity() ); - CleanupStack::PushL( pres8 ); - - DP_SDA("CPresencePluginWatcher::SubscribeL try to subsribe"); - - CPresencePluginEntityWatcher* watcher = MatchWatcherL( - pres8->Des(),ETrue ); - if ( !watcher ) - { - DP_SDA("CPresencePluginWatcher::SubscribeL no watcher, create"); - watcher = CPresencePluginEntityWatcher::NewL( - iConnObs, iConnection, *this, iPresenceData ); - CleanupStack::PushL( watcher ); - iWatcherCandidates.AppendL( watcher ); - CleanupStack::Pop( watcher ); - } - DP_SDA("CPresencePluginWatcher::SubscribeL do subsribe"); - watcher->StartSubscribeL( pres8->Des() ); - DP_SDA("CPresencePluginWatcher::SubscribeL do subsribe ok"); - - CleanupStack::PopAndDestroy( pres8 ); - CleanupStack::PopAndDestroy( 1 ); // >> member - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::SubscribeAllL -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::SubscribeAllL() - { - DP_SDA("CPresencePluginWatcher::SubscribeAllL"); - - CDesCArray* subsribed = - iConnObs.SubscribedContacts()->GetVirtualIdentityArray(); - - //Get count - TInt count = subsribed->Count(); - DP_SDA2( "CPresencePluginWatcher::SubscribeAllL contact count %d", count); - - //Subsribe contact one by one - if( count > 0 ) - { - for( TInt i = 0;i < count;i++) - { - DP_SDA2( "SubscribeAllL handle contact no: %d", i ); - SubscribeL( subsribed->MdcaPoint( i ) ); - } - } - DP_SDA( "CPresencePluginWatcher::SubscribeAllL end" ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::UnSubscribeAllL -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::UnSubscribeAllL() - { - DP_SDA("CPresencePluginWatcher::UnSubscribeAllL"); - CDesCArray* subsribed = - iConnObs.SubscribedContacts()->GetVirtualIdentityArray(); - - //Get count - TInt count = subsribed->Count(); - DP_SDA2("CPresencePluginWatcher::UnSubscribeAllL contact count %d",count); - //UnSubsribe contact one by one - - for( TInt i = 0;i < count;i++) - { - DP_SDA2("UnSubscribeAllL handle contact no: %d",i); - //Get identity form array - MXIMPIdentity* member = iConnObs.ObjectFactory().NewIdentityLC(); - member->SetIdentityL( (*subsribed)[i] ); - - SetPresIdentityL( *member, EFalse ); - - HBufC8* pres8 = - CnvUtfConverter::ConvertFromUnicodeToUtf8L( member->Identity() ); - CleanupStack::PushL( pres8 ); // << pres8 - - DP_SDA("CPresencePluginWatcher::UnSubscribeAllL try to unsubsribe"); - TInt watcherCount = iWatchers.Count(); - DP_SDA2("UnSubscribeAllL watcher count %d", watcherCount); - - TBool notFound( EFalse ); - for ( TInt j = 0; j < watcherCount; j++ ) - { - CPresencePluginEntityWatcher* watcher = - MatchWatcherL( pres8->Des(), EFalse ); - if ( !watcher ) - { - DP_SDA("UnSubscribeAllL error not found"); - notFound = ETrue; - } - else - { - DP_SDA("UnSubscribeAllL stop subscripe"); - watcher->StopSubscribeL(); - } - DP_SDA2("CPresencePluginWatcher: done= handle next = %d", i); - } - if ( notFound ) - { - DP_SDA("CPresencePluginWatcher::UnSubscribeAllL cotact not found"); - } - CleanupStack::PopAndDestroy( pres8 ); - CleanupStack::PopAndDestroy( 1 ); // >> member - } - DP_SDA("CPresencePluginWatcher::UnSubscribeAllL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::RunError -// --------------------------------------------------------------------------- -// -TInt CPresencePluginWatcher::RunError( TInt aError ) - { - DP_SDA2("CPresencePluginWatcher::RunError = %d", aError); - CompleteXIMPReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcher::AcceptL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcher::AcceptL( const CPresencePluginEntityWatcher* aWatcher ) - { - DP_SDA( "CPresencePluginWatcher::AcceptL" ); - - if ( KErrNotFound == iWatchers.Find( aWatcher ) ) - { - iWatchers.AppendL( aWatcher ); - - TInt index = iWatcherCandidates.Find( aWatcher ); - if ( KErrNotFound != index ) - { - iWatcherCandidates.Remove( index ); - } - } - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginwatcherinfo.cpp --- a/simpledatamodeladapter/src/presencepluginwatcherinfo.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include - -#include "presencepluginwatcherinfo.h" - -// ======== MEMBER FUNCTIONS ======== - - -// --------------------------------------------------------------------------- -// CPresencePluginWatcherInfo::CPresencePluginWatcherInfo -// --------------------------------------------------------------------------- -CPresencePluginWatcherInfo::CPresencePluginWatcherInfo( ) - {} - -// --------------------------------------------------------------------------- -// CPresencePluginWatcherInfo::~CPresencePluginWatcherInfo -// --------------------------------------------------------------------------- -CPresencePluginWatcherInfo::~CPresencePluginWatcherInfo() - { - delete iId; - delete iSipId; - } - -// ---------------------------------------------------------- -// CPresencePluginWatcherInfo::NewL -// ---------------------------------------------------------- -// -CPresencePluginWatcherInfo* CPresencePluginWatcherInfo::NewL( - const TDesC8& aId, const TDesC& aSipId ) - { - CPresencePluginWatcherInfo* self = - new (ELeave) CPresencePluginWatcherInfo( ); - CleanupStack::PushL( self ); - self->ConstructL( aId, aSipId ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcherInfo::ConstructL -// --------------------------------------------------------------------------- -// -void CPresencePluginWatcherInfo::ConstructL( - const TDesC8& aId, const TDesC& aSipId ) - { - iId = aId.AllocL(); - iSipId = aSipId.AllocL(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcherInfo::Destroy -// --------------------------------------------------------------------------- -void CPresencePluginWatcherInfo::Destroy() - { - DP_SDA("CPresencePluginWatcherInfo::Destroy"); - iLink.Deque(); - delete this; - DP_SDA("CPresencePluginWatcherInfo::Destroy end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcherInfo::Match -// --------------------------------------------------------------------------- -TBool CPresencePluginWatcherInfo::Match( - const TDesC8& aId, - const TDesC& aSipId ) - { - DP_SDA("CPresencePluginWatcherInfo::Match"); - if ( (!iId->Des().CompareF( aId )) && (!iSipId->Des().CompareF( aSipId )) ) - { - return ETrue; - } - else - { - return EFalse; - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcherInfo::SipId -// --------------------------------------------------------------------------- -// -TPtrC CPresencePluginWatcherInfo::SipId( ) - { - DP_SDA("CPresencePluginWatcherInfo::SipId"); - return iSipId ? iSipId->Des() : TPtrC(); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWatcherInfo::LinkOffset -// --------------------------------------------------------------------------- -// -TInt CPresencePluginWatcherInfo::LinkOffset() - { - return _FOFF(CPresencePluginWatcherInfo, iLink); - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginwinfo.cpp --- a/simpledatamodeladapter/src/presencepluginwinfo.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,181 +0,0 @@ -/* -* Copyright (c) 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include -#include - -#include "presencepluginwinfo.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::CPresencePluginWinfo() -// --------------------------------------------------------------------------- -// -CPresencePluginWinfo::CPresencePluginWinfo( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn ) - :iConnObs( aObs ), iConnection( aConn ), - iSubscribed( EFalse ), - iWinfoCompleted( EFalse ) - { - } - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWinfo::ConstructL( ) - { - iWinfoWatcher = TSimpleFactory::NewWinfoWatcherL( iConnection, *this ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginWinfo* CPresencePluginWinfo::NewL( - MPresencePluginConnectionObs& aObs, - MSimpleConnection& aConn ) - { - DP_SDA("CPresencePluginWinfo::NewL"); - CPresencePluginWinfo* self = - new( ELeave ) CPresencePluginWinfo( aObs, aConn ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::~CPresencePluginWinfo() -// --------------------------------------------------------------------------- -// -CPresencePluginWinfo::~CPresencePluginWinfo() - { - if ( iWinfoWatcher ) - { - iWinfoWatcher->Close(); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::SetHost() -// --------------------------------------------------------------------------- -// -void CPresencePluginWinfo::SetHost( - MXIMPProtocolConnectionHost* aHost ) - { - iHost = aHost; - } - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::SubscribeWinfoListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWinfo::SubscribeWinfoListL( TXIMPRequestId aReqId ) - { - DP_SDA("CPresencePluginWinfo::SubscribeWinfoListL"); - iWinfoCompleted = EFalse; - if ( !iSubscribed ) - { - DP_SDA("CPresencePluginWinfo::SubscribeWinfoListL !iSubscribed"); - iSimpleId = iWinfoWatcher->SubscribeWatcherListL( NULL ); - iSubscribed = ETrue; - iXIMPId = aReqId; - } - else - { - DP_SDA("CPresencePluginWinfo::SubscribeWinfoListL else "); - iSimpleId = 0; - iXIMPId = aReqId; - WinfoReqCompleteL( iSimpleId, KErrNone ); - } - DP_SDA("CPresencePluginWinfo::SubscribeWinfoListL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::UnsubscribeWinfoListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWinfo::UnsubscribeWinfoListL( TXIMPRequestId aReqId ) - { - if ( iSubscribed ) - { - iSubscribed = EFalse; - iSimpleId = iWinfoWatcher->UnsubscribeL(); - iXIMPId = aReqId; - } - else - { - iSimpleId = 0; - iXIMPId = aReqId; - WinfoReqCompleteL( iSimpleId, KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::WinfoReqCompleteL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWinfo::WinfoReqCompleteL( TInt aOpId, TInt aStatus ) - { - DP_SDA("CPresencePluginWinfo::WinfoReqCompleteL"); - if ( iSimpleId == aOpId ) - { - iWinfoCompleted = ETrue; - iSimpleId = 0; - iConnObs.CompleteReq( iXIMPId, aStatus ); - // Do not wait MXIMPProtocolConnectionHostObserver callback, this - // class is ready to serve the next request now. - iXIMPId = TXIMPRequestId(); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::WinfoTerminatedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWinfo::WinfoTerminatedL( - TInt aOpId, TInt aReason ) - { - - if ( iSimpleId == aOpId ) - { - iSimpleId = 0; - iConnObs.WinfoTerminatedL( aReason ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginWinfo::WinfoNotificationL() -// --------------------------------------------------------------------------- -// -void CPresencePluginWinfo::WinfoNotificationL( - MSimpleWinfo& aWinfo ) - { - if ( !iWinfoCompleted ) - { - WinfoReqCompleteL( iSimpleId, KErrNone ); - } - iConnObs.WinfoNotification( aWinfo ); - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginxdmpresrules.cpp --- a/simpledatamodeladapter/src/presencepluginxdmpresrules.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1155 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - -#include -#include -#include -#include -#include -#include -#include - -#include "presencepluginxdmpresrules.h" -#include "mpresrulesasynchandler.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::NewLC() -// --------------------------------------------------------------------------- -// -CPresencePluginXdmPresRules* CPresencePluginXdmPresRules::NewLC( - const TInt aSettingId, TBool aLocalMode ) - { - CPresencePluginXdmPresRules* self = - new (ELeave) CPresencePluginXdmPresRules( aSettingId ); - CleanupStack::PushL( self ); - self->ConstructL( aSettingId, aLocalMode ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginXdmPresRules* CPresencePluginXdmPresRules::NewL( - const TInt aXmdId, TBool aLocalMode ) - { - CPresencePluginXdmPresRules* self = - new( ELeave ) CPresencePluginXdmPresRules( aXmdId ); - CleanupStack::PushL( self ); - self->ConstructL( aXmdId, aLocalMode ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::CPresencePluginXdmPresRules() -// --------------------------------------------------------------------------- -// -CPresencePluginXdmPresRules::CPresencePluginXdmPresRules( const TInt aXdmId ) - :CActive( EPriorityStandard ), - iSettingsId( aXdmId ), - iXdmState( EStateIdle ), //Listeting xdState - iRulesUpdateState(EStateNoOperation), - iPresXdmOk( EFalse ), - iAsyncReq( ENoOperation ) - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::ConstructL( - const TInt aXmdId, - TBool aLocalMode ) - { - DP_SDA2("CPresencePluginXdmPresRules::ConstructL - aXdmId: %d", aXmdId ); - using namespace NPresencePlugin::NPresence; - if ( !aLocalMode ) - { - DP_SDA("CPresencePluginXdmPresRules::ConstructL Normal Mode"); - CXdmProtocolInfo* xdmProtocolInfo = CXdmProtocolInfo::NewL( aXmdId ); - CleanupStack::PushL( xdmProtocolInfo ); - DP_SDA("CPresencePluginXdmPresRules::ConstructL - protocol info created"); - xdmProtocolInfo->SetCacheUsage( EFalse ); - DP_SDA("CPresencePluginXdmPresRules::ConstructL - create xdm engine"); - iXdmEngine = CXdmEngine::NewL( *xdmProtocolInfo ); - CleanupStack::PopAndDestroy( xdmProtocolInfo ); - DP_SDA("CPresencePluginXdmPresRules::ConstructL - xdm engine created"); - - DP_SDA("CPresencePluginXdmPresRules::ConstructL - create doc model"); - //Create empty document model - iPresRulesDoc = - iXdmEngine->CreateDocumentModelL( - KPresencePresRules, EXdmOmaPresenceRules ); - DP_SDA("CPresencePluginXdmPresRules::ConstructL - create doc model ok"); - } - else - { - DP_SDA("CPresencePluginXdmPresRules::ConstructL LocalMode Mode"); - //Lets Try localmode - CXdmProtocolInfo* xdmProtocolInfo = - CXdmProtocolInfo::NewL( 0, KLocalProtocol, KNullDesC ); - CleanupStack::PushL( xdmProtocolInfo ); - iXdmEngine = CXdmEngine::NewL( *xdmProtocolInfo ); - CleanupStack::PopAndDestroy( xdmProtocolInfo ); - - //Create empty document model - iPresRulesDoc = - iXdmEngine->CreateDocumentModelL( - KPresencePresRules, EXdmOmaPresenceRules ); - } - DP_SDA("CPresencePluginXdmPresRules::ConstructL create root"); - CreateRootIfNeededL(); - DP_SDA("CPresencePluginXdmPresRules::ConstructL - out" ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::~CPresencePluginXdmPresRules() -// --------------------------------------------------------------------------- -// -CPresencePluginXdmPresRules::~CPresencePluginXdmPresRules() - { - DP_SDA("CPresencePluginXdmPresRules::~CPresencePluginXdmPresRules"); - - if ( iPresRulesDoc ) - { - DP_SDA("CPresencePluginXdmPresRules::~CPresencePluginXdmPresRules 2"); - if ( iXdmEngine ) - { - DP_SDA("CPresencePluginXdmPresRules::~CPresencePluginXdmPresRules 3"); - TRAP_IGNORE( iXdmEngine->DeleteDocumentModelL( iPresRulesDoc )); - } - } - - delete iXdmEngine; - delete iEntityUri; - - DP_SDA("CPresencePluginXdmPresRules::~CPresencePluginXdmPresRules Done"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::GetXdmRulesL() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginXdmPresRules::GetXdmRulesL( - MPresRulesAsyncHandler* const aHandler ) - { - DP_SDA("CPresencePluginXdmPresRules::GetXdmRulesL"); - __ASSERT_ALWAYS(aHandler, User::Leave(KErrArgument)); - if (IsActive()) - return KErrAlreadyExists; - iAsyncReq = EXdmGetRulesFromServer; - iAsyncHandler = aHandler; - using namespace NPresencePlugin::NPresence; - - if ( !iPresXdmOk ) - { - DP_SDA("CPresencePluginXdmPresRules::GetXdmRulesL !iPresXdmOk"); - - - iPresRulesDoc->FetchDataL(); - DP_SDA("CPresencePluginXdmPresRules::GetXdmRulesL !iPresXdmOk end"); - } - else - { - // Document already exists, no need to search from a server - DP_SDA("CPresencePluginXdmPresRules::GetXdmRulesL Already exists"); - iStatus = KRequestPending; - SetActive(); - } - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::UpdateXdmRulesL() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginXdmPresRules::UpdateXdmRulesL( - MPresRulesAsyncHandler* const aHandler ) - { - __ASSERT_ALWAYS(aHandler, User::Leave(KErrArgument)); - if (IsActive()) - { - return KErrAlreadyExists; - } - iAsyncReq = EXdmUpdateRules; - iAsyncHandler = aHandler; - - iPresRulesDoc->AppendL(); - iXdmEngine->UpdateL(iPresRulesDoc, iStatus); - SetActive(); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::MakeInitialRulesDocumentL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::MakeInitialRulesDocumentL( - MPresRulesAsyncHandler* const aHandler ) - { - DP_SDA("CPresencePluginXdmPresRules::MakeInitialXdmsDocumentL"); - __ASSERT_ALWAYS(aHandler, User::Leave(KErrArgument)); - iAsyncReq = EXdmInitialPresDoc; - iAsyncHandler = aHandler; - - CXdmDocumentNode* root = iPresRulesDoc->DocumentRoot(); - if ( !root ) - { - DP_SDA("CPresencePluginXdmPresRules:: Create root"); - root = iPresRulesDoc->CreateRootL(); - } - - using namespace NPresencePlugin::NPresence; - root->SetNameL( KPresenceRuleset ); - - // send to the server and start wait a response - iPresRulesDoc->AppendL( root ); - DP_SDA("CPresencePluginXdmPresRules::MakeInitialXdmsDocumentL append"); - iAsyncReq = EXdmInitialPresDoc; - DP_SDA("CPresencePluginXdmPresRules::MakeInitialXdmsDocumentL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::AddWhiteListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::AddWhiteListL( CXdmDocumentNode* aRoot ) - { - DP_SDA("CPresencePluginXdmPresRules::AddWhiteList"); - using namespace NPresencePlugin::NPresence; - using namespace NPresencePlugin::NPresenceTransformations; - - if ( aRoot->IsEmptyNode() ) - { - DP_SDA("AddWhiteList is empty node"); - aRoot->SetEmptyNode( EFalse ); - } - // whitelist - CXdmDocumentNode* child2 = aRoot->CreateChileNodeL( KPresenceRule ); - CleanupStack::PushL( child2 ); - CXdmNodeAttribute* name2 = child2->CreateAttributeL( KPresenceId ); - CleanupStack::PushL( name2 ); - name2->SetAttributeValueL( KPresenceXdmWhiteList ); - DP_SDA("CPresencePluginXdmPresRules::AddWhiteList 2"); - - CXdmDocumentNode* conditionsNode2 = - child2->CreateChileNodeL( KPresenceConditions ); - - conditionsNode2->CreateChileNodeL( KPresenceIdentity ); - CXdmDocumentNode* actionNode2 = - child2->CreateChileNodeL( KPresenceAction ); - - DP_SDA("CPresencePluginXdmPresRules::AddWhiteList 3"); - CXdmDocumentNode* subNode2 = actionNode2->CreateChileNodeL( KPresenceSub ); - DP_SDA("CPresencePluginXdmPresRules::MakeInitialXdmsDocumentL 4"); - - subNode2->SetLeafNode( ETrue ); - subNode2->SetLeafNodeContentL( KPresenceAllow8 ); - DP_SDA("CPresencePluginXdmPresRules::AddWhiteList 5"); - - //Add transformations - /* - - - - - - - - - - - - - - */ - - CXdmDocumentNode* trasform2 = - child2->CreateChileNodeL( KPresenceTrasformations ); - CXdmDocumentNode* services2 = - trasform2->CreateChileNodeL( KPresenceProvideServices ); - services2->CreateChileNodeL( KPresenceAllServices ); - CXdmDocumentNode* person2 = - trasform2->CreateChileNodeL( KPresenceProvidePersons ); - person2->CreateChileNodeL( KPresenceAllPersons ); - CXdmDocumentNode* devices2 = - trasform2->CreateChileNodeL( KPresenceProvidedevices ); - devices2->CreateChileNodeL( KPresenceAlldevices ); - trasform2->CreateChileNodeL( KPresenceProvideAllAttributes ); - - CleanupStack::Pop( name2 ); - CleanupStack::Pop( child2 ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::AddBlackList() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::AddBlackListL( CXdmDocumentNode* aRoot ) - { - DP_SDA("CPresencePluginXdmPresRules::AddBlackList"); - // add all the list nodes - // buddylist - using namespace NPresencePlugin::NPresence; - using namespace NPresencePlugin::NPresenceTransformations; - if ( aRoot->IsEmptyNode() ) - { - DP_SDA("AddBlackList is empty node"); - aRoot->SetEmptyNode( EFalse ); - } - CXdmDocumentNode* child1 = aRoot->CreateChileNodeL( KPresenceRule ); - CleanupStack::PushL( child1 ); - CXdmNodeAttribute* name = child1->CreateAttributeL( KPresenceId ); - CleanupStack::PushL( name ); - - name->SetAttributeValueL( KPresenceXdmBlockRule ); - // add condition - CXdmDocumentNode* conditionsNode = - child1->CreateChileNodeL( KPresenceConditions ); - conditionsNode->CreateChileNodeL( KPresenceIdentity ); - - CXdmDocumentNode* actionNode = - child1->CreateChileNodeL( KPresenceAction ); - - DP_SDA("CPresencePluginXdmPresRules::AddBlackList 1"); - CXdmDocumentNode* subNode = - actionNode->CreateChileNodeL( KPresenceSub ); - DP_SDA("CPresencePluginXdmPresRules::MakeInitialXdmsDocumentL 1/2"); - subNode->SetLeafNode(ETrue); - subNode->SetLeafNodeContentL( KPresenceBlock8 ); - DP_SDA("CPresencePluginXdmPresRules::AddBlackList 1/3"); - - CXdmDocumentNode* trasform = - child1->CreateChileNodeL( KPresenceTrasformations ); - CXdmDocumentNode* services = - trasform->CreateChileNodeL( KPresenceProvideServices ); - services->CreateChileNodeL( KPresenceAllServices ); - - CXdmDocumentNode* person = - trasform->CreateChileNodeL( KPresenceProvidePersons ); - person->CreateChileNodeL( KPresenceAllPersons ); - CXdmDocumentNode* devices = - trasform->CreateChileNodeL( KPresenceProvidedevices ); - devices->CreateChileNodeL( KPresenceAlldevices ); - trasform->CreateChileNodeL( KPresenceProvideAllAttributes ); - CleanupStack::Pop( name ); - CleanupStack::Pop( child1 ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::RunL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::RunL( ) - { - DP_SDA("CPresencePluginXdmPresRules::RunL"); - TPluginPresRulesXdmOperation origState = iAsyncReq; - iAsyncReq = ENoOperation; - TInt myStatus = iStatus.Int(); - - DP_SDA2("CPresencePluginXdmPresRules::RunL mystatus %d ", myStatus); - DP_SDA2("CPresencePluginXdmPresRules::RunL state %d ", origState); - - switch( origState ) - { - case EXdmGetRulesFromServer: - { - DP_SDA("CPresencePluginXdmPresRules::RunL EXdmGetRulesFromServer"); - iAsyncHandler->HandlePresUpdateDocumentL( - iStatus.Int() ); - } - break; - case EXdmInitialPresDoc: - { - DP_SDA("CPresencePluginXdmPresRules::RunL EXdmInitialPresDoc"); - iAsyncHandler->HandlePresUpdateDocumentL( - iStatus.Int() ); - } - break; - case EXdmUpdateRules: - { - DP_SDA("CPresencePluginXdmPresRules::RunL EXdmUpdateRules"); - iAsyncHandler->HandlePresUpdateDocumentL( - iStatus.Int() ); - } - break; - case EXdmUpdateRulesFromServer: - { - DP_SDA("RunL ExdmUpdateRulesFromServer"); - CreateRootIfNeededL(); //This check is added for Openser/OpenXcap - iAsyncHandler->HandlePresUpdateDocumentL( iStatus.Int() ); - iRulesUpdateState = EStateNoOperation; - } - break; - case ENoOperation: - default: - break; - } - DP_SDA("CPresencePluginXdmPresRules::RunL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::DoCancel() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::DoCancel( ) - { - DP_SDA("CPresencePluginXdmPresRules::DoCancel"); - iXdmEngine->CancelUpdate(iPresRulesDoc); - iAsyncReq = ECancelDocument; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::RunError() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginXdmPresRules::RunError( TInt /*aError*/ ) - { - DP_SDA("CPresencePluginXdmPresRules::RunError"); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::AddEntityToWhiteListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::AddEntityToWhiteListL( - const TDesC& aUri, - MPresRulesAsyncHandler* const aHandler ) - { - DP_SDA("CPresencePluginXdmPresRules::AddEntityToWhiteListL"); - iEntityUri = aUri.Alloc(); - DP_SDA2( "AddEntityToWhiteListL entity %S", iEntityUri ); - __ASSERT_ALWAYS(aHandler, User::Leave(KErrArgument)); - - iAsyncReq = EXdmUpdateRules; - iAsyncHandler = aHandler; - iRulesUpdateState = EStateAddToWhiteList; - DoOneAddUserL( KPresenceXdmWhiteList, iEntityUri->Des() ); - - UpdateXdmRulesL( aHandler ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::RemoveEntityFromWhiteListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::RemoveEntityFromWhiteListL( - const TDesC& aUri, - MPresRulesAsyncHandler* const aHandler ) - { - DP_SDA("CPresencePluginXdmPresRules::RemoveEntityFromWhiteListL"); - iEntityUri = aUri.Alloc(); - __ASSERT_ALWAYS(aHandler, User::Leave(KErrArgument)); - - iAsyncReq = EXdmUpdateRules; - iAsyncHandler = aHandler; - iRulesUpdateState = EStateRemoveFromWhiteList; - RemoveOneFromRuleL( KPresenceXdmWhiteList, iEntityUri->Des() ); - - UpdateXdmRulesL( aHandler ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::AddEntityToBlockedRulesL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::AddEntityToBlockedRulesL( - const TDesC& aUri, - MPresRulesAsyncHandler* const aHandler ) - { - DP_SDA("CPresencePluginXdmPresRules::AddEntityToBlockedRulesL"); - iEntityUri = aUri.Alloc(); - __ASSERT_ALWAYS(aHandler, User::Leave(KErrArgument)); - - iAsyncReq = EXdmUpdateRules; - iAsyncHandler = aHandler; - iRulesUpdateState = EStateAddToBlockList; - DoOneAddUserL( KPresenceXdmBlockRule, iEntityUri->Des() ); - - UpdateXdmRulesL( aHandler ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::RemoveEntityBlockedRulesL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::RemoveEntityBlockedRulesL( - const TDesC& aUri, - MPresRulesAsyncHandler* const aHandler ) - { - DP_SDA("CPresencePluginXdmPresRules::RemoveEntityBlockedRulesL"); - iEntityUri = aUri.Alloc(); - __ASSERT_ALWAYS(aHandler, User::Leave(KErrArgument)); - - iAsyncReq = EXdmUpdateRules; - iAsyncHandler = aHandler; - iRulesUpdateState = EStateRemoveFromBlackList; - RemoveOneFromRuleL( KPresenceXdmBlockRule, iEntityUri->Des() ); - - UpdateXdmRulesL( aHandler ); - DP_SDA("CPresencePluginXdmPresRules::RemoveEntityBlockedRulesL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::RemoveOneFromRule() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::RemoveOneFromRuleL( - const TDesC& aRule, const TDesC& aUri ) - { - DP_SDA("CPresencePluginXdmPresRules::RemoveOneFromRule"); - CXdmDocumentNode* ruleNode = NULL; - CXdmNodeAttribute* attr = NULL; - TBool found( EFalse ); - TBool ruleAvaible( EFalse ); - - using namespace NPresencePlugin::NPresence; - - RPointerArray rules; - CleanupClosePushL( rules ); - - RPointerArray nodes; - CleanupClosePushL( nodes ); - - RPointerArray ones; - CleanupClosePushL( ones ); - - if ( iPresRulesDoc ) - { - DP_SDA("RemoveOneFromRule iPresRulesDoc ok"); - - //Check if rule exist - ruleAvaible = FindRuleL( aRule, EFalse ); - - if ( ruleAvaible ) - { - - TRAPD( err, ruleNode = GetRulesL( aRule, rules ) ); - if( !err ) - { - found = ETrue; - } - } - } - - if ( found ) - { - DP_SDA("CPresencePluginXdmPresRules::RemoveOneFromRule found"); - TInt findErr = ruleNode->Find( KPresenceOne, nodes ); - if ( !findErr ) - { - TInt nodeCount = nodes.Count(); - for ( TInt i = 0; i < nodeCount; i++ ) - { - CXdmDocumentNode* currNode = nodes[i]; - attr = ( currNode )->Attribute( KPresenceId ); - - TBool uriMatch = CompareUriWithoutPrefixL( - aUri, attr->AttributeValue() ); - - if ( attr && uriMatch ) - { - DP_SDA("RemoveOneFromRule Remove"); - //First remove currNode form model - iPresRulesDoc->RemoveFromModelL( currNode ); - - //Check how many rules are in group now - DP_SDA("RemoveOneFromRule Find all one field from rule"); - User::LeaveIfError( ruleNode->Find( KPresenceOne, ones ) ); - TInt oneCount = ones.Count(); - DP_SDA2("RemoveOneFromRule ones count %d", oneCount); - //if there is no any ones in rule remove it - if( KErrNone == oneCount ) - { - //Remove group - DP_SDA("RemoveOneFromRule Remove GROUP"); - RemoveRuleGroupL( aRule ); - } - // Update model to server - iPresRulesDoc->AppendL(); - break; - } - } - } - } - - CleanupStack::PopAndDestroy( &ones ); // >>> nodes - CleanupStack::PopAndDestroy( &nodes ); // >>> nodes - CleanupStack::PopAndDestroy( &rules ); // >>> lists - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::DoOneAddUserL() -// --------------------------------------------------------------------------- -// - void CPresencePluginXdmPresRules::DoOneAddUserL( - const TDesC& aRule, const TDesC& aUri ) - { - DP_SDA("CPresencePluginXdmPresRules::DoOneAddUserL"); - using namespace NPresencePlugin::NPresence; - - CXdmDocumentNode* ruleNode = NULL; - RPointerArray identityNode; - CleanupClosePushL( identityNode ); - - TBool found( EFalse ); - TBool ruleAvaible( EFalse ); - - using namespace NPresencePlugin::NPresence; - - RPointerArray rules; - CleanupClosePushL( rules ); - - - DP_SDA("CPresencePluginXdmPresRules::DoOneAddUserL iPresRulesDoc"); - if ( iPresRulesDoc ) - { - DP_SDA("DoOneAddUserL iPresRulesDoc Exist"); - - ruleAvaible = FindRuleL( aRule, ETrue ); - - if ( ruleAvaible ) - { - TRAPD( err, ruleNode = GetRulesL( aRule, rules ) ); - if( !err ) - { - found = ETrue; - } - } - } - - //Finaly add entity to rules - if ( found ) - { - //Check if enity already in list - if( !CheckIfOneExistL( aRule, aUri ) ) - { - DP_SDA("CPresencePluginXdmPresRules::DoOneAddUserL Found"); - // Find identityNode inside rulenode - User::LeaveIfError( - ruleNode->Find( KPresenceIdentity, identityNode ) ); - if ( identityNode[0] ) - { - if ( identityNode[0]->IsEmptyNode() ) - { - DP_SDA("DoOneAddUserL rule node empty"); - identityNode[0]->SetEmptyNode( EFalse ); - } - - // create new one node inside identity - CXdmDocumentNode* newNode = - identityNode[0]->CreateChileNodeL( KPresenceOne ); - CXdmNodeAttribute* attributeOneId = - newNode->CreateAttributeL( KPresenceId ); - - attributeOneId->SetAttributeValueL( aUri ); - iPresRulesDoc->AppendL(); - DP_SDA("DoOneAddUserL added"); - } - } - } - else - { - DP_SDA("CPresencePluginXdmPresRules::DoOneAddUserL error not found"); - User::Leave( KErrNotFound ); - } - DP_SDA("CPresencePluginXdmPresRules::DoOneAddUserL end"); - CleanupStack::PopAndDestroy( 2 ); - - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::GetRulesL() -// --------------------------------------------------------------------------- -// -CXdmDocumentNode* CPresencePluginXdmPresRules::GetRulesL( const TDesC& aRule, - RPointerArray& aRuleArray ) - { - DP_SDA("GetRulesL find Again if rule now exist"); - using namespace NPresencePlugin::NPresence; - - CXdmDocumentNode* ruleNode = NULL; - CXdmNodeAttribute* attr = NULL; - - TBool result(EFalse); - // find if rule tag is exist - User::LeaveIfError( iPresRulesDoc->Find( KPresenceRule, aRuleArray ) ); - - // How many rules found - TInt count = aRuleArray.Count(); - DP_SDA2("GetRulesL ruleCount %d ", count); - - // Check is needed rule id exist - for ( TInt i=0; i < count; i++ ) - { - ruleNode = aRuleArray[i]; - TBuf buf; - buf.Copy( - ruleNode->Attribute( KPresenceId )->AttributeValue() ); - DP_SDA2("GetRulesL ruleNode %S", &buf); - - attr = ruleNode->Attribute( KPresenceId ); - if ( attr && !attr->AttributeValue().CompareF( aRule ) ) - { - DP_SDA("CPresencePluginXdmPresRules::GetRulesL FOUND"); - result = ETrue; - break; - } - } - - // Make second compare - if( !result ) - { - User::LeaveIfError(iPresRulesDoc->Find( KPresenceRule, aRuleArray )); - TInt count2 = aRuleArray.Count(); - - for ( TInt i=0; i < count2; i++ ) - { - ruleNode = aRuleArray[i]; - attr = ruleNode->Attribute( KPresenceId ); - if ( attr && attr->AttributeValue().CompareF( aRule ) ) - { - DP_SDA("CPresencePluginXdmPresRules::GetRulesL NOT FOUND"); - User::Leave( KErrNotFound ); - } - } - } - - return ruleNode; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::FindRuleL() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginXdmPresRules::FindRuleL( - const TDesC& aRule, TBool aCreateRule ) - { - DP_SDA("CPresencePluginXdmPresRules::FindRuleL"); - using namespace NPresencePlugin::NPresence; - - if ( iPresRulesDoc ) - { - DP_SDA("CPresencePluginXdmPresRules::FindRuleL pres document exists"); - RPointerArray rule; - CleanupClosePushL( rule ); - - CXdmDocumentNode* ruleNode = NULL; - CXdmNodeAttribute* attr = NULL; - - TBool found = EFalse; - //Find all rules from document and but them to array - DP_SDA("CPresencePluginXdmPresRules::FindRuleL find rule"); - TInt err = iPresRulesDoc->Find( KPresenceRule, rule ); - DP_SDA2("FindRuleL find rule error %d", err); - - // There is no any rules yet avaible create - if ( err == KErrNotFound && aCreateRule ) - { - DP_SDA("FindRuleL Not any rules exist"); - if ( iRulesUpdateState == EStateAddToWhiteList ) - { - DP_SDA("FindRuleL add white list"); - AddWhiteListL( iPresRulesDoc->DocumentRoot() ); - CleanupStack::PopAndDestroy( 1 ); - return ETrue; - } - else if ( iRulesUpdateState == EStateAddToBlockList ) - { - DP_SDA("FindRuleL add black list"); - AddBlackListL( iPresRulesDoc->DocumentRoot() ); - CleanupStack::PopAndDestroy( 1 ); - return ETrue; - } - } - - // if rule element found find if aRule exist - TInt count = rule.Count(); - for ( TInt i=0; i < count; i++ ) - { - ruleNode = rule[i]; - TBuf buf; - buf.Copy( - ruleNode->Attribute( KPresenceId )->AttributeValue() ); - DP_SDA2("FindRuleL ruleNode %S", &buf); - - attr = ruleNode->Attribute( KPresenceId ); - if ( attr && !attr->AttributeValue().CompareF( aRule ) ) - { - DP_SDA("CPresencePluginXdmPresRules::FindRuleL FOUND"); - found = ETrue; - } - } - - if ( !found && aCreateRule) - { - // if rule not found create it - DP_SDA("CPresencePluginXdmPresRules::FindRuleL not found"); - //if rule not found add rule and check again - if ( EStateAddToWhiteList == iRulesUpdateState ) - { - DP_SDA("FindRuleL add white list2"); - AddWhiteListL( iPresRulesDoc->DocumentRoot() ); - CleanupStack::PopAndDestroy( 1 ); - return ETrue; - } - else if ( EStateAddToBlockList == iRulesUpdateState ) - { - DP_SDA("FindRuleL add black list 2"); - AddBlackListL( iPresRulesDoc->DocumentRoot() ); - CleanupStack::PopAndDestroy( 1 ); - return ETrue; - } - } - - CleanupStack::PopAndDestroy( 1 ); - return ETrue; - } - else - { - // Should we create presrules document - DP_SDA("CPresencePluginXdmPresRules::FindRuleL end"); - return EFalse; - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::CheckIfOneExistL -// --------------------------------------------------------------------------- -// -TBool CPresencePluginXdmPresRules::CheckIfOneExistL( - const TDesC& aRule, - const TDesC& aUri ) - { - using namespace NPresencePlugin::NPresence; - DP_SDA("CPresencePluginXdmPresRules::CheckIfOneExistL"); - - using namespace NPresencePlugin::NPresence; - - CXdmNodeAttribute* attr = NULL; - RPointerArray nodes; - CleanupClosePushL( nodes ); - TBool state( EFalse ); - - CXdmDocumentNode* root = iPresRulesDoc->DocumentRoot(); - CXdmDocumentNode* foundNode = SearchListUnderParentL( root, aRule ); - - if ( foundNode ) - { - DP_SDA("CPresencePluginXdmPresRules::CheckIfOneExistL check nodes"); - TInt findErr = foundNode->Find( KPresenceOne, nodes ); - DP_SDA2("CheckIfEnityExist - findErr: %d", findErr ); - - if ( findErr ) - { - DP_SDA("CheckIfOneExistL One not exist "); - state = EFalse; - } - else - { - DP_SDA("CPresencePluginXdmPresRules::CheckIfOneExistL Else"); - TInt nodeCount = nodes.Count(); - for ( TInt i = 0; i < nodeCount; i++ ) - { - CXdmDocumentNode* currNode = nodes[i]; - attr = ( currNode )->Attribute( KPresenceId ); - - TBool uriMatch( EFalse ); - uriMatch = CompareUriWithoutPrefixL( - aUri, attr->AttributeValue() ); - - if ( attr && uriMatch ) - { - DP_SDA("CheckIfOneExistL entity exists"); - //Enity is exist - state = ETrue; - break; - } - } - } - } - DP_SDA("CPresencePluginXdmPresRules::CheckIfOneExistL Destroy nodes"); - CleanupStack::PopAndDestroy( &nodes ); // >>> nodes - return state; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::RemoveRuleGroupL( ) -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::RemoveRuleGroupL( const TDesC& aRule ) - { - DP_SDA("CPresencePluginXdmUtils::RemoveRuleGroupL"); - CXdmDocumentNode* ruleNode = NULL; - CXdmNodeAttribute* attr = NULL; - TBool found( EFalse ); - TBool ruleAvaible( EFalse ); - - using namespace NPresencePlugin::NPresence; - - RPointerArray rules; - CleanupClosePushL( rules ); - - RPointerArray nodes; - CleanupClosePushL( nodes ); - - //Find rules - if ( iPresRulesDoc ) - { - DP_SDA("RemoveRuleGroupL iPresRulesDoc ok"); - - //Check if rule exist - ruleAvaible = FindRuleL( aRule, EFalse ); - - if ( ruleAvaible ) - { - // If rule found get count how many rules are in xml - TInt findErr = iPresRulesDoc->Find( KPresenceRule, rules ); - DP_SDA2("RemoveRuleGroupL findError %d", findErr); - if ( !findErr ) - { - DP_SDA("RemoveRuleGroupL found EFalse"); - found = EFalse; - } - else - { - TInt count = rules.Count(); - DP_SDA2("RemoveRuleGroupL rule count %d", count); - for ( TInt i=0; i < count; i++ ) - { - ruleNode = rules[i]; - attr = ruleNode->Attribute( KPresenceId ); - if ( attr && !attr->AttributeValue().CompareF( aRule )) - { - found = ETrue; - break; - } - } - } - } - } - - if ( found ) - { - User::LeaveIfError( iPresRulesDoc->Find( KPresenceRule, nodes )); - TInt ruleCount = nodes.Count(); - DP_SDA2("L node count %d", ruleCount); - for ( TInt i = 0; i < ruleCount; i++ ) - { - CXdmDocumentNode* currNode = nodes[i]; - attr = currNode->Attribute( KPresenceId ); - if ( attr && !attr->AttributeValue().CompareF( aRule )) - { - DP_SDA("RemoveRuleGroupL remove rule"); - // This is the user we are looking for deletion. - iPresRulesDoc->RemoveFromModelL( currNode ); - //Update - iPresRulesDoc->AppendL(); - break; - } - } - } - else - { - User::Leave( KErrNotFound ); - } - CleanupStack::PopAndDestroy( &nodes ); // >>> nodes - CleanupStack::PopAndDestroy( &rules ); // >>> rules - DP_SDA("CPresencePluginXdmUtils::RemoveRuleGroupL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::UpdateFromServerL() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginXdmPresRules::UpdateFromServerL( - MPresRulesAsyncHandler* const aHandler ) - { - DP_SDA("CPresencePluginXdmPresRules::UpdateFromServer"); - using namespace NPresencePlugin::NPresence; - __ASSERT_ALWAYS(aHandler, User::Leave(KErrArgument)); - - if ( IsActive() ) - { - return KErrAlreadyExists; - } - iPresRulesDoc->ResetContents(); - iPresRulesDoc->FetchDataL(); - iAsyncReq = EXdmUpdateRulesFromServer; - iAsyncHandler = aHandler; - iXdmEngine->UpdateL( iPresRulesDoc, iStatus ); - SetActive(); - DP_SDA("CPresencePluginXdmPresRules::UpdateFromServer end"); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::CreateRootIfNeededL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmPresRules::CreateRootIfNeededL() - { - DP_SDA("CPresencePluginXdmPresRules::CreateRootIfNeededL"); - using namespace NPresencePlugin::NPresence; - - CXdmDocumentNode* myRootNode = iPresRulesDoc->DocumentRoot(); - - if ( myRootNode ) - { - DP_SDA("CreateRootIfNeededL document root exists"); - myRootNode->SetEmptyNode(EFalse); - return; - } - - DP_SDA("CPresencePluginXdmPresRules::CreateRootIfNeededL create root"); - myRootNode = iPresRulesDoc->CreateRootL(); - DP_SDA("CreateRootIfNeededL create root pushL"); - CleanupStack::PushL( myRootNode ); - myRootNode->SetNameL( KPresenceRuleset ); - DP_SDA("CPresencePluginXdmPresRules::CreateRootIfNeededL create root POP"); - CleanupStack::Pop( myRootNode ); - DP_SDA("CPresencePluginXdmPresRules::CreateRootIfNeededL create root end"); - } - -void CPresencePluginXdmPresRules::ResetAndDestroy1( TAny* aPointerArray ) - { - if ( aPointerArray ) - { - RPointerArray* array = - static_cast*>( aPointerArray ); - array->ResetAndDestroy(); - array->Close(); - } - } - -void CPresencePluginXdmPresRules::ResetAndDestroy2( TAny* aPointerArray ) - { - if ( aPointerArray ) - { - RPointerArray* array = - static_cast*>( aPointerArray ); - array->ResetAndDestroy(); - array->Close(); - } - } -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::SearchListUnderParentL -// --------------------------------------------------------------------------- -// -CXdmDocumentNode* CPresencePluginXdmPresRules::SearchListUnderParentL( - CXdmDocumentNode* aParent, - const TDesC& aName ) - { - DP_SDA("CPresencePluginXdmPresRules::SearchListUnderParentL"); - - using namespace NPresencePlugin::NPresence; - - if ( !aParent ) - { - DP_SDA("CPresencePluginXdmPresRules::SearchListUnderParentL return NULL"); - return NULL; - } - - RPointerArray resultArray; - RPointerArray attributeArray; - - CleanupClosePushL( resultArray ); // <<< resultArray - CleanupClosePushL( attributeArray ); // <<< attributeArray - - SXdmAttribute16 attr; - attr.iName.Set( KPresenceId ); - attr.iValue.Set( aName ); - attributeArray.AppendL( &attr ); - - CXdmDocumentNode* currNode = NULL; - - aParent->Find( KPresenceRule, resultArray, attributeArray ); - - TInt count = resultArray.Count(); - DP_SDA2("SearchListUnderParentL node count %d",count); - for ( TInt i=0; i < count; i++ ) - { - currNode = resultArray[i]; - CXdmDocumentNode* parent = currNode->Parent(); - if ( parent == aParent ) - { - DP_SDA("SearchListUnderParentL parent MATCH"); - break; - } - currNode = NULL; - } - - CleanupStack::PopAndDestroy(); // clItem - CleanupStack::PopAndDestroy(); // clItem2 - DP_SDA("CPresencePluginXdmPresRules::SearchListUnderParentL return"); - return currNode; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginXdmPresRules::SearchListUnderParentL -// --------------------------------------------------------------------------- -// -TBool CPresencePluginXdmPresRules::CompareUriWithoutPrefixL( - const TDesC& aUri, const TDesC& aAttribute ) - { - DP_SDA("CPresencePluginXdmPresRules::CompareUriWithoutPrefixL"); - - TBool match( EFalse ); - - RBuf uriWithoutPrefix; - CleanupClosePushL( uriWithoutPrefix ); - uriWithoutPrefix.CreateL( aUri ); - TInt prefixLocation = uriWithoutPrefix.Locate( ':' ); - - if ( KErrNotFound != prefixLocation ) - { - uriWithoutPrefix.Delete( 0, ( prefixLocation + 1 ) ); - } - - RBuf attributeWithoutprefix; - CleanupClosePushL( attributeWithoutprefix ); - attributeWithoutprefix.CreateL( aAttribute ); - prefixLocation = attributeWithoutprefix.Locate( ':' ); - - if ( KErrNotFound != prefixLocation ) - { - attributeWithoutprefix.Delete( 0, ( prefixLocation + 1 ) ); - } - - DP_SDA2(" --> uri without prefix=%S", &uriWithoutPrefix ); - DP_SDA2(" --> attribute without prefix=%S", &attributeWithoutprefix ); - - if ( uriWithoutPrefix.Compare( attributeWithoutprefix ) == 0 ) - { - match = ETrue; - } - - CleanupStack::PopAndDestroy( &attributeWithoutprefix ); - CleanupStack::PopAndDestroy( &uriWithoutPrefix ); - - return match; - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presencepluginxdmutils.cpp --- a/simpledatamodeladapter/src/presencepluginxdmutils.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1687 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include //for TPresSettingsSet -#include -#include -#include - -#include "presencepluginxdmpresrules.h" -#include "mpresencepluginconnectionobs.h" -#include "presenceplugincommon.h" -#include "presencepluginxdmutils.h" -#include "presencepluginvirtualgroup.h" -#include "presencepluginauthorization.h" -#include "presenceplugindata.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::CPresencePluginXdmUtils() -// --------------------------------------------------------------------------- -// -CPresencePluginXdmUtils::CPresencePluginXdmUtils( - MPresencePluginConnectionObs& aObs , TInt aXmdId, TBool aLocalmode ) - : CActive( CActive::EPriorityStandard ), - iConnObs(aObs), iSettingsId(aXmdId), - iXdmState(EStateIdle), iOperation( ENoOperation ), - iPresXdmOk( EFalse ), iXdmOk( EFalse ), - iRulesUpdateState(EStateNoOperation), iLocalMode( aLocalmode ) - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::ConstructL( ) - { - - //If we are in normalmode we need presence rules too - if ( !iLocalMode ) - { - DP_SDA("CPresencePluginXdmUtils::ConstructL NormalMode"); - iXdmPresRules = CPresencePluginXdmPresRules::NewL( - iSettingsId, EFalse ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginXdmUtils* CPresencePluginXdmUtils::NewL( - MPresencePluginConnectionObs& aObs, TInt aXmdId, TBool aLocalmode ) - { - CPresencePluginXdmUtils* self = - new( ELeave ) CPresencePluginXdmUtils( aObs, aXmdId, aLocalmode ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::~CPresencePluginXdmUtils() -// --------------------------------------------------------------------------- -// -CPresencePluginXdmUtils::~CPresencePluginXdmUtils() - { - DP_SDA("CPresencePluginXdmUtils::~CPresencePluginXdmUtils"); - if ( iXdmDoc ) - { - DP_SDA("CPresencePluginXdmUtils::~CPresencePluginXdmUtils 1"); - if (iXdmEngine) - { - DP_SDA("CPresencePluginXdmUtils::~CPresencePluginXdmUtils del doc"); - TRAP_IGNORE( iXdmEngine->DeleteDocumentModelL( iXdmDoc )); - } - } - - DP_SDA("CPresencePluginXdmUtils::~CPresencePluginXdmUtils 3"); - delete iXdmEngine; - iXdmEngine = NULL; - - - DP_SDA("CPresencePluginXdmUtils::~CPresencePluginXdmUtils 4"); - delete iXdmPresRules; - iXdmPresRules = NULL; - - - DP_SDA("CPresencePluginXdmUtils::~CPresencePluginXdmUtils 5"); - delete iEntityUri; - iEntityUri = NULL; - - iBlockedContacts.ResetAndDestroy(); - - DP_SDA("CPresencePluginXdmUtils::~CPresencePluginXdmUtils end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::InitializeXdmL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::InitializeXdmL( TRequestStatus& aStatus ) - { - DP_SDA("CPresencePluginXdmUtils::InitializeXdmL"); - - aStatus = KRequestPending; - iClientStatus = &aStatus; - - // if resource-list not ready - if ( !iXdmOk ) - { - DP_SDA("CPresencePluginXdmUtils::InitializeXdmL !iXdmOk"); - if ( !iLocalMode ) - { - DP_SDA("CPresencePluginXdmUtils::InitializeXdmL NormalMode"); - GetXdmListsL( ETrue, EFalse ); - } - else - { - DP_SDA("CPresencePluginXdmUtils::InitializeXdmL LocalMode"); - GetXdmListsL( ETrue, ETrue ); - } - } - else if ( !iPresXdmOk && !iLocalMode ) - { - DP_SDA("CPresencePluginXdmUtils::InitializeXdmL !iPresXdmOk"); - GetXdmRulesL(); - } - else - { - DP_SDA("CPresencePluginXdmUtils::InitializeXdmL All is OK "); - // All is ok - DP_SDA("CPresencePluginXdmUtils::InitializeXdmL SEND COMPLETE") - CompleteClientReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::InitializeXdmL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::InitializePresRulesL( ) - { - DP_SDA("CPresencePluginXdmUtils:: MakeInitialRules"); - iXdmState = ECreateXdmRules; - iRulesUpdateState = EStateInitializeRules; - iXdmPresRules->MakeInitialRulesDocumentL( this ); - UpdateXdmRulesL(); - DP_SDA("CPresencePluginXdmUtils:: MakeInitialRules done"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::GetXdmRulesL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::GetXdmRulesL() - { - DP_SDA("CPresencePluginXdmUtils:: GetXdmRulesL"); - - if ( !iXdmPresRules ) - { - // get data from a network if not done so yet - if ( !iLocalMode ) - { - iXdmPresRules = CPresencePluginXdmPresRules::NewL( - iSettingsId, EFalse ); - } - else - { - /*localmode*/ - //iXdmPresRules - //= CPresencePluginXdmPresRules::NewL( iSettingsId, ETrue ); - } - } - - if( !iLocalMode && iXdmPresRules ) - { - User::LeaveIfError( iXdmPresRules->UpdateFromServerL( this )); - } - iXdmState = EGetXdmRules; - DP_SDA("CPresencePluginXdmUtils:: GetXdmRulesL done"); - DP_SDA("CPresencePluginXdmUtils::GetXdmRulesL - add buddies to virtual"); - AddIdentityToVirtualListL( KPresenceBuddyList ); - - DP_SDA("CPresencePluginXdmUtils::GetXdmRulesL - add blocked to virtual"); - AddIdentityToVirtualListL( KPresenceBlockedList ); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::InitializeXdmsOnlyL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::InitializeXdmsOnlyL( TRequestStatus& aStatus ) - { - DP_SDA("CPresencePluginXdmUtils::InitializeXdmsOnlyL"); - aStatus = KRequestPending; - iClientStatus = &aStatus; - - if ( !iXdmOk ) - { - DP_SDA("CPresencePluginXdmUtils::InitializeXdmsOnlyL 1"); - GetXdmListsL( EFalse, EFalse ); - } - else - { - DP_SDA("CPresencePluginXdmUtils::InitializeXdmsOnlyL all ok"); - // All is ok - DP_SDA("CPresencePluginXdmUtils::InitializeXdmsOnlyL SEND COMPLETE") - CompleteClientReq( KErrNone ); - } - DP_SDA("CPresencePluginXdmUtils::InitializeXdmsOnlyL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::CheckXdmDoc() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginXdmUtils::CheckXdmDoc() - { - DP_SDA("CPresencePluginXdmUtils::CheckXdmDoc"); - - if ( iXdmDoc ) - { - CXdmDocumentNode* root = iXdmDoc->DocumentRoot(); - DP_SDA("CPresencePluginXdmUtils::CheckXdmDoc2"); - if( root ) - { - TInt count = root->NodeCount(); - DP_SDA2("CPresencePluginXdmUtils::CheckXdmDoc count %d", count); - if ( !count ) - { - DP_SDA("CPresencePluginXdmUtils::CheckXdmDoc NotFound"); - iXdmOk = EFalse; - } - else - { - DP_SDA("CPresencePluginXdmUtils::CheckXdmDoc file ok"); - iXdmOk = ETrue; - } - } - } - else - { - DP_SDA("CPresencePluginXdmUtils::CheckXdmDoc file False"); - iXdmOk = EFalse; - } - - return iXdmOk; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::CheckIfError -// --------------------------------------------------------------------------- -// -TInt CPresencePluginXdmUtils::CheckIfErrorL( TInt aMyStatus ) - { - TInt myStatus = aMyStatus; - DP_SDA2("CPresencePluginXdmUtils::CheckIfError ErrorCode %d ", myStatus); - if ( myStatus == KErrTimedOut ) - { - DP_SDA("CPresencePluginXdmUtils::CheckIfError TimeOut error"); - myStatus = KErrTimedOut; - User::Leave( KErrTimedOut ); - } - else if ( myStatus == KErrCouldNotConnect || - myStatus == KXcapErrorNetworkNotAvailabe ) - { - DP_SDA("CheckIfError KErrCouldNotConnect error"); - myStatus = aMyStatus; - } - else if ( myStatus == KXcapErrorHttpNotFound ) - { - DP_SDA("CheckIfError KXcapErrorHttpNotFound"); - myStatus = aMyStatus; - } - else if ( myStatus == KXcapErrorAuthentication ) - { - DP_SDA("CPresencePluginXdmUtils::CheckIfError auth error"); - myStatus = aMyStatus; - } - else if ( myStatus == KXcapErrorTooManyOccurencies ) - { - DP_SDA("CPresencePluginXdmUtils KXcapErrorTooManyOccurencies"); - myStatus = 0; - } - else if( myStatus == KErrDisconnected ) - { - myStatus = aMyStatus; - User::Leave( KErrCancel ); - } - else if( myStatus == KXcapErrorHttpPrecondFailed ) - { - DP_SDA("CheckIfError KXcapErrorHttpPrecondFailed"); - myStatus = aMyStatus; - } - else if ( KErrNoMemory == myStatus ) - { - DP_SDA("CheckIfError KErrNoMemory"); - User::Leave( KErrNoMemory ); - } - else - { - DP_SDA("CPresencePluginXdmUtils::CheckIfError ERROR"); - myStatus = aMyStatus; - } - return myStatus; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::RunL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::RunL( ) - { - DP_SDA("CPresencePluginXdmUtils::RunL"); - TPluginXdmState origState = iXdmState; - iXdmState = EStateIdle; - TInt myStatus = iStatus.Int(); - - DP_SDA2("CPresencePluginXdmUtils::RunL mystatus %d ", myStatus); - DP_SDA2("CPresencePluginXdmUtils::RunL state %d ", origState); - DP_SDA2("CPresencePluginXdmUtils:: ClientStatus %d",iClientStatus->Int() ); - - if ( myStatus == KErrCancel ) - { - DP_SDA("CPresencePluginXdmUtils::RunL CANCEL SEND COMPLETE") - CompleteClientReq( KErrCancel ); - } - - switch ( origState ) - { - case EGetXdmLists: - case EGetXdmListsOnly: - { - DoGetXdmListsL( myStatus, origState ); - } - break; - - case ECreateXdmLists: - { - DoCreateXdmListsL( myStatus, origState, EFalse ); - } - break; - - case ECreateXdmListsOnly: - { - DoCreateXdmListsL( myStatus, origState, ETrue ); - } - break; - - case EGetXdmBlockList: - { - DP_SDA("RunL EGetXdmBlockList SEND COMPLETE"); - CompleteClientReq( KErrNone ); - } - break; - - case EUpdateXdmList: - { - DoUpdateXdmListsL( myStatus, origState ); - } - break; - - case EUpdateBlockedContactPresenceCache: - DoUpdateBlockedContactPresenceCacheL( myStatus ); - break; - - default: - { - DP_SDA("CPresencePluginXdmUtils::RunL last else"); - //check myStatus error - myStatus = CheckIfErrorL( myStatus ); - - if ( myStatus ) - { - // complete reqular request - DP_SDA("CPresencePluginXdmUtils::RunL SEND LAST COMPLETE"); - CompleteClientReq( myStatus ); - } - DP_SDA("CPresencePluginXdmUtils::RunL default end") - } - break; - - } - DP_SDA("CPresencePluginXdmUtils::RunL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoUpdateXdmLists() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::DoUpdateXdmListsL( - TInt aMyStatus, - TPluginXdmState /*aOrigState*/) - { - DP_SDA("CPresencePluginXdmUtils::DoUpdateXdmLists EUpdateXdmList"); - if ( !iLocalMode ) - { - DP_SDA("CPresencePluginXdmUtils::DoUpdateXdmLists updaterules"); - if( aMyStatus ) - { - DP_SDA("DoUpdateXdmLists updaterules error"); - aMyStatus = CheckIfErrorL( aMyStatus ); - CompleteClientReq( aMyStatus ); - } - else - { - DP_SDA("DoUpdateXdmLists updaterules else"); - UpdateXdmRulesL(); - } - } - else - { - DP_SDA("EUpdateXdmList LOCALMODE SEND COMPLETE"); - aMyStatus = CheckIfErrorL( aMyStatus ); - CompleteClientReq( aMyStatus ); - } - iRulesUpdateState = EStateNoOperation; - DP_SDA("CPresencePluginXdmUtils::DoUpdateXdmLists EUpdateXdmList end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoCreateXdmLists() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::DoCreateXdmListsL( - TInt aMyStatus, - TPluginXdmState /*aOrigState*/, - TBool aOnlyResourceList ) - { - DP_SDA("CPresencePluginXdmUtils::DoCreateXdmListsL ECreateXdmLists"); - //check myStatus error - aMyStatus = CheckIfErrorL( aMyStatus ); - if( !aOnlyResourceList ) - { - if ( aMyStatus ) - { - DP_SDA("DoCreateXdmLists ECreateXdmLists SEND COMPLETE"); - CompleteClientReq( aMyStatus ); - } - else if ( !iLocalMode ) - { - DP_SDA("ECreateXdmLists !myStatus GetXdmRules"); - iXdmOk = ETrue; - GetXdmRulesL(); - } - else if ( iLocalMode ) - { - DP_SDA("DoCreateXdmLists ECreateXdmLists SEND COMPLETE 2"); - iXdmOk = ETrue; - CompleteClientReq( aMyStatus ); - } - } - else - { - //check myStatus error - aMyStatus = CheckIfErrorL( aMyStatus ); - if ( aMyStatus == KErrTimedOut ) - { - DP_SDA("DoCreateXdmLists EGetXdmListsOnly 1"); - aMyStatus = 0; - } - if ( !aMyStatus ) - { - DP_SDA("DoCreateXdmLists EGetXdmListsOnly 2"); - iXdmOk = ETrue; - } - - if( !(KXcapErrorNetworkNotAvailabe == aMyStatus || - KErrCouldNotConnect == aMyStatus ) ) - { - DP_SDA("DoCreateXdmLists EGetXdmListsOnly SEND COMPLETE"); - CompleteClientReq( aMyStatus ); - } - } - DP_SDA("CPresencePluginXdmUtils::DoCreateXdmListsL ECreateXdmLists end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoGetXdmLists() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::DoGetXdmListsL( - TInt aMyStatus, - TPluginXdmState aOrigState ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetXdmLists EGetXdmLists"); - //check myStatus error - aMyStatus = CheckIfErrorL( aMyStatus ); - - if ( aMyStatus )//Check is file includes nodes - { - DP_SDA("CPresencePluginXdmUtils::DoGetXdmLists CreateXDM"); - // no resource-list, let's start to create it. - CreateXdmListsL( ETrue ); - } - else - { - DP_SDA("CPresencePluginXdmUtils::DoGetXdmLists EGetXdmLists else"); - if( iLocalMode ) - { - //Check if document empty - TBool empty = CheckXdmDoc(); - if( !empty ) - { - CreateXdmListsL( ETrue ); - } - else - { - iXdmOk = ETrue; - DP_SDA("DoGetXdmLists Localmode SEND COMPLETE"); - CompleteClientReq( KErrNone ); - } - } - else - { - iXdmOk = ETrue; - if ( !iPresXdmOk && !iLocalMode && aOrigState == EGetXdmLists ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetXdmLists GetXDM"); - GetXdmRulesL(); - } - else - { - DP_SDA("CPresencePluginXdmUtils::DoGetXdmLists SEND COMPLETE"); - CompleteClientReq( KErrNone ); - } - } - } - DP_SDA("CPresencePluginXdmUtils::DoGetXdmLists end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoCancel() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::DoCancel( ) - { - DP_SDA("CPresencePluginXdmUtils::DoCancel"); - iOperation = EXdmCancel; - - if ( iXdmState == EGetXdmLists || iXdmState == ECreateXdmLists || - iXdmState == EUpdateXdmRules || iXdmState == EUpdateXdmList || - iXdmState == EGetXdmBlockList || iXdmState == ECreateXdmRules || - iXdmState == ESubsBlockList || - iXdmState == EGetResourceListFromServer || - iXdmState == EGetXdmListsOnly || iXdmState == ECreateXdmListsOnly ) - { - DP_SDA("CPresencePluginXdmUtils::DoCancel list get or create"); - iXdmState = ECancelDocument; - iXdmEngine->CancelUpdate( iXdmDoc ); - // cancel presrules too - iXdmPresRules->Cancel(); - } - else - { - iStatus = KRequestPending; - TRequestStatus* s= &iStatus; - DP_SDA("CPresencePluginXdmUtils::DoCancel SEND COMPLETE"); - User::RequestComplete( s, KErrCancel ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::RunError() -// --------------------------------------------------------------------------- -// -TInt CPresencePluginXdmUtils::RunError( TInt aError ) - { - DP_SDA("CPresencePluginXdmUtils::RunError"); - // complete the open request - CompleteClientReq( aError ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::AddEntityToGrantedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::AddEntityToGrantedL( - const TDesC& aUri, - TRequestStatus& aStatus ) - { - DP_SDA("CPresencePluginXdmUtils::AddEntityToGrantedL"); - DP_SDA2("CPresencePluginXdmUtils::AddEntityToGrantedL, uri: %S", &aUri ); - - TRAPD( err, iEntityUri = aUri.AllocL() ); - DP_SDA2(" AddEntityToGrantedL, uri alloc err: %d", err ); - - //Add entity to virtualGroup - iConnObs.SubscribedContacts()->AddEntityL( iEntityUri->Des() ); - - if ( !err ) - { - DP_SDA("CPresencePluginXdmUtils::AddEntityToGrantedL !err"); - iXdmState = EUpdateXdmList; - iClientStatus = &aStatus; - iOperation = EXdmAddUserToGroup; - iRulesUpdateState = EStateAddToWhiteList; - - //add user to resouce-list list - DoAddUserToListL( KPresenceBuddyList, aUri ); - DP_SDA("CPresencePluginXdmUtils::AddEntityToGrantedL 1"); - UpdateXdmsL(); - - *iClientStatus = KRequestPending; - DP_SDA("CPresencePluginXdmUtils::AddEntityToGrantedL end"); - } - else - { - DP_SDA("AddEntityToGrantedL else error SEND COMPLETE"); - //If error we can complete request - CompleteClientReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::AddEntityToBlockedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::AddEntityToBlockedL( - const TDesC& aUri, - TRequestStatus& aStatus ) - { - DP_SDA("CPresencePluginXdmUtils::AddEntityToBlockedL"); - iClientStatus = &aStatus; - - if( iLocalMode ) - { - //Block is not used in localmode - DP_SDA("AddEntityToBlockedL localmode rules not support"); - CompleteClientReq( KErrNotSupported ); - } - else - { - DP_SDA("CPresencePluginXdmUtils::AddEntityToBlockedL !localmode"); - TRAPD(err, iEntityUri = aUri.AllocL() ); - //Remove entity form subscribed virtual group - iConnObs.SubscribedContacts()->RemoveEntityL( iEntityUri->Des() ); - - if ( !err ) - { - DP_SDA("CPresencePluginXdmUtils::AddEntityToBlockedL no error"); - iXdmState = EUpdateXdmList; - iOperation = EXdmAddUserToGroup; - iRulesUpdateState = EStateAddToBlockList; - - DoAddUserToListL( KPresenceBlockedList, aUri ); - UpdateXdmsL(); - - *iClientStatus = KRequestPending; - DP_SDA("CPresencePluginXdmUtils::AddEntityToBlockedL ready"); - } - else - { - //If error we can complete request - DP_SDA("AddEntityToBlockedL SEND COMPLETE"); - CompleteClientReq( KErrNone ); - } - } - DP_SDA("CPresencePluginXdmUtils::AddEntityToBlockedL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoAddUserToListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::DoAddUserToListL( - const TDesC& aList, - const TDesC& aUri ) - { - DP_SDA("CPresencePluginXdmUtils::DoAddUserToListL"); - DP_SDA2("CPresencePluginXdmUtils::DoAddUserToListL aList: %S", &aList); - DP_SDA2("CPresencePluginXdmUtils::DoAddUserToListL aUri: %S", &aUri); - - using namespace NPresencePlugin::NPresence; - - CXdmDocumentNode* root = iXdmDoc->DocumentRoot(); - CXdmDocumentNode* foundNode = SearchListUnderParentL( root, aList ); - - if ( foundNode ) - { - DP_SDA("CPresencePluginXdmUtils::DoAddUserToListL found"); - if ( !CheckIfEnityExistL( aList, aUri ) ) - { - DP_SDA("DoAddUserToListL entity not exist"); - if ( foundNode->IsEmptyNode() ) - { - DP_SDA("DoAddUserToListL IsEmptyNode"); - foundNode->SetEmptyNode( EFalse ); - } - - DP_SDA("CPresencePluginXdmUtils::DoAddUserToListL newNode"); - CXdmDocumentNode* newNode = - foundNode->CreateChileNodeL( KPresenceEntry ); - DP_SDA("DoAddUserToListL entry attribute"); - CXdmNodeAttribute* attributeEntryUri = - newNode->CreateAttributeL( KPresenceUri ); - DP_SDA("CPresencePluginXdmUtils::DoAddUserToListL set entry"); - attributeEntryUri->SetAttributeValueL( aUri ); - DP_SDA("CPresencePluginXdmUtils::DoAddUserToListL Append"); - iXdmDoc->AppendL( ); - } - } - else - { - DP_SDA("CPresencePluginXdmUtils::DoAddUserToListL leave"); - User::Leave( KErrNotFound ); - } - DP_SDA("CPresencePluginXdmUtils::DoAddUserToListL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::CheckIfEnityExistL -// --------------------------------------------------------------------------- -// -TBool CPresencePluginXdmUtils::CheckIfEnityExistL( - const TDesC& aList, - const TDesC& aUri ) - { - DP_SDA("CPresencePluginXdmUtils::CheckIfEnityExist"); - - using namespace NPresencePlugin::NPresence; - - CXdmNodeAttribute* attr = NULL; - RPointerArray nodes; - CleanupClosePushL( nodes ); - TBool state( EFalse ); - - CXdmDocumentNode* root = iXdmDoc->DocumentRoot(); - CXdmDocumentNode* foundNode = SearchListUnderParentL( root, aList ); - - if ( foundNode ) - { - DP_SDA("CPresencePluginXdmUtils::CheckIfEnityExist check nodes"); - TInt findErr = foundNode->Find( KPresenceEntry, nodes ); - DP_SDA2("CheckIfEnityExist - findErr: %d", findErr ); - - if ( findErr ) - { - DP_SDA("CheckIfEnityExist Enity not exist "); - state = EFalse; - } - else - { - DP_SDA("CPresencePluginXdmUtils::CheckIfEnityExist Else"); - TInt nodeCount = nodes.Count(); - for ( TInt i = 0; i < nodeCount; i++ ) - { - CXdmDocumentNode* currNode = nodes[i]; - attr = ( currNode )->Attribute( KPresenceUri ); - - TBool uriMatch( EFalse ); - uriMatch = CompareUriWithoutPrefixL( - aUri, attr->AttributeValue() ); - - if ( attr && uriMatch ) - { - DP_SDA("CheckIfEnityExist entity exists"); - //Enity is exist - state = ETrue; - break; - } - } - } - } - DP_SDA("CPresencePluginXdmUtils::CheckIfEnityExist Destroy nodes"); - CleanupStack::PopAndDestroy( &nodes ); // >>> nodes - return state; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::SearchListUnderParentL -// --------------------------------------------------------------------------- -// -CXdmDocumentNode* CPresencePluginXdmUtils::SearchListUnderParentL( - CXdmDocumentNode* aParent, - const TDesC& aName ) - { - DP_SDA("CPresencePluginXdmUtils::SearchListUnderParentL"); - - using namespace NPresencePlugin::NPresence; - - if ( !aParent ) - { - DP_SDA("CPresencePluginXdmUtils::SearchListUnderParentL return NULL"); - return NULL; - } - - RPointerArray resultArray; - RPointerArray attributeArray; - - CleanupClosePushL( resultArray ); // <<< resultArray - CleanupClosePushL( attributeArray ); // <<< attributeArray - - SXdmAttribute16 attr; - attr.iName.Set( KPresenceName ); - attr.iValue.Set( aName ); - attributeArray.AppendL( &attr ); - - CXdmDocumentNode* currNode = NULL; - - aParent->Find( KPresenceList, resultArray, attributeArray ); - - TInt count = resultArray.Count(); - DP_SDA2("SearchListUnderParentL node count %d",count); - for ( TInt i=0; i < count; i++ ) - { - currNode = resultArray[i]; - CXdmDocumentNode* parent = currNode->Parent(); - if ( parent == aParent ) - { - DP_SDA("SearchListUnderParentL parent MATCH"); - break; - } - currNode = NULL; - } - - CleanupStack::PopAndDestroy( &attributeArray); // >>> attributeArray - CleanupStack::PopAndDestroy( &resultArray ); // >>> resultArray - DP_SDA("CPresencePluginXdmUtils::SearchListUnderParentL return"); - return currNode; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::RemoveEntityFromGrantedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::RemoveEntityFromGrantedL( - const TDesC& aUri, - TRequestStatus& aStatus ) - { - DP_SDA("CPresencePluginXdmUtils::RemoveEntityFromGrantedL"); - - iEntityUri = aUri.AllocL(); - iConnObs.SubscribedContacts()->RemoveEntityL( iEntityUri->Des() ); - - iClientStatus = &aStatus; - *iClientStatus = KRequestPending; - - iRulesUpdateState = EStateRemoveFromWhiteList; - iOperation = EXdmRemoveUserFromGroup; - - TRAPD( err, DoRemoveUserFromListL( KPresenceBuddyList, aUri ) ); - - if ( !err ) - { - // send to the server and start wait a response - UpdateXdmsL(); - iXdmState = EUpdateXdmList; - } - else - { - //complete request with error - DP_SDA2( "RemoveEntityFromGrantedL -DoRemoveUserFromListL error = %d", err ); - CompleteClientReq( err ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::RemoveEntityFromBlockedL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::RemoveEntityFromBlockedL( - const TDesC& aUri, - TRequestStatus& aStatus ) - { - DP_SDA("CPresencePluginXdmUtils::RemoveEntityFromBlockedL"); - TRAPD(err, iEntityUri = aUri.AllocL() ); - - if ( !err ) - { - iClientStatus = &aStatus; - iRulesUpdateState = EStateRemoveFromBlackList; - iOperation = EXdmRemoveUserFromGroup; - - DoRemoveUserFromListL( KPresenceBlockedList, aUri ); - // send to the server and start wait a response - UpdateXdmsL(); - iXdmState = EUpdateXdmList; - *iClientStatus = KRequestPending; - } - else - { - //If error we can complete request - DP_SDA("RemoveEntityFromBlockedL SEND COMPLETE"); - CompleteClientReq( KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoRemoveUserFromListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::DoRemoveUserFromListL( - const TDesC& aList, - const TDesC& aUri ) - { - DP_SDA("CPresencePluginXdmUtils::DoRemoveUserFromListL"); - CXdmNodeAttribute* attr = NULL; - - using namespace NPresencePlugin::NPresence; - - RPointerArray lists; - CleanupClosePushL( lists ); - - RPointerArray nodes; - CleanupClosePushL( nodes ); - - CXdmDocumentNode* root = iXdmDoc->DocumentRoot(); - CXdmDocumentNode* foundNode = SearchListUnderParentL( root, aList ); - if ( foundNode ) - { - DP_SDA("CPresencePluginXdmUtils::DoRemoveUserFromListL Node Found"); - User::LeaveIfError( foundNode->Find( KPresenceEntry, nodes )); - TInt nodeCount = nodes.Count(); - for ( TInt i = 0; i < nodeCount; i++ ) - { - CXdmDocumentNode* currNode = nodes[i]; - attr = ( currNode )->Attribute( KPresenceUri ); - - TBool uriMatch( EFalse ); - uriMatch = CompareUriWithoutPrefixL( - aUri, attr->AttributeValue() ); - - if ( attr && uriMatch ) - { - DP_SDA(" DoRemoveUserFromListL Node Found, do delete"); - - // This is the user we are looking for deletion. - //First remove currNode form model - iXdmDoc->RemoveFromModelL( currNode ); - // Update model to server - iXdmDoc->AppendL(); - break; - } - } - } - else - { - DP_SDA("CPresencePluginXdmUtils::DoRemoveUserFromListL Leave"); - User::Leave( KErrNotFound ); - } - - CleanupStack::PopAndDestroy( &nodes ); // >>> nodes - CleanupStack::PopAndDestroy( &lists ); // >>> lists - DP_SDA("CPresencePluginXdmUtils::DoRemoveUserFromListL END"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::SubscribeBuddyListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::SubscribeBuddyListL( - RPointerArray& aMembers ) - { - DP_SDA("CPresencePluginXdmUtils::SubscribeBuddyListL"); - - iOperation = EXdmGetBuddyList; - DoGetListMembersL( KPresenceBuddyList, aMembers ); - - DP_SDA("CPresencePluginXdmUtils::SubscribeBuddyListL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::SubscribeBlockListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::SubscribeBlockListL( - RPointerArray& aMembers ) - { - DP_SDA("CPresencePluginXdmUtils::SubscribeBlockListL"); - - if ( !iLocalMode ) - { - DP_SDA("CPresencePluginXdmUtils::SubscribeBlockListL !iLocalMode"); - iOperation = EXdmGetBlockedList; - DoGetListMembersL( KPresenceBlockedList, aMembers ); - } - DP_SDA("CPresencePluginXdmUtils::SubscribeBlockListL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoGetListMembersL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::DoGetListMembersL( - const TDesC& aList, - RPointerArray& aMembers ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetListMembersL"); - using namespace NPresencePlugin::NPresence; - - aMembers.Reset(); - - RPointerArray nodes; - CleanupClosePushL( nodes ); - - CXdmDocumentNode* listNode = NULL; - CXdmNodeAttribute* attr = NULL; - - TBool found(EFalse); - - if ( iXdmDoc ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetListMembersL iXdmDoc"); - User::LeaveIfError( iXdmDoc->Find( KPresenceList, nodes ) ); - DP_SDA("CPresencePluginXdmUtils::DoGetListMembersL find ready"); - TInt count = nodes.Count(); - DP_SDA2("DoGetListMembersL find Count %d", count); - for ( TInt i=0; i < count; i++ ) - { - listNode = nodes[i]; - attr = listNode->Attribute( KPresenceName ); - if ( attr && !attr->AttributeValue().CompareF( aList )) - { - // That's the right list - DP_SDA("DoGetListMembersL Target found"); - found = ETrue; - break; - } - } - } - - if ( found ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetListMembersL found"); - MXIMPObjectFactory& myFactory = iConnObs.ObjectFactory(); - nodes.Reset(); - TInt err = listNode->Find( KPresenceEntry, nodes ); - DP_SDA2("CPresencePluginXdmUtils::DoGetListMembersL err %d", err); - if( !err ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetListMembersL Entry found"); - TInt nodeCount = nodes.Count(); - for ( TInt i = 0; i < nodeCount; i++ ) - { - attr = (nodes[i])->Attribute( KPresenceUri ); - if ( attr ) - { - DP_SDA("DoGetListMembersL attr check"); - MXIMPIdentity* entity = - myFactory.NewIdentityLC(); // << entity - entity->SetIdentityL( attr->AttributeValue() ); - aMembers.AppendL( entity ); - CleanupStack::Pop(); // >> entity - } - } - } - } - CleanupStack::PopAndDestroy( &nodes ); - DP_SDA("CPresencePluginXdmUtils::DoGetListMembersL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::GetXdmListsL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::GetXdmListsL( - TBool aCreateRules, - TBool aLocalMode ) - { - DP_SDA("CPresencePluginXdmUtils::GetXdmListsL"); - //Normal Mode start - if ( !iXdmEngine && !aLocalMode ) - { - DP_SDA2("!iXdmEngine settingID = %d", iSettingsId); - -#ifdef _DEBUG - //Get xdmSettings - HBufC* accesPoint = TXdmSettingsApi::PropertyL( - iSettingsId, EXdmPropToNapId ); - CleanupStack::PushL( accesPoint ); - DP_SDA2("CPresencePluginXdmUtils::GetXdmListsL accesPoint %S", - accesPoint); -#endif - - // get data from a network if not done so yet - CXdmProtocolInfo* info = CXdmProtocolInfo::NewL( iSettingsId ); - CleanupStack::PushL( info ); - - // Notice: we do not use cache for XDM - info->SetCacheUsage( EFalse ); //False in normal case - - iXdmEngine = CXdmEngine::NewL( *info ); - CleanupStack::PopAndDestroy( info ); -#ifdef _DEBUG - CleanupStack::PopAndDestroy( accesPoint ); -#endif - } - //LocalMode Start, !!! THERE IS LIMIT !!! - //Only one settings can use localmode - else if ( !iXdmEngine && aLocalMode ) - { - DP_SDA("CPresencePluginXdmUtils::GetXdmListsL aLocalMode"); - CXdmProtocolInfo* info = - CXdmProtocolInfo::NewL( 0, KLocalProtocol, KNullDesC ); - CleanupStack::PushL( info ); - - iXdmEngine = CXdmEngine::NewL( *info ); - CleanupStack::PopAndDestroy( info ); - DP_SDA("CPresencePluginXdmUtils::GetXdmListsL aLocalMode end"); - } - if ( !iXdmOk ) - { - DP_SDA("CPresencePluginXdmUtils::GetXdmListsL !XdmOK "); - using namespace NPresencePlugin::NPresence; - // Get data from network - DP_SDA("GetXdmListsL Create Document Model "); - - iXdmDoc = iXdmEngine->CreateDocumentModelL( - KPresenceResourceList, EXdmResourceLists ); - - - DP_SDA("Create Document Model FetchData"); - iXdmDoc->FetchDataL(); - DP_SDA("CPresencePluginXdmUtils::GetXdmListsL !XdmOK SETACTIVE "); - UpdateXdmsL(); - iXdmState = aCreateRules ? EGetXdmLists : EGetXdmListsOnly; - DP_SDA("CPresencePluginXdmUtils::GetXdmListsL !XdmOK END"); - } - else - { - DP_SDA("CPresencePluginXdmUtils::GetXdmListsL else"); - // Document already exists, no need to search from a server - iStatus = KRequestPending; - TRequestStatus* s= &iStatus; - DP_SDA("CPresencePluginXdmUtils::GetXdmListsL SEND COMPLETE"); - User::RequestComplete( s, KErrNone ); - iXdmState = aCreateRules ? EGetXdmLists : EGetXdmListsOnly; - SetActive(); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::CreateXdmListsL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::CreateXdmListsL( TBool aCreateRules ) - { - DP_SDA("CPresencePluginXdmUtils::CreateXdmListsL"); - - CXdmDocumentNode* root = iXdmDoc->CreateRootL(); - CleanupStack::PushL( root ); - - using namespace NPresencePlugin::NPresence; - root->SetNameL( KPresenceResourceLists ); - - // add all the list nodes - // buddylist - using namespace NPresencePlugin::NPresence; - if ( root->IsEmptyNode() ) - { - root->SetEmptyNode( EFalse ); - } - //buddy list - CXdmDocumentNode* child1 = root->CreateChileNodeL( KPresenceList ); - CleanupStack::PushL( child1 ); - CXdmNodeAttribute* name = child1->CreateAttributeL( KPresenceName ); - CleanupStack::PushL( name ); - name->SetAttributeValueL( KPresenceBuddyList ); - - // blockedcontacts - CXdmDocumentNode* child2 = root->CreateChileNodeL( KPresenceList ); - CleanupStack::PushL( child2 ); - CXdmNodeAttribute* name2 = child2->CreateAttributeL( KPresenceName ); - CleanupStack::PushL( name2 ); - name2->SetAttributeValueL( KPresenceBlockedList ); - - // send to the server and start wait a response - iXdmDoc->AppendL(); - UpdateXdmsL(); - iXdmState = aCreateRules ? ECreateXdmLists : ECreateXdmListsOnly; - - CleanupStack::Pop( name2 ); - CleanupStack::Pop( child2 ); - CleanupStack::Pop( name ); - CleanupStack::Pop( child1 ); - CleanupStack::Pop( root ); - DP_SDA("CPresencePluginXdmUtils::CreateXdmListsL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::GetEntitiesInListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::GetEntitiesInListL( - const TDesC& aList, - MXIMPObjectCollection& aColl ) - { - DP_SDA("CPresencePluginXdmUtils::GetEntitiesInListL "); - using namespace NPresencePlugin::NPresence; - - CXdmDocumentNode* buddylist = DoGetBuddyListL( aList ); - - // make a collection of MXIMPPresentityGroupMemberInfo - RPointerArray entries; - CleanupClosePushL(entries); // <<< entries - - RPointerArray nodes; - CleanupClosePushL(nodes); // <<< nodes - - buddylist->Find( KPresenceEntry, entries ); - DP_SDA("CPresencePluginXdmUtils::GetEntitiesInListL entries"); - TInt count = entries.Count(); - DP_SDA2("GetEntitiesInListL entries count %d",count); - for ( TInt i=0; i < count; i++ ) - { - DP_SDA("CPresencePluginXdmUtils::GetEntitiesInListL 1"); - // create here MXIMPPresentityGroupMemberInfo - MPresentityGroupMemberInfo* info = - iConnObs.PresenceObjectFactoryOwn(). - NewPresentityGroupMemberInfoLC(); - - // ID - CXdmDocumentNode* entry = entries[i]; - CXdmNodeAttribute* attr = entry->Attribute( KPresenceUri ); - if ( attr ) - { - DP_SDA("CPresencePluginXdmUtils::GetEntitiesInListL 2"); - MXIMPIdentity* id = - iConnObs.ObjectFactory().NewIdentityLC();//<< id - id->SetIdentityL( attr->AttributeValue() ); - info->SetGroupMemberIdL( id ); - CleanupStack::Pop(); // >> id - } - - // Display name - TInt err = entry->Find( KPresenceDisplayName, nodes ); - // Notice: assume there is only one display-name - if ( !err ) - { - DP_SDA("CPresencePluginXdmUtils::GetEntitiesInListL display name"); - CXdmDocumentNode* disName = nodes[0]; - HBufC16* uri16 = NULL; - uri16 = - CnvUtfConverter::ConvertToUnicodeFromUtf8L( - disName->LeafNodeContent() ); - - CleanupStack::PushL( uri16 ); // << uri16 - info->SetGroupMemberDisplayNameL( uri16->Des() ); - CleanupStack::PopAndDestroy( uri16 ); // >> uri16 - } - - DP_SDA("CPresencePluginXdmUtils::GetEntitiesInListL 3"); - aColl.AddObjectL( info ); - - //if contact is from buddylist add it to virtual subscribed list too - if( !aList.CompareF( KPresenceBuddyList ) ) - { - DP_SDA("GetEntitiesInListL add virtualgroup"); - //Add identity to virtual list - iConnObs.SubscribedContacts()->AddEntityL( - info->GroupMemberId().Identity() ); - } - - CleanupStack::Pop(); // >> info - } - - CleanupStack::PopAndDestroy( &nodes ); // >>> nodes - CleanupStack::PopAndDestroy( &entries ); // >>> entries*/ - DP_SDA("CPresencePluginXdmUtils::GetEntitiesInListL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::AddIdentityToVirtualListL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::AddIdentityToVirtualListL( const TDesC& aList ) - { - DP_SDA("CPresencePluginXdmUtils::AddIdentityToVirtualListL "); - using namespace NPresencePlugin::NPresence; - - if ( aList.Compare( KPresenceBlockedList ) == NULL ) - { - iBlockedContacts.ResetAndDestroy(); - } - - CXdmDocumentNode* buddylist = DoGetBuddyListL( aList ); - - // make a collection of MXIMPPresentityGroupMemberInfo - RPointerArray entries; - CleanupClosePushL(entries); // <<< entries - - buddylist->Find( KPresenceEntry, entries ); - DP_SDA("CPresencePluginXdmUtils::AddIdentityToVirtualListL entries"); - TInt count = entries.Count(); - DP_SDA2("AddIdentityToVirtualListL entries count %d",count); - for ( TInt i=0; i < count; i++ ) - { - DP_SDA("CPresencePluginXdmUtils::AddIdentityToVirtualListL 1"); - // ID - CXdmDocumentNode* entry = entries[i]; - CXdmNodeAttribute* attr = entry->Attribute( KPresenceUri ); - if ( attr ) - { - if( !aList.CompareF( KPresenceBuddyList ) ) - { - DP_SDA("AddIdentityToVirtualListL add to buddies"); - //Add identity to virtual list - iConnObs.SubscribedContacts()->AddEntityL( - attr->AttributeValue() ); - } - else if ( !aList.CompareF( KPresenceBlockedList ) ) - { - DP_SDA("AddIdentityToVirtualListL add to blocked"); - HBufC* withoutPrefix = - iConnObs.InternalPresenceAuthorization(). - PluginData().RemovePrefixLC( attr->AttributeValue() ); - CleanupStack::Pop( withoutPrefix ); - iBlockedContacts.AppendL( withoutPrefix ); - } - } - } - CleanupStack::PopAndDestroy( &entries ); // >>> entries - DP_SDA("CPresencePluginXdmUtils::AddIdentityToVirtualListL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoGetBuddyListL() -// --------------------------------------------------------------------------- -// -CXdmDocumentNode* CPresencePluginXdmUtils::DoGetBuddyListL( - const TDesC& aParent ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetBuddyListL"); - CXdmDocumentNode* root = iXdmDoc->DocumentRoot(); - - CXdmDocumentNode* ret = SearchListUnderParentL( root, aParent ); - if ( !ret ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetBuddyListL !found"); - User::Leave( KErrNotFound ); - } - return ret; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoGetUserListL() -// --------------------------------------------------------------------------- -// -CXdmDocumentNode* CPresencePluginXdmUtils::DoGetUserListL( - const TDesC& aList, CXdmDocumentNode* aBuddyList ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetUserListL"); - CXdmDocumentNode* listNode = NULL; - CXdmNodeAttribute* attr = NULL; - TBool found( EFalse ); - - using namespace NPresencePlugin::NPresence; - - RPointerArray lists; - CleanupClosePushL( lists ); - - User::LeaveIfError( aBuddyList->Find( KPresenceEntry, lists )); - TInt count = lists.Count(); - DP_SDA2("CPresencePluginXdmUtils::DoGetUserListL count %d",count); - for ( TInt i=0; i < count; i++ ) - { - listNode = lists[i]; - attr = listNode->Attribute( KPresenceUri ); - if ( attr && !attr->AttributeValue().CompareF( aList )) - { - // List is found - found = ETrue; - break; - } - } - if ( !found ) - { - DP_SDA("CPresencePluginXdmUtils::DoGetUserListL !found"); - User::Leave( KErrNotFound ); - } - - CleanupStack::PopAndDestroy( &lists ); - DP_SDA("CPresencePluginXdmUtils::DoGetUserListL end"); - return listNode; - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::UpdateXdmsL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::UpdateXdmsL() - { - DP_SDA("CPresencePluginXdmUtils::UpdateXdmsL"); - iXdmEngine->UpdateL( iXdmDoc, iStatus ); - if ( !IsActive() ) - { - DP_SDA("CPresencePluginXdmUtils::UpdateXdmsL SetActive"); - SetActive(); - } - DP_SDA("CPresencePluginXdmUtils::UpdateXdmsL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::UpdateXdmRulesL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::UpdateXdmRulesL() - { - DP_SDA("CPresencePluginXdmUtils::UpdateXdmRulesL"); - iXdmState = EUpdateXdmRules; - - if( iRulesUpdateState == EStateInitializeRules ) - { - User::LeaveIfError( iXdmPresRules->UpdateXdmRulesL( this )); - } - //Add entity to presrules too - if ( iRulesUpdateState == EStateAddToWhiteList ) - { - DP_SDA("EStateAddToWhiteList"); - iXdmPresRules->AddEntityToWhiteListL( - iEntityUri->Des(), this ); - } - if ( iRulesUpdateState == EStateAddToBlockList ) - { - DP_SDA("EStateAddToBlockList"); - iXdmPresRules->AddEntityToBlockedRulesL( - iEntityUri->Des(), this ); - } - if ( iRulesUpdateState == EStateRemoveFromWhiteList) - { - DP_SDA("EStateRemoveFromWhiteList"); - iXdmPresRules->RemoveEntityFromWhiteListL( - iEntityUri->Des(), this ); - } - if ( iRulesUpdateState == EStateRemoveFromBlackList) - { - DP_SDA("EStateRemoveFromBlackList"); - iXdmPresRules->RemoveEntityBlockedRulesL( - iEntityUri->Des(), this ); - } - DP_SDA("CPresencePluginXdmUtils::UpdateXdmRulesL end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoHandlePresUpdateDocumentL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::DoHandlePresUpdateDocumentL( TInt aErrorCode ) - { - DP_SDA("CPresencePluginXdmUtils::DoHandlePresUpdateDocumentL"); - - // check if error - CheckIfErrorL( aErrorCode ); - - if ( iXdmState == EGetXdmRules ) - { - DP_SDA("DoHandlePresUpdateDocumentL EGetXdmRules"); - iXdmState = EStateIdle; - if ( aErrorCode && aErrorCode == KXcapErrorHttpNotFound ) - { - DP_SDA("DoHandlePresUpdateDocumentL EGetXdmRules ini rules ERROR"); - InitializePresRulesL(); - } - else - { - DP_SDA("DoHandlePresUpdateDocumentL EGetXdmRules SEND COMPLETE "); - // Complete with ok or error the last initial opreration - - // update presence cache if needed before complete client req. - iPresXdmOk = ETrue; - - if ( iBlockedContacts.Count() > 0 ) - { - iConnObs.InternalPresenceAuthorization(). - IsBlockedContactFriendRequestL( - *iBlockedContacts[ iBlockedContacts.Count() - 1 ], - *this, iStatus ); - - iXdmState = EUpdateBlockedContactPresenceCache; - SetActive(); - } - else - { - CompleteClientReq( aErrorCode ); - } - } - } - else if ( iXdmState == EUpdateXdmRules ) - { - DP_SDA("DoHandlePresUpdateDocumentL EUpdateXdmRules SEND COMPLETE "); - // Complete with ok or error the last initial opreration - CompleteClientReq( aErrorCode ); - } - else if ( iXdmState == ECreateXdmRules ) - { - DP_SDA("DoHandlePresUpdateDocumentL ECreateXdmRules SEND COMPLETE "); - iPresXdmOk = ETrue; - CompleteClientReq( aErrorCode ); - } - - else if ( iXdmState == EUpdateXdmList) - { - DP_SDA("DoHandlePresUpdateDocumentL EUpdateXdmList SEND COMPLETE"); - CompleteClientReq( aErrorCode ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::CompleteClientReq() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::CompleteClientReq( TInt aStatus ) - { - DP_SDA("CPresencePluginXdmUtils::CompleteClientReq"); - DP_SDA2("CPresencePluginXdmUtils::CompleteClientReq status %d ", aStatus); - iXdmState = EStateIdle; - iOperation = ENoOperation; - TRequestStatus* s = iClientStatus; - User::RequestComplete( s, aStatus ); - DP_SDA("CPresencePluginXdmUtils::CompleteClientReq end"); - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::HandlePresUpdateDocumentL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::HandlePresUpdateDocumentL( - TInt aErrorCode ) - { -#ifdef _DEBUG - DP_SDA2("HandlePresUpdateDocumentL errorCode %d ", aErrorCode ); - DP_SDA2("HandlePresUpdateDocumentL mystatus %d ", iStatus.Int()); - DP_SDA2("HandlePresUpdateDocumentL state %d ", iXdmState); - DP_SDA2("HandlePresUpdateDocumentL ClientStatus %d",iClientStatus->Int() ); -#endif - - DP_SDA("CPresencePluginXdmUtils::HandlePresUpdateDocumentL"); - if ( aErrorCode == KErrTimedOut ) - { - DP_SDA("CPresencePluginXdmUtils::HandlePresUpdateDocumentL TimeOut"); - aErrorCode = 0; - } - - TRAPD( err, DoHandlePresUpdateDocumentL( aErrorCode )); - if ( err ) - { - DP_SDA("CPresencePluginXdmUtils::HandlePresUpdateDocumentL complete"); - // Complete with ok or error the last initial opreration - CompleteClientReq( err ); - } - } - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::SearchListUnderParentL -// --------------------------------------------------------------------------- -// -TBool CPresencePluginXdmUtils::CompareUriWithoutPrefixL( - const TDesC& aUri, const TDesC& aAttribute ) - { - DP_SDA("CPresencePluginXdmUtils::CompareUriWithoutPrefixL"); - - TBool match( EFalse ); - - RBuf uriWithoutPrefix; - CleanupClosePushL( uriWithoutPrefix ); - uriWithoutPrefix.CreateL( aUri ); - TInt prefixLocation = uriWithoutPrefix.Locate( ':' ); - - if ( KErrNotFound != prefixLocation ) - { - uriWithoutPrefix.Delete( 0, ( prefixLocation + 1 ) ); - } - - RBuf attributeWithoutprefix; - CleanupClosePushL( attributeWithoutprefix ); - attributeWithoutprefix.CreateL( aAttribute ); - prefixLocation = attributeWithoutprefix.Locate( ':' ); - - if ( KErrNotFound != prefixLocation ) - { - attributeWithoutprefix.Delete( 0, ( prefixLocation + 1 ) ); - } - - DP_SDA2(" --> uri without prefix=%S", &uriWithoutPrefix ); - DP_SDA2(" --> attribute without prefix=%S", &attributeWithoutprefix ); - - if ( uriWithoutPrefix.Compare( attributeWithoutprefix ) == 0 ) - { - match = ETrue; - } - - CleanupStack::PopAndDestroy( &attributeWithoutprefix ); - CleanupStack::PopAndDestroy( &uriWithoutPrefix ); - - return match; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginXdmUtils::DoUpdateBlockedContactPresenceCacheL() -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::DoUpdateBlockedContactPresenceCacheL( - TInt aMyStatus ) - { - DP_SDA( "CPresencePluginXdmUtils::DoUpdateBlockedContactPresenceCache" ); - - const TInt KTextBufferSize = 10; - TInt contactsCount = iBlockedContacts.Count(); - - if ( contactsCount > 0 ) - { - if ( iPresenceContactsAsyncReqResult ) - { - DP_SDA(" RunL -write blocked status to cache" ); - TBuf buf; - buf.Copy( KBlockedExtensionValue ); - iConnObs.InternalPresenceAuthorization().PluginData(). - WriteStatusToCacheL( *iBlockedContacts[ contactsCount - 1 ], - MPresenceBuddyInfo2::EUnknownAvailability, - buf, - KNullDesC() ); - } - delete iBlockedContacts[ contactsCount - 1 ]; - iBlockedContacts.Remove( contactsCount - 1 ); - - if ( iBlockedContacts.Count() > 0 ) - { - iConnObs.InternalPresenceAuthorization(). - IsBlockedContactFriendRequestL( - *iBlockedContacts[ iBlockedContacts.Count() - 1 ], - *this, iStatus ); - - iXdmState = EUpdateBlockedContactPresenceCache; - SetActive(); - } - else - { - CompleteClientReq( aMyStatus ); - } - } - } - - -// --------------------------------------------------------------------------- -// From MPresencePluginContactsObs -// CPresencePluginXdmUtils::RequestComplete -// --------------------------------------------------------------------------- -// -void CPresencePluginXdmUtils::RequestComplete( TAny* aResult, - TPresenceContactsOperation /*aOperation*/, TInt aError ) - { - iPresenceContactsAsyncReqResult = EFalse; - if ( NULL != aResult && KErrNone == aError ) - { - iPresenceContactsAsyncReqResult = - *static_cast( aResult ); - } - } - -// End of file diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/src/presensepluginlocalstore.cpp --- a/simpledatamodeladapter/src/presensepluginlocalstore.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,208 +0,0 @@ -/* -* Copyright (c) 2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#include -#include "presencepluginlocalstore.h" -#include "presencelogger.h" - -_LIT( KContactId, "ContactId" ); -_LIT( KContactTable, "Contacts" ); -_LIT( KStorageExtn, ".db" ); -_LIT( KDbPath, "c:\\MeCo\\" ); - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPresencePluginLocalstore::CPresencePluginLocalstore -// --------------------------------------------------------------------------- -// -CPresencePluginLocalstore::CPresencePluginLocalstore() - { - } - - -// --------------------------------------------------------------------------- -// CPresencePluginLocalstore::ConstructL() -// --------------------------------------------------------------------------- -// -void CPresencePluginLocalstore::ConstructL( const TDesC& aServiceName ) - { - DP_SDA( "CPresencePluginLocalstore::ConstructL Start" ); - - iLocalDBName = - HBufC::NewL( aServiceName.Length()+ KStorageExtn().Length() ); - TPtr localDBNamePtr = iLocalDBName->Des(); - localDBNamePtr.Append( aServiceName ); - - _LIT( KSpecialChar, "/\\:*?<>\"" ); - AknTextUtils::StripCharacters( localDBNamePtr, KSpecialChar ); - localDBNamePtr.Append( KStorageExtn() ); - - DP_SDA2( "CPresencePluginLocalstore::ConstructL - localDBName: %S" , &localDBNamePtr ); - - User::LeaveIfError( iFs.Connect() ); - if ( DbExists() ) - { - DP_SDA( "CPresencePluginLocalstore::ConstructL - DB exists" ); - OpenDbL(); - } - else - { - DP_SDA( "CPresencePluginLocalstore::ConstructL - DB does not exist LEAVE!" ); - User::Leave( KErrNotReady ); - } - - User::LeaveIfError( iTable.Open( iDb, KContactTable ) ); - iColset = iDb.ColSetL( KContactTable ); - - DP_SDA( "CPresencePluginLocalstore::ConstructL End" ); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginLocalstore::NewL() -// --------------------------------------------------------------------------- -// -CPresencePluginLocalstore* CPresencePluginLocalstore::NewL( - const TDesC& aServiceName ) - { - CPresencePluginLocalstore* self = - CPresencePluginLocalstore::NewLC( aServiceName ); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginLocalstore::NewLC() -// --------------------------------------------------------------------------- -// -CPresencePluginLocalstore* CPresencePluginLocalstore::NewLC( - const TDesC& aServiceName ) - { - CPresencePluginLocalstore* self = - new( ELeave ) CPresencePluginLocalstore(); - CleanupStack::PushL( self ); - self->ConstructL( aServiceName ); - return self; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginLocalstore::~CPresencePluginLocalstore() -// --------------------------------------------------------------------------- -// -CPresencePluginLocalstore::~CPresencePluginLocalstore() - { - DP_SDA( "CPresencePluginLocalstore::~CPresencePluginLocalstore Start" ); - - delete iLocalDBName; - delete iFileStore; - delete iColset; - - iTable.Close(); - iDb.Close(); - iFs.Close(); - - DP_SDA( "CPresencePluginLocalstore::~CPresencePluginLocalstore End" ); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginLocalstore::OpenDbL -// --------------------------------------------------------------------------- -// -void CPresencePluginLocalstore::OpenDbL() - { - DP_SDA( "CPresencePluginLocalstore::OpenDbL() Start" ); - - TBuf< KMaxPath > storagePath; - storagePath.Append( KDbPath ); - storagePath.Append( *iLocalDBName ); - iFileStore = CPermanentFileStore::OpenL( iFs, storagePath, - EFileShareReadersOrWriters|EFileWrite ); - iFileStore->SetTypeL( iFileStore->Layout() ); - iDb.OpenL( iFileStore, iFileStore->Root() ); - - DP_SDA( "CPresencePluginLocalstore::OpenDbL() End" ); - } - - -// --------------------------------------------------------------------------- -// CPresencePluginLocalstore::DbExists -// --------------------------------------------------------------------------- -// -TBool CPresencePluginLocalstore::DbExists() - { - DP_SDA( "CPresencePluginLocalstore::DbExists() Start" ); - - TBool ret( ETrue ); - RFile temp; - TBuf< KMaxPath > storagePath; - storagePath.Append( KDbPath ); - storagePath.Append( *iLocalDBName ); - - TInt err( temp.Open( iFs, *( &storagePath ), - EFileShareReadersOrWriters|EFileRead ) ); - TInt size( 0 ); - - if ( KErrNone == err ) - { - temp.Size( size ); - } - - temp.Close(); - - if ( ( 0 == size ) || ( KErrNone != err ) ) - { - ret = EFalse; - } - - DP_SDA( "CPresencePluginLocalstore::DbExists() End" ); - return ret; - } - - -// --------------------------------------------------------------------------- -// CPresencePluginLocalstore::SeekRowL() -// --------------------------------------------------------------------------- -// -TBool CPresencePluginLocalstore::SeekRowAtContactColL( - TInt32& aIdentifier ) - { - DP_SDA( "CPresencePluginLocalstore::SeekRowAtContactColL() Start" ); - - TBool ret( EFalse ); - TDbColNo colNo = iColset->ColNo( KContactId ); - iTable.BeginningL(); - - while ( iTable.NextL() ) - { - DP_SDA( "CPresencePluginLocalstore::SeekRowAtContactColL() - next found" ); - iTable.GetL(); - if ( iTable.ColInt32( colNo ) == aIdentifier ) - { - ret = ETrue; - break; - } - } - - DP_SDA2( "CPresencePluginLocalstore::SeekRowAtContactColL() End - ret = %d", ret ); - return ret; - } diff -r 2580314736af -r 2669f8761a99 simpleengine/engine/BWINS/simpleengineU.DEF --- a/simpleengine/engine/BWINS/simpleengineU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/engine/BWINS/simpleengineU.DEF Tue Aug 31 15:35:50 2010 +0300 @@ -13,5 +13,4 @@ ?NsPrefixL@TSimpleUtils@@SA?AVTPtrC8@@ABVTDesC8@@@Z @ 12 NONAME ; class TPtrC8 TSimpleUtils::NsPrefixL(class TDesC8 const &) ?NsUriL@TSimpleUtils@@SA?AVTPtrC8@@ABVTDesC8@@@Z @ 13 NONAME ; class TPtrC8 TSimpleUtils::NsUriL(class TDesC8 const &) ?NewInstantMessageL@TSimpleFactory@@SAPAVMSimpleInstantMessage@@AAVMSimpleConnection@@AAVMSimpleInstantMsgObserver@@@Z @ 14 NONAME ; class MSimpleInstantMessage * TSimpleFactory::NewInstantMessageL(class MSimpleConnection &, class MSimpleInstantMsgObserver &) - ?NewConnectionL@TSimpleFactory@@SAPAVMSimpleConnection@@AAVMSimpleConnectionObserver@@J@Z @ 15 NONAME ; class MSimpleConnection * TSimpleFactory::NewConnectionL(class MSimpleConnectionObserver &, long) diff -r 2580314736af -r 2669f8761a99 simpleengine/engine/EABI/simpleengineU.DEF --- a/simpleengine/engine/EABI/simpleengineU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/engine/EABI/simpleengineU.DEF Tue Aug 31 15:35:50 2010 +0300 @@ -29,5 +29,4 @@ _ZN14TSimpleFactory18NewInstantMessageLER17MSimpleConnectionR25MSimpleInstantMsgObserver @ 28 NONAME _ZTI22CSimpleEngineImHandler @ 29 NONAME ; ## _ZTV22CSimpleEngineImHandler @ 30 NONAME ; ## - _ZN14TSimpleFactory14NewConnectionLER25MSimpleConnectionObserverl @ 31 NONAME diff -r 2580314736af -r 2669f8761a99 simpleengine/engine/inc/simpleconnection.h --- a/simpleengine/engine/inc/simpleconnection.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/engine/inc/simpleconnection.h Tue Aug 31 15:35:50 2010 +0300 @@ -53,8 +53,6 @@ */ static CSimpleConnection* NewL( MSimpleConnectionObserver& aObserver ); - static CSimpleConnection* NewL( MSimpleConnectionObserver& aObserver, TInt32 aServiceId ); - /** * Destructor. */ @@ -136,7 +134,7 @@ /** * Two-phase constructor */ - void ConstructL( TInt32 aServiceId ); + void ConstructL( ); /** * constructor diff -r 2580314736af -r 2669f8761a99 simpleengine/engine/inc/simpleengineimhandler.h --- a/simpleengine/engine/inc/simpleengineimhandler.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/engine/inc/simpleengineimhandler.h Tue Aug 31 15:35:50 2010 +0300 @@ -11,10 +11,11 @@ * * Contributors: * -* Description: SIMPLE Engine IM Handler +* Description: SIMPLE Engine IM Handler * */ + #ifndef C_SIMPLEENGINEIMHANDLER_H #define C_SIMPLEENGINEIMHANDLER_H diff -r 2580314736af -r 2669f8761a99 simpleengine/engine/inc/simplepublisher.h --- a/simpleengine/engine/inc/simplepublisher.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/engine/inc/simplepublisher.h Tue Aug 31 15:35:50 2010 +0300 @@ -226,7 +226,7 @@ * Zero length is ignored. * @return operation id */ - TInt CSimplePublisher::DoStartPublishL( MSimpleDocument& aDocument, + TInt DoStartPublishL( MSimpleDocument& aDocument, TBool aRefresh, const TDesC8& aETag ); diff -r 2580314736af -r 2669f8761a99 simpleengine/engine/src/simpleconnection.cpp --- a/simpleengine/engine/src/simpleconnection.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/engine/src/simpleconnection.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -65,7 +65,7 @@ // CSimpleConnection::ConstructL // ---------------------------------------------------------- // -void CSimpleConnection::ConstructL( TInt32 aServiceId ) +void CSimpleConnection::ConstructL() { // Create CSimpleSipConnection entity in simplesiputils.dll iConnection = CSimpleSipConnection::NewL(); @@ -79,10 +79,6 @@ CSimpleEngineRequest* req = CSimpleEngineRequest::NewL( *this, MSimpleEngineRequest::EListenEvents, iOpId ); CleanupStack::PushL( req ); - if ( aServiceId ) - { - iConnection->SetServiceId( aServiceId ); - } iConnection->DispatchReqL( *req ); iRequestList.AddLast( *req ); CleanupStack::Pop( req ); @@ -100,24 +96,7 @@ #endif CSimpleConnection* self = new (ELeave) CSimpleConnection( aObserver ); CleanupStack::PushL( self ); - self->ConstructL( NULL ); - CleanupStack::Pop( self ); - return self; - } - -// ---------------------------------------------------------- -// CSimpleConnection::NewL -// ---------------------------------------------------------- -// -CSimpleConnection* CSimpleConnection::NewL( - MSimpleConnectionObserver& aObserver, TInt32 aServiceId ) - { -#ifdef _DEBUG - TSimpleLogger::Log(_L("SimpleConnection: NewL" )); -#endif - CSimpleConnection* self = new (ELeave) CSimpleConnection( aObserver ); - CleanupStack::PushL( self ); - self->ConstructL( aServiceId ); + self->ConstructL(); CleanupStack::Pop( self ); return self; } diff -r 2580314736af -r 2669f8761a99 simpleengine/engine/src/simpleengineimhandler.cpp --- a/simpleengine/engine/src/simpleengineimhandler.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/engine/src/simpleengineimhandler.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -11,10 +11,11 @@ * * Contributors: * -* Description: SIMPLE Engine IM Handler +* Description: SIMPLE ENGINE IM Handler * */ + #include "simpleengineimhandler.h" #include "simpleenginerequest.h" #include "simpleinstantmsgobserver.h" diff -r 2580314736af -r 2669f8761a99 simpleengine/engine/src/simplefactory.cpp --- a/simpleengine/engine/src/simplefactory.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/engine/src/simplefactory.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -47,10 +47,6 @@ #include "msimplewinfowatcher.h" #include "simpleinstantmessage.h" -#ifdef _DEBUG -#include "simpledebugutils.h" -#endif - class MSimpleConnectionObserver; class MSimplePublishObserver; class MSimpleWatcherObserver; @@ -95,9 +91,6 @@ EXPORT_C MSimpleConnection* TSimpleFactory::NewConnectionL( MSimpleConnectionObserver& aObserver) { - #ifdef _DEBUG - TSimpleLogger::Log(_L("TSimpleFactory::NewConnectionL" ) ); - #endif return CSimpleConnection::NewL( aObserver ); } @@ -141,11 +134,7 @@ aContentID, aContentType ); } -EXPORT_C MSimpleConnection* TSimpleFactory::NewConnectionL( - MSimpleConnectionObserver& aObserver, TInt32 aServiceId ) - { - return CSimpleConnection::NewL( aObserver, aServiceId ); - } + diff -r 2580314736af -r 2669f8761a99 simpleengine/inc/simplecommon.h --- a/simpleengine/inc/simplecommon.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/inc/simplecommon.h Tue Aug 31 15:35:50 2010 +0300 @@ -28,7 +28,6 @@ const TInt KRangeSize = 100; // range of operation ids for each client handle const TUint KSimpleOK = 200; // return code for SIP -const TUint KCreatedOK = 201; // return code for SIP const TUint KSimpleAccepted = 202; // return code for SIP _LIT8 ( KSimpleApplicationType, "application"); diff -r 2580314736af -r 2669f8761a99 simpleengine/presencedm/src/presencedmadapter.cpp --- a/simpleengine/presencedm/src/presencedmadapter.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/presencedm/src/presencedmadapter.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 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" @@ -14,6 +14,9 @@ * Description: OMA Presence Settings Device Management Adapter's source file * */ + + + #include #include @@ -359,7 +362,6 @@ TPresSettingsProperty property; HBufC8* luid = Callback().GetLuidAllocL( aUri ); - PRES_DM_LOG(LOG_LIT8(" GetLuidAllocL() => '%S'"), luid ); TInt settingsId = DesToInt( *luid ); PRES_DM_LOG(LOG_LIT(" settingsId after callback:%d"), settingsId); @@ -368,16 +370,12 @@ if (!IsPresIDValidL(settingsId)) { //try to find it another way - if( NSmlDmURI::NumOfURISegs( aUri ) > 1 ) - { - TPtrC8 idSegment = NSmlDmURI::URISeg( aUri, 2 ); - settingsId = DesToInt(idSegment); - if(!IsPresIDValidL(settingsId)) - { - status = CSmlDmAdapter::ENotFound; - } - PRES_DM_LOG(LOG_LIT(" settingsId found local way:%d"), settingsId); - } + TPtrC8 removedLastSeg = NSmlDmURI::RemoveLastSeg(aUri); + TPtrC8 idSegment = NSmlDmURI::LastURISeg(removedLastSeg); + TInt settingsId = DesToInt(idSegment); + if (!IsPresIDValidL(settingsId)) + status = CSmlDmAdapter::ENotFound; + PRES_DM_LOG(LOG_LIT(" settingsId found local way:%d"), settingsId); } // if previous settings id processing was ok @@ -521,16 +519,12 @@ if (!IsPresIDValidL(settingsId)) { //try to find it another way - if( NSmlDmURI::NumOfURISegs( aUri ) > 1 ) - { - TPtrC8 idSegment = NSmlDmURI::URISeg( aUri, 2 ); - settingsId = DesToInt(idSegment); - if (!IsPresIDValidL(settingsId)) - { - status = CSmlDmAdapter::ENotFound; - } - PRES_DM_LOG(LOG_LIT(" settingsId found local way:%d"), settingsId); - } + TPtrC8 removedLastSeg = NSmlDmURI::RemoveLastSeg(aUri); + TPtrC8 idSegment = NSmlDmURI::LastURISeg(removedLastSeg); + TInt settingsId = DesToInt(idSegment); + if (!IsPresIDValidL(settingsId)) + status = CSmlDmAdapter::ENotFound; + PRES_DM_LOG(LOG_LIT(" settingsId found local way:%d"), settingsId); } // if previous settings id processing was ok @@ -728,7 +722,6 @@ const TInt aStatusRef ) { // Not supported - PRES_DM_LOG(LOG_LIT("ExecuteCommandL")); Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError ); } @@ -743,7 +736,6 @@ const TInt aStatusRef ) { // Not supported - PRES_DM_LOG(LOG_LIT("ExecuteCommandL")); Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError ); } @@ -759,7 +751,6 @@ TInt aStatusRef ) { // Not supported - PRES_DM_LOG(LOG_LIT("CopyCommandL")); Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError ); } @@ -769,7 +760,6 @@ // void CPresenceDMAdapter::StartAtomicL() { - PRES_DM_LOG(LOG_LIT("StartAtomicL")); // Not supported } @@ -779,7 +769,6 @@ // void CPresenceDMAdapter::CommitAtomicL() { - PRES_DM_LOG(LOG_LIT("CommitAtomicL")); // Not supported } @@ -789,7 +778,6 @@ // void CPresenceDMAdapter::RollbackAtomicL() { - PRES_DM_LOG(LOG_LIT("RollbackAtomicL")); // Not supported } @@ -799,7 +787,6 @@ // TBool CPresenceDMAdapter::StreamingSupport( TInt& /*aItemSize*/ ) { - PRES_DM_LOG(LOG_LIT("StreamingSupport")); return EFalse; } @@ -809,7 +796,6 @@ // void CPresenceDMAdapter::StreamCommittedL() { - PRES_DM_LOG(LOG_LIT("StreamCommittedL")); // Not supported } @@ -891,10 +877,10 @@ aObject.InsertL( 0, *utfValue ); CleanupStack::PopAndDestroy(utfValue); // >>> utfValue CleanupStack::PopAndDestroy(value); // >>> value - PRES_DM_LOG(LOG_LIT(" return( EOk )")); + PRES_DM_LOG(LOG_LIT(" return(%d)"),CSmlDmAdapter::EOk); return CSmlDmAdapter::EOk; } - PRES_DM_LOG(LOG_LIT(" return( ENotFound )")); + PRES_DM_LOG(LOG_LIT(" return(%d)"),CSmlDmAdapter::ENotFound); return CSmlDmAdapter::ENotFound; } @@ -1070,7 +1056,7 @@ CSmlDmAdapter::TError CPresenceDMAdapter::GetConRefFromSipIDL( TInt aSipID, CBufBase& aObject) { - PRES_DM_LOG(LOG_LIT(" GetConRefFromSipIDL(aSipId:%d)"),aSipID); + PRES_DM_LOG(LOG_LIT(" GetConRefFromSipIDL(%d)"),aSipID); CSmlDmAdapter::TError status = CSmlDmAdapter::EOk; @@ -1083,14 +1069,12 @@ // Request all the sip settings identifiers Callback().FetchLinkL( KPresDMSipDMNode, *result, status); - PRES_DM_LOG(LOG_LIT(" FetchLinkL(SIP) status : %d"), status ); if( status == EOk ) { TPtr8 uriSeg8Ptr = result->Ptr(0); - HBufC8* uriSegBuffer = uriSeg8Ptr.AllocLC(); // << uriSegBuffer - PRES_DM_LOG(LOG_LIT8(" uri : '%S'"), uriSegBuffer ); + HBufC8* uriSegBuffer = uriSeg8Ptr.AllocLC(); TPtr8 uriSegBufferPtr = uriSegBuffer->Des(); @@ -1103,7 +1087,7 @@ // Check if given SIP set id match with any of found // SIP settings identifiers - while( numOfUriSegs > 0 ) + while( numOfUriSegs > 1) { idLinkBuffer = NSmlDmURI::LastURISeg(uriSegBufferPtr); uriSegBufferPtr = NSmlDmURI::RemoveLastSeg(uriSegBufferPtr); @@ -1118,20 +1102,17 @@ //Reqest the ID result->Reset(); Callback().FetchLinkL( finalLink, *result, status); - PRES_DM_LOG(LOG_LIT8(" FetchLinkL(%S) status : %d"), &idLinkBuffer, status ); - if( status == EOk ) + + foundId = DesToInt(result->Ptr(0)); + + if (foundId == aSipID) { - foundId = DesToInt(result->Ptr(0)); - PRES_DM_LOG(LOG_LIT(" foundId : %d"), foundId ); - if (foundId == aSipID) - { - found = ETrue; - aObject.InsertL(0, NSmlDmURI::RemoveLastSeg(finalLink)); + found = ETrue; + aObject.InsertL(0, NSmlDmURI::RemoveLastSeg(finalLink)); break; } - } - numOfUriSegs--; + numOfUriSegs -= 1; } CleanupStack::PopAndDestroy( uriSegBuffer ); // >>> uriSegBuffer } @@ -1156,7 +1137,7 @@ CSmlDmAdapter::TError CPresenceDMAdapter::GetConRefFromXdmIDL( TInt aXdmID, CBufBase& aObject) { - PRES_DM_LOG(LOG_LIT(" GetConRefFromXdmIDL(aXdmId:%d)"),aXdmID); + PRES_DM_LOG(LOG_LIT(" GetConRefFromXdmIDL(%d)"),aXdmID); CSmlDmAdapter::TError status = CSmlDmAdapter::ENotFound; @@ -1167,7 +1148,6 @@ // Request all the XDM settings identifiers Callback().FetchLinkL( KPresDMXdmDMNode, *result, status); - PRES_DM_LOG(LOG_LIT(" FetchLinkL(XDM) status : %d"), status ); TInt id(KErrNotFound); TPtrC8 lastUriSegXdm; @@ -1231,7 +1211,6 @@ TPresSettingsSet tempSet; if ((PresSettingsApi::SettingsSetL(aSetId,tempSet)) == KErrNone) return ETrue; - PRES_DM_LOG(LOG_LIT8(" IsPresIDValidL - Invalid settings : %d"), aSetId ); return EFalse; } @@ -1269,7 +1248,8 @@ if( status == EOk ) { - TUint32 id = DesToInt( result->Ptr( 0 ) ); + TUint32 id(NULL); + id = DesToInt( result->Ptr( 0 ) ); returnId = (TInt)id; } CleanupStack::PopAndDestroy( result ); // >>> result diff -r 2580314736af -r 2669f8761a99 simpleengine/presenceprovisioning/inc/presenceprovitem.h --- a/simpleengine/presenceprovisioning/inc/presenceprovitem.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/presenceprovisioning/inc/presenceprovitem.h Tue Aug 31 15:35:50 2010 +0300 @@ -164,7 +164,7 @@ * @param aName Name of the parameter * @param aValue Value of the parameter */ - void DetermineNamedParameterL( const TDesC& aName, const TDesC& aValue ); + void DetermineNamedParameter( const TDesC& aName, const TDesC& aValue ); /** * Check presence settings duplicate names, provide alternate name diff -r 2580314736af -r 2669f8761a99 simpleengine/presenceprovisioning/src/presenceprovadapter.cpp --- a/simpleengine/presenceprovisioning/src/presenceprovadapter.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/presenceprovisioning/src/presenceprovadapter.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -289,7 +289,7 @@ // APPID into place [0]. TPtrC8 appId ( KPresProvisioningAppId8 ); HBufC8* appIdBuf = appId.AllocLC(); // << appIdBuf - aSavingInfo.AppendL( appIdBuf ); + aSavingInfo.Append( appIdBuf ); CleanupStack::Pop( appIdBuf ); // >> appIdBuf appIdBuf = NULL; diff -r 2580314736af -r 2669f8761a99 simpleengine/presenceprovisioning/src/presenceprovitem.cpp --- a/simpleengine/presenceprovisioning/src/presenceprovitem.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/presenceprovisioning/src/presenceprovitem.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -251,7 +251,7 @@ case EWPParameterToAppRef: { PRES_PROV_LOG(LOG_LIT8( " EWPParameterToAppRef")); - iToAppReferences.AppendL( aParameter.Value() ); + iToAppReferences.Append( aParameter.Value() ); } break; @@ -271,7 +271,7 @@ default: { - DetermineNamedParameterL( aParameter.Name(), aParameter.Value() ); + DetermineNamedParameter( aParameter.Name(), aParameter.Value() ); } break; } @@ -282,7 +282,7 @@ // CPresProvItem::DetermineNamedParameter // ----------------------------------------------------------------------------- // -void CPresProvItem::DetermineNamedParameterL( const TDesC& aName, const TDesC& aValue ) +void CPresProvItem::DetermineNamedParameter( const TDesC& aName, const TDesC& aValue ) { PRES_PROV_LOG(LOG_LIT( "DetermineNamedParameter(%S, %S)"), &aName, &aValue); if ( !aName.Compare( KPresProvClientObjDataLim ) ) @@ -316,7 +316,7 @@ else if (!aName.Compare(KPresIToAppRef)) { if(iToAppReferences.Count() < 2) // if any of SIP or XDM id is missing - iToAppReferences.AppendL(aValue); + iToAppReferences.Append(aValue); } PRES_PROV_LOG(LOG_LIT8( " CPresProvItem::DetermineNamedParameter ends" ) ); } diff -r 2580314736af -r 2669f8761a99 simpleengine/presencesettingsapi/group/bld.inf --- a/simpleengine/presencesettingsapi/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/presencesettingsapi/group/bld.inf Tue Aug 31 15:35:50 2010 +0300 @@ -27,6 +27,6 @@ presencesettingsapi.mmp PRJ_EXPORTS -../inc/pressettingsapi.h /epoc32/include/mw/pressettingsapi.h -../inc/simpleenginedomaincrkeys.h /epoc32/include/mw/simpleenginedomaincrkeys.h -../inc/pressettingsset.h /epoc32/include/mw/pressettingsset.h +../inc/pressettingsapi.h MW_LAYER_PLATFORM_EXPORT_PATH(pressettingsapi.h) +../inc/simpleenginedomaincrkeys.h MW_LAYER_PLATFORM_EXPORT_PATH(simpleenginedomaincrkeys.h) +../inc/pressettingsset.h MW_LAYER_PLATFORM_EXPORT_PATH(pressettingsset.h) diff -r 2580314736af -r 2669f8761a99 simpleengine/presencesettingsapi/group/presencesettingsapi.mmp --- a/simpleengine/presencesettingsapi/group/presencesettingsapi.mmp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/presencesettingsapi/group/presencesettingsapi.mmp Tue Aug 31 15:35:50 2010 +0300 @@ -43,7 +43,7 @@ LIBRARY centralrepository.lib -#if defined( ARMCC ) +#if defined( EABI ) DEFFILE ../eabi/ #elif defined ( WINSCW ) deffile ../bwinscw/ diff -r 2580314736af -r 2669f8761a99 simpleengine/presencesettingsapi/src/pressettingsapi.cpp --- a/simpleengine/presencesettingsapi/src/pressettingsapi.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/presencesettingsapi/src/pressettingsapi.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -78,7 +78,7 @@ else { sets->AppendL(setName); - aSetIds.AppendL(setId); + aSetIds.Append(setId); } setName.Zero(); } diff -r 2580314736af -r 2669f8761a99 simpleengine/rom/simpleengine.iby --- a/simpleengine/rom/simpleengine.iby Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/rom/simpleengine.iby Tue Aug 31 15:35:50 2010 +0300 @@ -24,17 +24,17 @@ #ifdef __SIP_SIMPLE_PRESENCE_PROTOCOL -file=ABI_DIR/BUILD_DIR/simpleengine.dll SHARED_LIB_DIR/simpleengine.dll -file=ABI_DIR/BUILD_DIR/simplesiputils.dll SHARED_LIB_DIR/simplesiputils.dll -file=ABI_DIR/BUILD_DIR/simplexmlutils.dll SHARED_LIB_DIR/simplexmlutils.dll -file=ABI_DIR/BUILD_DIR/rlspresxdm.dll SHARED_LIB_DIR/rlspresxdm.dll -file=ABI_DIR/BUILD_DIR/presencesettingsapi.dll SHARED_LIB_DIR/presencesettingsapi.dll +file=ABI_DIR\BUILD_DIR\simpleengine.dll SHARED_LIB_DIR\simpleengine.dll +file=ABI_DIR\BUILD_DIR\simplesiputils.dll SHARED_LIB_DIR\simplesiputils.dll +file=ABI_DIR\BUILD_DIR\simplexmlutils.dll SHARED_LIB_DIR\simplexmlutils.dll +file=ABI_DIR\BUILD_DIR\rlspresxdm.dll SHARED_LIB_DIR\rlspresxdm.dll +file=ABI_DIR\BUILD_DIR\presencesettingsapi.dll SHARED_LIB_DIR\presencesettingsapi.dll ECOM_PLUGIN(PresenceDM.dll, 10282415.rsc) ECOM_PLUGIN(PresenceProvisioning.dll, 10282417.rsc) // backup registry -data=DATAZ_/private/10281EEB/backup_registration.xml private/10281EEB/backup_registration.xml +data=DATAZ_\private\10281EEB\backup_registration.xml private\10281EEB\backup_registration.xml #endif // __SIP_SIMPLE_PRESENCE_PROTOCOL #endif diff -r 2580314736af -r 2669f8761a99 simpleengine/rom/simpleengineresources.iby --- a/simpleengine/rom/simpleengineresources.iby Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/rom/simpleengineresources.iby Tue Aug 31 15:35:50 2010 +0300 @@ -25,7 +25,7 @@ #include #ifdef __SIP_SIMPLE_PRESENCE_PROTOCOL -data=DATAZ_/RESOURCE_FILES_DIR/PresenceProvisioningTexts.RSC RESOURCE_FILES_DIR/PresenceProvisioningTexts.RSC +data=DATAZ_\RESOURCE_FILES_DIR\PresenceProvisioningTexts.RSC RESOURCE_FILES_DIR\PresenceProvisioningTexts.RSC #endif //__SIP_SIMPLE_PRESENCE_PROTOCOL diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/BWINS/simplesiputilsU.DEF --- a/simpleengine/siputils/BWINS/simplesiputilsU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/BWINS/simplesiputilsU.DEF Tue Aug 31 15:35:50 2010 +0300 @@ -5,5 +5,5 @@ ?NewL@CSimpleSipConnection@@SAPAV1@XZ @ 4 NONAME ; class CSimpleSipConnection * CSimpleSipConnection::NewL(void) ?SIPState@CSimpleSipConnection@@QAE?AW4TSimpleSipState@@XZ @ 5 NONAME ; enum TSimpleSipState CSimpleSipConnection::SIPState(void) ?SIPStatus@CSimpleSipConnection@@QAEIHAAH@Z @ 6 NONAME ; unsigned int CSimpleSipConnection::SIPStatus(int, int &) - ?SetServiceId@CSimpleSipConnection@@QAEXJ@Z @ 7 NONAME ; void CSimpleSipConnection::SetServiceId(long) - ?SipSubscriptionState@CSimpleSipConnection@@QAE?AW4TSimpleSipSubscriptionState@MSimpleEngineRequest@@AAV3@@Z @ 8 NONAME ; enum MSimpleEngineRequest::TSimpleSipSubscriptionState CSimpleSipConnection::SipSubscriptionState(class MSimpleEngineRequest &) + ?SipSubscriptionState@CSimpleSipConnection@@QAE?AW4TSimpleSipSubscriptionState@MSimpleEngineRequest@@AAV3@@Z @ 7 NONAME ; enum MSimpleEngineRequest::TSimpleSipSubscriptionState CSimpleSipConnection::SipSubscriptionState(class MSimpleEngineRequest &) + diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/EABI/simplesiputilsU.DEF --- a/simpleengine/siputils/EABI/simplesiputilsU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/EABI/simplesiputilsU.DEF Tue Aug 31 15:35:50 2010 +0300 @@ -1,28 +1,25 @@ EXPORTS _ZN20CSimpleSipConnection12DispatchReqLER20MSimpleEngineRequest @ 1 NONAME - _ZN20CSimpleSipConnection12SetServiceIdEl @ 2 NONAME - _ZN20CSimpleSipConnection19CurrentSIPIdentityLEv @ 3 NONAME - _ZN20CSimpleSipConnection20SipSubscriptionStateER20MSimpleEngineRequest @ 4 NONAME - _ZN20CSimpleSipConnection4NewLEv @ 5 NONAME - _ZN20CSimpleSipConnection8SIPStateEv @ 6 NONAME - _ZN20CSimpleSipConnection9SIPStatusEiRi @ 7 NONAME - _ZN20CSimpleSipConnectionD0Ev @ 8 NONAME - _ZN20CSimpleSipConnectionD1Ev @ 9 NONAME - _ZN20CSimpleSipConnectionD2Ev @ 10 NONAME - _ZTI14CSimpleRequest @ 11 NONAME ; ## - _ZTI18CSimpleExpiryTimer @ 12 NONAME ; ## - _ZTI18CSimpleSettingFile @ 13 NONAME ; ## - _ZTI19CSimpleRefreshTimer @ 14 NONAME ; ## - _ZTI20CSimpleSipConnection @ 15 NONAME ; ## - _ZTI25CSimpleSipProfileObserver @ 16 NONAME ; ## - _ZTI28CSimpleSipConnectionObserver @ 17 NONAME ; ## - _ZTV14CSimpleRequest @ 18 NONAME ; ## - _ZTV18CSimpleExpiryTimer @ 19 NONAME ; ## - _ZTV18CSimpleSettingFile @ 20 NONAME ; ## - _ZTV19CSimpleRefreshTimer @ 21 NONAME ; ## - _ZTV20CSimpleSipConnection @ 22 NONAME ; ## - _ZTV25CSimpleSipProfileObserver @ 23 NONAME ; ## - _ZTV28CSimpleSipConnectionObserver @ 24 NONAME ; ## + _ZN20CSimpleSipConnection19CurrentSIPIdentityLEv @ 2 NONAME + _ZN20CSimpleSipConnection4NewLEv @ 3 NONAME + _ZN20CSimpleSipConnection8SIPStateEv @ 4 NONAME + _ZN20CSimpleSipConnection9SIPStatusEiRi @ 5 NONAME + _ZN20CSimpleSipConnectionD0Ev @ 6 NONAME + _ZN20CSimpleSipConnectionD1Ev @ 7 NONAME + _ZN20CSimpleSipConnectionD2Ev @ 8 NONAME + _ZTI14CSimpleRequest @ 9 NONAME ; ## + _ZTI18CSimpleExpiryTimer @ 10 NONAME ; ## + _ZTI18CSimpleSettingFile @ 11 NONAME ; ## + _ZTI19CSimpleRefreshTimer @ 12 NONAME ; ## + _ZTI20CSimpleSipConnection @ 13 NONAME ; ## + _ZTI25CSimpleSipProfileObserver @ 14 NONAME ; ## + _ZTI28CSimpleSipConnectionObserver @ 15 NONAME ; ## + _ZTV14CSimpleRequest @ 16 NONAME ; ## + _ZTV18CSimpleExpiryTimer @ 17 NONAME ; ## + _ZTV18CSimpleSettingFile @ 18 NONAME ; ## + _ZTV19CSimpleRefreshTimer @ 19 NONAME ; ## + _ZTV20CSimpleSipConnection @ 20 NONAME ; ## + _ZTV25CSimpleSipProfileObserver @ 21 NONAME ; ## + _ZTV28CSimpleSipConnectionObserver @ 22 NONAME ; ## + _ZN20CSimpleSipConnection20SipSubscriptionStateER20MSimpleEngineRequest @ 23 NONAME - - diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/group/simplesiputils.mmp --- a/simpleengine/siputils/group/simplesiputils.mmp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/group/simplesiputils.mmp Tue Aug 31 15:35:50 2010 +0300 @@ -42,7 +42,7 @@ USERINCLUDE ../../inc // default system include paths for middleware layer modules -APP_LAYER_SYSTEMINCLUDE +MW_LAYER_SYSTEMINCLUDE DEBUGLIBRARY flogger.lib DEBUGLIBRARY efsrv.lib // file server @@ -56,5 +56,3 @@ LIBRARY bafl.lib // string pool LIBRARY centralrepository.lib LIBRARY presencesettingsapi.lib -// access to uiservicetabsettings -LIBRARY vimpstsettings.lib diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/inc/simplesettings.h --- a/simpleengine/siputils/inc/simplesettings.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/inc/simplesettings.h Tue Aug 31 15:35:50 2010 +0300 @@ -120,7 +120,7 @@ * @param aId key id * @return value of the key */ - TInt TSimpleSettings::GetCenRepIntValueL( + TInt GetCenRepIntValueL( CRepository* aRepository, TUint32 aId ); diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/inc/simplesipconncallback.h --- a/simpleengine/siputils/inc/simplesipconncallback.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/inc/simplesipconncallback.h Tue Aug 31 15:35:50 2010 +0300 @@ -53,13 +53,6 @@ */ virtual void ConnectionStateChange( TSimpleSipState aState, TInt aSipError) = 0; - - /** - * Connection method has changed (Roaming). - * - * @since S60 3.2.3 - */ - virtual void ConnectionChanged() = 0; /** * Time to refresh a request diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/inc/simplesipconnection.h --- a/simpleengine/siputils/inc/simplesipconnection.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/inc/simplesipconnection.h Tue Aug 31 15:35:50 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 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" @@ -120,12 +120,6 @@ MSimpleEngineRequest& aReq ); /** - * Set service id - * @param aServiceId new service id - */ - IMPORT_C void SetServiceId( TInt32 aServiceId ); - - /** * Search the corresponding client request * * @since S60 v3.2 @@ -247,13 +241,6 @@ */ TInt HandleReceivedMessage( const TDesC8& aFrom, const TDesC8& aContent ); - - /** - * Connection method has changed (Roaming). - * - * @since S60 3.2.3 - */ - void ConnectionChanged(); protected: @@ -373,15 +360,7 @@ * @since S60 v3.2 */ void DeleteRequests(); - - /** - * Delete all pending specified type of requests. - * - * @since S60 5.0 - * @param aRequestType request type - */ - void DeleteRequests( CSimpleRequest::TSimpleSipReqType aRequestType ); - + /** * Destroy the request * @@ -580,13 +559,6 @@ */ void DoHandleReceivedMessageL( const TDesC8& aFrom, const TDesC8& aContent, CSimpleRequest& aRequest ); - - /** - * Stores ETag to vimpstsettingstore - * - * @since S60 5.0 - */ - void StoreETagL( HBufC8& aTag ); private: // Data @@ -639,11 +611,6 @@ * Current number of subscriptions */ TUint iCurrentNbrSubs; - - /** - * Service id of current service - */ - TInt32 iServiceId; #ifdef _DEBUG friend class T_CSimpleSipConnection; diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/inc/simplesipconnectionobserver.h --- a/simpleengine/siputils/inc/simplesipconnectionobserver.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/inc/simplesipconnectionobserver.h Tue Aug 31 15:35:50 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 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" @@ -85,15 +85,7 @@ * @param aSipError SIP error code */ void ProfileStateChanged( - CSIPConnection::TState aState, TInt aSipError ); - - /** - * SIP Profile has updated. - * - * @see MSIPProfileRegistryObserver::EProfileUpdated - * @since S60 3.2.3 - */ - void ProfileUpdated(); + CSIPConnection::TState aState, TInt aSipError ); // from base class MSIPConnectionObserver @@ -120,6 +112,7 @@ /** * A SIP response received from the network. * @param aTransaction contains response elements. + * The ownership is transferred. */ void IncomingResponse( CSIPClientTransaction& aTransaction ); @@ -288,6 +281,7 @@ /** * A SIP response received from the network. * @param aTransaction contains response elements. + * The ownership is transferred. */ void DoIncomingResponse( CSIPClientTransaction& aTransaction ); diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/src/simpledebugutils.cpp --- a/simpleengine/siputils/src/simpledebugutils.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/src/simpledebugutils.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -57,9 +57,6 @@ _LIT(KLogFile, "simple.txt"); // Write to log file RFileLogger::Write(KLogDir, KLogFile, EFileLoggingModeAppend, buf); - - _LIT( KSimplePrefix, "[simple] "); - buf.Insert( 0, KSimplePrefix ); RDebug::RawPrint( buf ); } diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/src/simplesettings.cpp --- a/simpleengine/siputils/src/simplesettings.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/src/simplesettings.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -127,8 +127,8 @@ TRAP_IGNORE( repository = CRepository::NewL( KCRUIDSimpleVariation )); if ( repository ) { - //TRAP_IGNORE( iExpiryPuhlish = GetCenRepIntValueL( - // repository, KSimplePublishRefresh )); + TRAP_IGNORE( iExpiryPuhlish = GetCenRepIntValueL( + repository, KSimplePublishRefresh )); TRAP_IGNORE( iExpiryWatcher = GetCenRepIntValueL( repository, KSimpleSubscribeRefresh )); TRAP_IGNORE( iExpiryWinfo = GetCenRepIntValueL( diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/src/simplesipconnection.cpp --- a/simpleengine/siputils/src/simplesipconnection.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/src/simplesipconnection.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006-2010 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" @@ -36,7 +36,6 @@ #include #include #include -#include // sip codec api #include @@ -52,8 +51,6 @@ #include #include -#include - // own simple #include "simplesipconnection.h" #include "simplesipconnectionobserver.h" @@ -83,6 +80,10 @@ _LIT8 ( KSimpleNoresource, "Noresource" ); _LIT8 ( KSipPrefix, "sip:" ); +// UID given for CSIP class. SIP Utils listens to new SIP requests +// (when receiving IM) outside SIP dialogs. +const TUid KSimpleSIPUtilsUID = { 0x10281EEC }; + // ================= MEMBER FUNCTIONS ======================= // @@ -113,7 +114,6 @@ delete iConnectionObserver; delete iSip; DeleteRequests(); - DeleteRequests( CSimpleRequest::EReqReceiveIM ); SIPStrings::Close(); } @@ -140,8 +140,11 @@ TSimpleLogger::Log( _L("SipConnection: ConstructL 20-01-07 this=%d" ), (TInt)this ); #endif - + // initialize members + iSip = CSIP::NewL( KSimpleSIPUtilsUID, *this ); iConnectionObserver = CSimpleSipConnectionObserver::NewL( *this); + iProfileObserver = + CSimpleSipProfileObserver::NewL( iSip, *iConnectionObserver); SIPStrings::OpenL(); // read static cenrep settings iSettings.ReadCentRepSettings(); @@ -447,22 +450,36 @@ // Start to fill header, Remote URI CSIPRequestElements* elems = CSIPRequestElements::NewL( uri ); CleanupStack::PushL( elems ); // CS: 3 - + TUriParser8 parser3; User::LeaveIfError( parser3.Parse( iProfileObserver-> GiveUserAorL() )); - uri = CUri8::NewL( parser3 ); + uri = CUri8::NewLC( parser3 ); // CS: 4 + CSIPAddress* sipAddress = CSIPAddress::NewL( uri ); + CleanupStack::Pop( uri ); // ownership given to sipAddress // CS: 3 + CleanupStack::PushL( sipAddress ); // CS: 4 // From Header CSIPFromHeader* fromH = CSIPFromHeader::NewL( sipAddress ); - elems->SetFromHeaderL( fromH ); // fromH, ownership given to elems + CleanupStack::Pop( sipAddress ); // ownership given to FromH // CS: 3 + CleanupStack::PushL( fromH ); // CS: 4 + elems->SetFromHeaderL( fromH ); + // fromH, ownership given to elems + CleanupStack::Pop( fromH ); // CS: 3 - uri = CUri8::NewL( parser ); + uri = CUri8::NewLC( parser ); // CS: 4 + CSIPAddress* addr = CSIPAddress::NewL( uri ); + CleanupStack::Pop( uri ); // CS: 3 + CleanupStack::PushL( addr ); // CS: 4 + // To Header CSIPToHeader* toHeader = CSIPToHeader::NewL( addr ); + CleanupStack::Pop( addr ); // CS: 3 + CleanupStack::PushL( toHeader ); // CS: 4 elems->SetToHeaderL( toHeader ); + CleanupStack::Pop( toHeader ); // CS: 3 CSIPMessageElements& mesElems = elems->MessageElements(); @@ -480,30 +497,29 @@ mesElems.SetUserHeadersL( headers ); // headers ownership given to mesElems - CleanupStack::Pop( &headers ); // CS: 3 + CleanupStack::Pop( &headers ); // CS: 3 } // Set content type and content - HBufC8* buffer = aContent.AllocLC(); // CS: 4 - CSIPContentTypeHeader* contTypeH = CSIPContentTypeHeader::NewL( - KSimpleMediaType, KSimpleMediaSubType ); - CleanupStack::Pop( buffer ); // CS: 3 + CSIPContentTypeHeader* contTypeH = CSIPContentTypeHeader::NewLC( + KSimpleMediaType, KSimpleMediaSubType ); // CS: 4 + HBufC8* buffer = aContent.AllocLC(); // CS: 5 mesElems.SetContentL( buffer, contTypeH ); // buffer ownership given to mesElems + CleanupStack::Pop( buffer ); // CS: 4 // contTypeH ownership given to mesElems + CleanupStack::Pop( contTypeH ); // CS: 3 // Set method elems->SetMethodL( SIPStrings::StringF( SipStrConsts::EMessage ) ); - CleanupStack::Pop( elems ); // CS: 2 // Send the request transaction - // elems, ownership given CSIPClientTransaction* sipTrans = iSipConnection->SendRequestL( elems, *regContext ); // Save SIP client transaction request->SetTransaction( sipTrans ); - + CleanupStack::Pop( elems ); // elems, ownership given // CS: 2 CleanupStack::PopAndDestroy( temp ); // CS: 1 // Start refresh timer, it's used for garbage collection too. @@ -1075,15 +1091,6 @@ KSimpleMultiType, KSimpleMultipartSubType ); User::LeaveIfError( headers.Append( acceH )); ++popCount; - - // add supported header with value eventlist - RPointerArray suppHs = - CSIPSupportedHeader::DecodeL( KSimpleEventlist); - for( TInt count=0; count < suppHs.Count(); count++ ) - { - User::LeaveIfError( headers.Append( suppHs[count] )); - } - suppHs.Close(); } if ( r->Match( CSimpleRequest::EReqSubscribeWinfo )) { @@ -1263,49 +1270,6 @@ } // ---------------------------------------------------------- -// CSimpleSipConnection::ConnectionChanged -// ---------------------------------------------------------- -// -void CSimpleSipConnection::ConnectionChanged() - { -#ifdef _DEBUG - TSimpleLogger::Log(_L("SipConnection: ConnectionChanged")); - if( iSipConnection ) - { - TSimpleLogger::Log(_L("SipConnection: ConnectionChanged : old conn state %d (internal:%d)"), iSipConnection->State(), iSipState ); - TSimpleLogger::Log(_L("SipConnection: ConnectionChanged : old IAP %d"), iSipConnection->IapId() ); - } -#endif - - iCurrentNbrSubs = 0; - CSIPConnection* conn = NULL; - TRAPD( err, conn = iProfileObserver->GiveConnectionL() ); - if( !err ) - { - delete iSipConnection; - iSipConnection = conn; -#ifdef _DEBUG - TSimpleLogger::Log(_L("SipConnection: ConnectionChanged : new conn state %d"), iSipConnection->State() ); - TSimpleLogger::Log(_L("SipConnection: ConnectionChanged : new IAP %d"), iSipConnection->IapId() ); -#endif - } -#ifdef _DEBUG - else - { - TSimpleLogger::Log(_L("SipConnection: ConnectionChanged : Get SIP connection error %d"), err ); - } -#endif - - if( iSipConnection ) - { - if( iSipState != iSipConnection->State() ) - { - iConnectionObserver->ConnectionStateChanged( iSipConnection->State() ); - } - } - } - -// ---------------------------------------------------------- // CSimpleSipConnection::StartToCheckExpiryL // ---------------------------------------------------------- // @@ -1406,40 +1370,7 @@ { CSimpleRequest* req = rIter; rIter++; //lint !e1757 - - // open request EReqReceiveIM should not be deleted - // will be deleted only when im message received - // or destructor is called. - if ( !req->Match( CSimpleRequest::EReqReceiveIM ) ) - { - req->Destroy(); - } - } - } - -// ----------------------------------------------------------------------------- -// CSimpleSipConnection::DeleteRequests -// ----------------------------------------------------------------------------- -void CSimpleSipConnection::DeleteRequests( - CSimpleRequest::TSimpleSipReqType aRequestType ) - { -#ifdef _DEBUG - TSimpleLogger::Log(_L("SipConnection: DeleteRequests type=%d" ), - aRequestType ); -#endif - // Delete buffered transaction requests match to the aRequestType - TDblQueIter rIter( iRequestList ); - rIter.SetToFirst(); - - while ( rIter ) - { - CSimpleRequest* req = rIter; - rIter++; //lint !e1757 - - if ( req->Match( aRequestType ) ) - { - req->Destroy(); - } + req->Destroy(); } } @@ -1745,8 +1676,6 @@ HBufC8* hValue = header->ToTextValueL(); // hValue ownership is transferred aReq->SetETag( hValue ); - // store etag to vimpstsettingstore - StoreETagL( *hValue ); ETagReceived = ETrue; } else if ( header->Name() == SIPStrings::StringF( SipStrConsts::EExpiresHeader)) @@ -1766,12 +1695,6 @@ { // Remove old ETag if nore received or if the expires header was 0 in our request. aReq->SetETag( NULL ); - //TPtrC8 nullETag = nullETag.Alloc( KNullDesC8 ); - TBufC8<1> nullETag( KNullDesC8 ); - HBufC8* buf; - buf = nullETag.Alloc(); - StoreETagL( *buf ); - delete buf; } // PopAndDestroy calls extensionName.Close() CleanupStack::PopAndDestroy( &extensionName ); @@ -2147,19 +2070,7 @@ #endif iSettings.ReadOTASettingsL( aReq.Aux() ); - - TInt32 uniqueId = iSettings.SipProfileId(); - TUid uniqueUid; - uniqueUid.iUid = uniqueId; - - if ( !iSip && !iProfileObserver ) - { - iSip = CSIP::NewL( uniqueUid, *this ); - - iProfileObserver = CSimpleSipProfileObserver::NewL( - iSip, *iConnectionObserver); - } - + iProfileObserver->RegisterGivenProfileL( iSettings.SipProfileId() ); SetSipState( ESimpleSipIdle ); TRAPD( err, iSipConnection = iProfileObserver->GiveConnectionL() ); @@ -2628,9 +2539,11 @@ { if ( aState == ESimpleSipActive ) { - // Check that SIP Profile is ready. + // Check that both SIP Profile and SIP connection are ready. // iProfileObserver is created in ConstructL. - if ( iProfileObserver->IsProfileActive() ) + if ( iProfileObserver->IsProfileActive() && + iSipConnection && + iSipConnection->State() == CSIPConnection::EActive ) { SetSipState( aState ); } @@ -2664,36 +2577,3 @@ #endif } -// ----------------------------------------------------------------------------- -// CSimpleRequest::SetServiceId -// ----------------------------------------------------------------------------- -EXPORT_C void CSimpleSipConnection::SetServiceId( TInt32 aServiceId ) - { -#ifdef _DEBUG - TSimpleLogger::Log( _L( - "CSimpleSipConnection::SetServiceId old serviceId = %d, new serviceId = %d" ), - iServiceId, aServiceId ); -#endif - iServiceId = aServiceId; - } - -// ----------------------------------------------------------------------------- -// CSimpleRequest::StoreETag -// ----------------------------------------------------------------------------- -void CSimpleSipConnection::StoreETagL( HBufC8& aETag ) - { -#ifdef _DEBUG - TBuf<255> printDocumentId; - printDocumentId.Copy( aETag ); - TSimpleLogger::Log(_L("CSimpleSipConnection: StoreETag ETag = %S, serviceId = %d" ), - &printDocumentId, iServiceId ); -#endif - MVIMPSTSettingsStore* settings = CVIMPSTSettingsStore::NewLC(); - - // Store ETag to uiservicetabsettings - User::LeaveIfError( settings->SetL( - iServiceId, EServicePresenceSessionIdentifier, aETag ) ); - - CleanupStack::PopAndDestroy(); //settings - } - diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/src/simplesipconnectionobserver.cpp --- a/simpleengine/siputils/src/simplesipconnectionobserver.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/src/simplesipconnectionobserver.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -160,18 +160,6 @@ } // ----------------------------------------------------------------------------- -// CSimpleSipConnectionObserver::ProfileUpdated -// ----------------------------------------------------------------------------- -// -void CSimpleSipConnectionObserver::ProfileUpdated() - { -#ifdef _DEBUG - TSimpleLogger::Log(_L("SipConnectionObserver: ProfileUpdated")); -#endif - iCallback.ConnectionChanged(); - } - -// ----------------------------------------------------------------------------- // CSimpleSipConnectionObserver::ConnectionStateChanged2 // ----------------------------------------------------------------------------- // @@ -580,15 +568,13 @@ Extract( EUriUserinfo ); const TDesC8& host = fromHeader->SIPAddress().Uri8().Uri(). Extract( EUriHost ); - - CleanupStack::PushL( aTransaction ); // CS: 1 - HBufC8* from = HBufC8::NewLC( user.Length() + KAt().Length() + host.Length() ); // CS: 1 from->Des().Copy( user ); from->Des().Append( KAt() ); from->Des().Append( host ); + CleanupStack::PushL( aTransaction ); // CS: 2 CSIPResponseElements* respElem = CSIPResponseElements::NewLC( // CS: 3 KSimpleOK, SIPStrings::StringF( SipStrConsts::EPhraseOk ) ); @@ -596,10 +582,10 @@ aTransaction->SendResponseL( respElem ); CleanupStack::Pop( respElem ); // CS: 2 - + CleanupStack::Pop( aTransaction ); // CS: 1 + iCallback.HandleReceivedMessage( *from, content ); - CleanupStack::PopAndDestroy( from ); // CS: 1 - CleanupStack::Pop( aTransaction ); // CS: 0 + CleanupStack::PopAndDestroy( from ); // CS: 0 } // We no longer need aTransaction. Just delete it. diff -r 2580314736af -r 2669f8761a99 simpleengine/siputils/src/simplesipprofileobserver.cpp --- a/simpleengine/siputils/src/simplesipprofileobserver.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/siputils/src/simplesipprofileobserver.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -272,14 +272,7 @@ } else if ( aEvent == EProfileUpdated ) { -#ifdef _DEBUG - TSimpleLogger::Log(_L("SipProfileObserver: EProfileUpdated - ProfileEnabled : %d" ), iRegistry->IsEnabled( *iProfile ) ); - TSimpleLogger::Log(_L("SipProfileObserver: EProfileUpdated - Profile reg er : %d" ), iRegistry->LastRegistrationError( *iProfile ) ); - TSimpleLogger::Log(_L("SipProfileObserver: EProfileUpdated - IsContextActive : %d" ), iProfile->IsContextActive() ); -#endif - - // Notify observer to refresh SIP connection. - iObs.ProfileUpdated(); + iObs.ProfileStateChanged( CSIPConnection::EUnavailable, KErrNone ); } else if ( aEvent == EProfileDestroyed ) { diff -r 2580314736af -r 2669f8761a99 simpleengine/xdmrlspres/eabi/rlspresxdmU.DEF --- a/simpleengine/xdmrlspres/eabi/rlspresxdmU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/xdmrlspres/eabi/rlspresxdmU.DEF Tue Aug 31 15:35:50 2010 +0300 @@ -98,14 +98,14 @@ _ZN7CRLSXDM18UpdateDisplayNameLERK7TDesC16S2_S2_ @ 97 NONAME _ZN7CRLSXDM19DeleteAllEmptyListsEP23MRLSPresXDMAsyncHandler @ 98 NONAME _ZN7CRLSXDM19SwitchToServiceURILERK7TDesC16 @ 99 NONAME - _ZN7CRLSXDM20UpdateAllFromServerLEP23MRLSPresXDMAsyncHandler @ 100 NONAME - _ZN7CRLSXDM26DeleteAllEmptyServiceUrisLEv @ 101 NONAME - _ZN7CRLSXDM4NewLEi @ 102 NONAME - _ZN7CRLSXDM5NewLCEi @ 103 NONAME - _ZN7CRLSXDM9DeleteAllEv @ 104 NONAME - _ZTI12CPresenceXDM @ 105 NONAME ; ## - _ZTI7CRLSXDM @ 106 NONAME ; ## - _ZTV12CPresenceXDM @ 107 NONAME ; ## - _ZTV7CRLSXDM @ 108 NONAME ; ## - _ZN7CRLSXDM20NegotiatedServiceUriEv @ 109 NONAME + _ZN7CRLSXDM20NegotiatedServiceUriEv @ 100 NONAME + _ZN7CRLSXDM20UpdateAllFromServerLEP23MRLSPresXDMAsyncHandler @ 101 NONAME + _ZN7CRLSXDM26DeleteAllEmptyServiceUrisLEv @ 102 NONAME + _ZN7CRLSXDM4NewLEi @ 103 NONAME + _ZN7CRLSXDM5NewLCEi @ 104 NONAME + _ZN7CRLSXDM9DeleteAllEv @ 105 NONAME + _ZTI12CPresenceXDM @ 106 NONAME + _ZTI7CRLSXDM @ 107 NONAME + _ZTV12CPresenceXDM @ 108 NONAME + _ZTV7CRLSXDM @ 109 NONAME diff -r 2580314736af -r 2669f8761a99 simpleengine/xdmrlspres/group/bld.inf --- a/simpleengine/xdmrlspres/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/xdmrlspres/group/bld.inf Tue Aug 31 15:35:50 2010 +0300 @@ -27,14 +27,14 @@ rlspresxdm.mmp PRJ_EXPORTS -../inc/rlspresxdmconsts.h /epoc32/include/mw/rlspresxdmconsts.h -../inc/cpresencexdm.h /epoc32/include/mw/cpresencexdm.h -../inc/mrlspresxdmasynchandler.h /epoc32/include/mw/mrlspresxdmasynchandler.h -../inc/presenceactionxdm.h /epoc32/include/mw/presenceactionxdm.h -../inc/prescondidentityone.h /epoc32/include/mw/prescondidentityone.h -../inc/prescondidentitymany.h /epoc32/include/mw/prescondidentitymany.h -../inc/prescondvalidity.h /epoc32/include/mw/prescondvalidity.h -../inc/prescondsphere.h /epoc32/include/mw/prescondsphere.h -../inc/presencetransformxdm.h /epoc32/include/mw/presencetransformxdm.h -../inc/crlsxdm.h /epoc32/include/mw/crlsxdm.h -../inc/prescondmisc.h /epoc32/include/mw/prescondmisc.h +../inc/rlspresxdmconsts.h MW_LAYER_PLATFORM_EXPORT_PATH(rlspresxdmconsts.h) +../inc/cpresencexdm.h MW_LAYER_PLATFORM_EXPORT_PATH(cpresencexdm.h) +../inc/mrlspresxdmasynchandler.h MW_LAYER_PLATFORM_EXPORT_PATH(mrlspresxdmasynchandler.h) +../inc/presenceactionxdm.h MW_LAYER_PLATFORM_EXPORT_PATH(presenceactionxdm.h) +../inc/prescondidentityone.h MW_LAYER_PLATFORM_EXPORT_PATH(prescondidentityone.h) +../inc/prescondidentitymany.h MW_LAYER_PLATFORM_EXPORT_PATH(prescondidentitymany.h) +../inc/prescondvalidity.h MW_LAYER_PLATFORM_EXPORT_PATH(prescondvalidity.h) +../inc/prescondsphere.h MW_LAYER_PLATFORM_EXPORT_PATH(prescondsphere.h) +../inc/presencetransformxdm.h MW_LAYER_PLATFORM_EXPORT_PATH(presencetransformxdm.h) +../inc/crlsxdm.h MW_LAYER_PLATFORM_EXPORT_PATH(crlsxdm.h) +../inc/prescondmisc.h MW_LAYER_PLATFORM_EXPORT_PATH(prescondmisc.h) diff -r 2580314736af -r 2669f8761a99 simpleengine/xdmrlspres/group/rlspresxdm.mmp --- a/simpleengine/xdmrlspres/group/rlspresxdm.mmp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/xdmrlspres/group/rlspresxdm.mmp Tue Aug 31 15:35:50 2010 +0300 @@ -53,7 +53,7 @@ LIBRARY charconv.lib -#if defined( ARMCC ) +#if defined( EABI ) DEFFILE ../eabi/ #elif defined ( WINSCW ) deffile ../bwinscw/ diff -r 2580314736af -r 2669f8761a99 simpleengine/xdmrlspres/src/crlsxdm.cpp --- a/simpleengine/xdmrlspres/src/crlsxdm.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/xdmrlspres/src/crlsxdm.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -709,7 +709,7 @@ RPointerArray confirmedNodes; CXdmDocumentNode* currentNode = serviceUriNode; - confirmedNodes.AppendL(currentNode); + confirmedNodes.Append(currentNode); if(count>1) // if some list(s) exist in path info { @@ -734,7 +734,7 @@ for (TInt j=0;jAppendL(aLists.MdcaPoint(j)); - iListPointerPath.AppendL(confirmedNodes[j]); + iListPointerPath.Append(confirmedNodes[j]); } confirmedNodes.Close(); diff -r 2580314736af -r 2669f8761a99 simpleengine/xdmrlspres/src/prescondvalidity.cpp --- a/simpleengine/xdmrlspres/src/prescondvalidity.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/xdmrlspres/src/prescondvalidity.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -61,8 +61,6 @@ OPENG_DP(D_OPENG_LIT( "TPresCondValidity::GetValidity()" ) ); OPENG_DP(D_OPENG_LIT( " aRuleID = %S"),&aRuleID); - CleanupClosePushL (aValidTimes); - CXdmDocumentNode* validityNode = GetValidityNodeL(aRuleID, EFalse); if(validityNode==NULL) return KErrNotFound; @@ -101,7 +99,7 @@ for(TInt i=0; iSetLeafNode(ETrue); @@ -136,8 +134,6 @@ fromNodes.Close(); untilNodes.Close(); - - CleanupStack::Pop(); return KErrNone; } diff -r 2580314736af -r 2669f8761a99 simpleengine/xdmrlspres/src/presencetransformxdm.cpp --- a/simpleengine/xdmrlspres/src/presencetransformxdm.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/xdmrlspres/src/presencetransformxdm.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -181,7 +181,7 @@ if ((nodeName==KPresAllDevices)||(nodeName==KPresAllPersons)|| (nodeName==KPresAllServices)) { - aTypeAndValues.AppendL(myDataCompo); + aTypeAndValues.Append(myDataCompo); break; } diff -r 2580314736af -r 2669f8761a99 simpleengine/xmlutils/inc/simpleelement.h --- a/simpleengine/xmlutils/inc/simpleelement.h Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/xmlutils/inc/simpleelement.h Tue Aug 31 15:35:50 2010 +0300 @@ -276,7 +276,7 @@ void ConstructL( const TDesC8& aNsUri, const TDesC8& aLocalName ); - void CSimpleElement::ConstructL( + void ConstructL( CSenElement* aElem, TBool aOwn ); diff -r 2580314736af -r 2669f8761a99 simpleengine/xmlutils/src/simpledocument.cpp --- a/simpleengine/xmlutils/src/simpledocument.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/xmlutils/src/simpledocument.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -196,14 +196,12 @@ void CSimpleDocument::GetDirectContentsL( RPointerArray& aContents ) { - CleanupClosePushL( aContents ); aContents.Reset(); TInt myCount = iContents.Count(); for ( TInt i = 0; iBaseElement(); // externalize the document into stream @@ -678,7 +676,7 @@ // calculate the size of headers TInt headerSize = KContentTypeSize + KCIDSize; HBufC8* headers = HBufC8::NewL( headerSize ); - aBuffers.AppendL( headers ); + aBuffers.Append( headers ); TPtr8 pH(headers->Des()); // append to MIME headers for the root part pH.Append( NSimpleDocument::NSimpleRoot::KContentType ); @@ -691,7 +689,7 @@ { // Let's convert next element into CBodyPart CBodyPart* cp = CBodyPart::NewL(); - aBodies.AppendL( cp ); + aBodies.Append( cp ); // Set Headers headerSize = NSimpleDocument::NSimpleContent::KContentTypeSize + @@ -702,7 +700,7 @@ headers = HBufC8::NewL( headerSize ); // Append to cleanup array - aBuffers.AppendL( headers ); + aBuffers.Append( headers ); pH.Set( headers->Des() ); // _LIT8( KMyContentType, "Content-Type: %S\r\n"); @@ -718,7 +716,7 @@ // BASE64 encode HBufC8* body64 = HBufC8::NewL( (iContents[i])->Body().Length() * KB64Expand ); - aBuffers.AppendL( body64 ); + aBuffers.Append( body64 ); TImCodecB64 codec64; codec64.Initialise(); TPtr8 desti8 = body64->Des(); diff -r 2580314736af -r 2669f8761a99 simpleengine/xmlutils/src/simpleelement.cpp --- a/simpleengine/xmlutils/src/simpleelement.cpp Thu Aug 19 10:19:02 2010 +0300 +++ b/simpleengine/xmlutils/src/simpleelement.cpp Tue Aug 31 15:35:50 2010 +0300 @@ -221,7 +221,6 @@ TInt CSimpleElement::SimpleElementsL( RPointerArray& aElementArray ) { - CleanupClosePushL( aElementArray ); // Reset the output array first. aElementArray.Reset(); iElements.ResetAndDestroy(); @@ -235,12 +234,10 @@ CSenElement* pElement = elems[i]; CSimpleElement* simple = CSimpleElement::NewL( pElement, EFalse ); CleanupStack::PushL( simple ); - iElements.AppendL( simple ); + User::LeaveIfError( aElementArray.Append( simple )); CleanupStack::Pop( simple ); - aElementArray.AppendL( simple ); + User::LeaveIfError( iElements.Append( simple ) ); } - CleanupStack::Pop( &aElementArray ); - return elemCount ? KErrNone : KErrNotFound; } @@ -295,8 +292,6 @@ // TInt CSimpleElement::SimpleAttributesL( RPointerArray& aArray ) { - CleanupClosePushL( aArray ); - // Reset the output array first. aArray.Reset(); iAttributes.ResetAndDestroy(); @@ -309,12 +304,10 @@ CSenBaseAttribute* pAttr = elems[i]; CSimpleAttribute* attr = CSimpleAttribute::NewL( pAttr ); CleanupStack::PushL( attr ); - iAttributes.AppendL( attr ); + User::LeaveIfError(iAttributes.Append( attr )); CleanupStack::Pop( attr ); - aArray.AppendL( attr ); + User::LeaveIfError(aArray.Append( attr )); } - CleanupStack::Pop( &aArray ); - return elemCount ? KErrNone : KErrNotFound; } diff -r 2580314736af -r 2669f8761a99 sysdef_1_5_1.dtd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysdef_1_5_1.dtd Tue Aug 31 15:35:50 2010 +0300 @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/BWINSCW/LocalOperationsU.DEF --- a/xdmprotocols/LocalProtocol/LocalOperations/BWINSCW/LocalOperationsU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &) - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/eabi/LocalOperationsU.DEF --- a/xdmprotocols/LocalProtocol/LocalOperations/eabi/LocalOperationsU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - _Z24ImplementationGroupProxyRi @ 1 NONAME - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/group/LocalOperations.mmp --- a/xdmprotocols/LocalProtocol/LocalOperations/group/LocalOperations.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) 2005 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: LocalOperations.mmp -* -*/ - - - -#include - -TARGET localoperations.dll -UID 0x10009D8D 0x10275086 -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT -TARGETTYPE PLUGIN - -SOURCEPATH ../src - -START RESOURCE 10275086.rss - - TARGET localoperations.rsc - -END - -SOURCE LocalAddition.cpp -SOURCE LocalDeletion.cpp -SOURCE LocalRetrieval.cpp -SOURCE LocalReplacement.cpp -SOURCE LocalOperationBase.cpp -SOURCE LocalOperationFactory.cpp - -USERINCLUDE ../inc -USERINCLUDE ../../inc -USERINCLUDE ../../../inc - -//Parser -USERINCLUDE ../../../XdmXmlParser/inc - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/xml -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../../inc - -LIBRARY hal.lib -LIBRARY ecom.lib -LIBRARY efsrv.lib -LIBRARY euser.lib -LIBRARY xdmengine.lib -LIBRARY xdmxmlparser.lib -LIBRARY localprotocol.lib - -#if defined( ARMCC ) -DEFFILE ../eabi/ -#elif defined ( WINSCW ) -deffile ../BWINSCW/ -#elif defined (WINS ) -deffile ../BWINS/ -#endif - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/group/bld.inf --- a/xdmprotocols/LocalProtocol/LocalOperations/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2005 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: LocalOperations bld.inf -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- -LocalOperations.mmp - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/inc/LocalAddition.h --- a/xdmprotocols/LocalProtocol/LocalOperations/inc/LocalAddition.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -/* -* Copyright (c) 2003 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: CLocalAddition -* -*/ - - - - -#ifndef __LOCALADDITION__ -#define __LOCALADDITION__ - -#include -#include "XdmOperation.h" -#include "LocalOperationBase.h" - -//FORWARD DECLARATIONS -class CXdmDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalAddition ) : public CLocalOperationBase - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CLocalAddition* NewL( CLocalDocument& aParentDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ); - - /** - * Destructor. - */ - virtual ~CLocalAddition(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CLocalAddition( CLocalDocument& aParentDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void HandlePartialUpdateL( TInt aDataLength ); - - private: //From MXdmOperation - - /** - * Execute this operation synchronously - */ - void ExecuteL(); - - /** - * Set this operation to completed state. - */ - void Destroy(); - - private: //Data - - - TXdmOperationType iOperationType; - CXdmDocumentNode* iDocumentSubset; - }; - -#endif //__LOCALADDITION__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/inc/LocalDeletion.h --- a/xdmprotocols/LocalProtocol/LocalOperations/inc/LocalDeletion.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDeletion -* -*/ - - - - -#ifndef __LOCALDELETION__ -#define __LOCALDELETION__ - -#include -#include "XdmOperation.h" -#include "LocalOperationBase.h" - -//FORWARD DECLARATIONS -class CXdmDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalDeletion ) : public CLocalOperationBase - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CLocalDeletion* NewL( CLocalDocument& aParentDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ); - - /** - * Destructor. - */ - virtual ~CLocalDeletion(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CLocalDeletion( CLocalDocument& aTargetDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void HandlePartialDeletionL( TInt aDataLength ); - - private: //From MXdmOperation - - /** - * Execute this operation synchronously - */ - void ExecuteL(); - - /** - * Set this operation to completed state. - */ - void Destroy(); - - private: //Data - - CLocalDocumentNode* iDocumentSubset; - TXdmOperationType iOperationType; - }; - -#endif //__LOCALDELETION__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/inc/LocalOperationBase.h --- a/xdmprotocols/LocalProtocol/LocalOperations/inc/LocalOperationBase.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,155 +0,0 @@ -/* -* Copyright (c) 2003 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: CLocalOperationBase -* -*/ - - - - -#ifndef __LOCALOPERATIONBASE__ -#define __LOCALOPERATIONBASE__ - -#include -#include "XdmOperation.h" - -//FORWARD DECLARATIONS -class CXdmXmlParser; -class CLocalDocument; -class CXdmDocumentNode; -class CLocalDocumentNode; -class CLocalOperationFactory; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalOperationBase ) : public CBase, - public MXdmOperation - { - public: - - /** - * Destructor. - */ - virtual ~CLocalOperationBase(); - - protected: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CLocalOperationBase( const CLocalDocument& aTargetDoc, - CLocalOperationFactory& aOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void BaseConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void WriteFileL( const CXdmDocumentNode* aRootNode ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - HBufC8* FetchXmlDataL( TInt aFileSize ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ReplaceDataFileL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void DeleteDataFileL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - TInt OpenDataFileL( const TDesC& aFilePath ); - - private: - - /** - * Execute this operation asynchronously. - */ - void ExecuteL( TRequestStatus& aStatus, TUint aOptions ); - - /** - * Cancel this operation. - */ - void CancelOperation(); - - /** - * Get the result of this operation. - */ - TInt Result() const; - - /** - * Get the completion data of this operation. - */ - const TXdmCompletionData& CompletionData() const; - - /** - * Set this operation to completed state. - */ - TBool IsCompleted() const; - - /** - * Set this operation to completed state. - */ - CXdmDocumentNode* TargetNode() const; - - /** - * Set this operation to completed state. - */ - void GenerateTimeStampL(); - - HBufC* ConstructTimestampNameL(); - - /** - * Set this operation to completed state. - */ - HBufC8* TimeLC(); - - protected: //Data - - RFile iXmlFile; - TPtrC iFullPath; - CFileMan* iFileManager; - CLocalDocument& iTargetDoc; - CXdmXmlParser* iXmlParser; - TXdmOperationType iOperationType; - TXdmCompletionData iCompletionData; - CLocalOperationFactory& iOperationFactory; - }; - -#endif //__LOCALOPERATIONBASE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/inc/LocalOperationFactory.h --- a/xdmprotocols/LocalProtocol/LocalOperations/inc/LocalOperationFactory.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalOperationFactory -* -*/ - - - - -#ifndef __LOCALOPERATIONFACTORY__ -#define __LOCALOPERATIONFACTORY__ - -#include -#include "XdmOperationFactory.h" - -_LIT( KLocalOpLogFile, "LocalOperations" ); -const TInt KLocalProtLogBufferMaxSize = 2000; - -//FORWARD DECLARATION -class CXdmDocument; -class MXdmOperation; -class CXdmLogWriter; -class CXdmDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalOperationFactory ) : public CXdmOperationFactory - { - public: - - /** - * Two-phased constructor. - * @param CXdmProtocolInfo Protocol info - * @return CXdmProtocol - */ - static CLocalOperationFactory* NewL(); - - /** - * Destructor. A simple wrapper to the C++ destructor. - * - */ - virtual ~CLocalOperationFactory(); - - private: //From CXdmoperationFactory - - /** - * Return an operation object that knows how to manipulate - * whole documents - */ - MXdmOperation* FetchL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode = NULL ) const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - MXdmOperation* InsertL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - MXdmOperation* ReplaceL( CXdmDocument& aOldDocument, - CXdmDocumentNode* aNewNode, - CXdmDocumentNode* aOldNode ) const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - MXdmOperation* AppendL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - MXdmOperation* DeletionL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const; - - public: - - /** - * Logging function - * @param TRefByValue aFmt,... - * @return void - */ - void WriteToLog( TRefByValue aFmt,... ); - - private: - - /** - * C++ constructor - * @return CImpsTcpCirWatcher - */ - void ConstructL(); - - /** - * C++ constructor - * @return CImpsTcpCirWatcher - */ - CLocalOperationFactory(); - - private: //Data - - CXdmLogWriter* iLogWriter; - }; - -#endif diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/inc/LocalReplacement.h --- a/xdmprotocols/LocalProtocol/LocalOperations/inc/LocalReplacement.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalReplacement -* -*/ - - - - -#ifndef __LOCALREPLACEMENT__ -#define __LOCALREPLACEMENT__ - -#include -#include "XdmOperation.h" -#include "LocalOperationBase.h" - -//FORWARD DECLARATIONS -class CLocalDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalReplacement ) : public CLocalOperationBase - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CLocalReplacement* NewL( CLocalDocument& aParentDoc, - CLocalDocumentNode* aOldNode, - CLocalDocumentNode* aNewNode, - CLocalOperationFactory& aOperationFactory ); - - /** - * Destructor. - */ - virtual ~CLocalReplacement(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CLocalReplacement( CLocalDocument& aTargetDoc, - CLocalDocumentNode* aOldNode, - CLocalDocumentNode* aNewNode, - CLocalOperationFactory& aOperationFactory ); - - private: //From MXdmOperation - - /** - * Execute this operation synchronously - */ - void ExecuteL(); - - /** - * Execute this operation synchronously - */ - void HandlePartialReplacementL( TInt aDataLength ); - - /** - * Set this operation to completed state. - */ - void Destroy(); - - private: //Data - - CLocalDocumentNode* iNewNode; - CLocalDocumentNode* iTargetNode; - TXdmOperationType iOperationType; - - }; - -#endif //__LOCALREPLACEMENT__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/inc/LocalRetrieval.h --- a/xdmprotocols/LocalProtocol/LocalOperations/inc/LocalRetrieval.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalRetrieval -* -*/ - - - - -#ifndef __LOCALRETRIEVAL__ -#define __LOCALRETRIEVAL__ - -#include -#include "LocalOperationBase.h" - -class CLocalDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalRetrieval ) : public CLocalOperationBase - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CLocalRetrieval* NewL( CLocalDocument& aParentDoc, - CLocalDocumentNode* aTargetNode, - CLocalOperationFactory& aOperationFactory ); - - /** - * Destructor. - */ - virtual ~CLocalRetrieval(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CLocalRetrieval( CLocalDocument& aTargetDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ); - - private: //From MXdmOperation - - /** - * Execute this operation synchronously - */ - void ExecuteL(); - - /** - * Set this operation to completed state. - */ - void Destroy(); - - private: //Data - - CLocalDocumentNode* iDocumentSubset; - TXdmOperationType iOperationType; - }; - -#endif //__LOCALRETRIEVAL__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/src/10275086.rss --- a/xdmprotocols/LocalProtocol/LocalOperations/src/10275086.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 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: XdmOperationInfo -* -*/ - - -// 10275086.RSS -// -#include "registryinfo.rh" - -//Declares the interface implementations provided -RESOURCE REGISTRY_INFO XdmOperationInfo - { - dll_uid = 0x10275086; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x10207425; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x10275088; - version_no = 1; - display_name = "Local Operation API||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - } - }; - } - }; - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/src/LocalAddition.cpp --- a/xdmprotocols/LocalProtocol/LocalOperations/src/LocalAddition.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,143 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalAddition -* -*/ - - - - -// INCLUDES -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalAddition.h" -#include "XdmXmlParser.h" -#include "LocalDocumentNode.h" -#include "LocalNodeAttribute.h" -#include "LocalOperationFactory.h" - -// --------------------------------------------------------- -// CLocalAddition::CLocalAddition -// -// --------------------------------------------------------- -// -CLocalAddition::CLocalAddition( CLocalDocument& aParentDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ) : - CLocalOperationBase( aParentDoc, aOperationFactory ), - iOperationType( aDocumentSubset == NULL ? - EXdmDocument : EXdmPartialDocument ), - iDocumentSubset( aDocumentSubset ) - - { - } - -// --------------------------------------------------------- -// CLocalAddition::NewL -// -// --------------------------------------------------------- -// -CLocalAddition* CLocalAddition::NewL( CLocalDocument& aParentDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ) - { - CLocalAddition* self = new ( ELeave ) CLocalAddition( aParentDoc, aDocumentSubset, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CLocalAddition::ExecuteL -// -// --------------------------------------------------------- -// -void CLocalAddition::ExecuteL() - { - TPtrC fileName = iTargetDoc.XmlFilePath(); - TInt size = OpenDataFileL( fileName ); - if( size > 0 ) //The document already exists - { - //Only a subset of a document - if( iTargetDoc.IsSubset() && iDocumentSubset != NULL ) - HandlePartialUpdateL( size ); - else WriteFileL( iTargetDoc.DocumentRoot() ); - } - else WriteFileL( iTargetDoc.DocumentRoot() ); - iXmlFile.Close(); - } - -// --------------------------------------------------------- -// CLocalAddition::HandlePartialUpdateL -// -// --------------------------------------------------------- -// -void CLocalAddition::HandlePartialUpdateL( TInt aDataLength ) - { - HBufC8* data = FetchXmlDataL( aDataLength ); - CleanupStack::PushL( data ); - CLocalDocument* copy = iTargetDoc.TempCopyL(); - CleanupStack::PushL( copy ); - iXmlParser->ParseDocumentL( copy, *data ); - RPointerArray results; - CleanupClosePushL( results ); - RPointerArray attributes; - CleanupClosePushL( attributes ); - TInt attrCount = iDocumentSubset->AttributeCount(); - if( attrCount > 0 ) - { - SXdmAttribute16 attribute; - for( TInt i = 0;i < attrCount;i++ ) - { - attribute.iName.Set( iDocumentSubset->Attribute( i )->NodeName() ); - attribute.iValue.Set( iDocumentSubset->Attribute( i )->AttributeValue() ); - } - User::LeaveIfError( attributes.Append( &attribute ) ); - } - copy->Find( iDocumentSubset->NodeName(), results, attributes ); - if( results.Count() == 1 ) - { - iXmlFile.Close(); - ReplaceDataFileL(); - CLocalDocumentNode* node = ( CLocalDocumentNode* )results[0]; - node->AppendLocalL( ( CLocalDocumentNode* )iDocumentSubset ); - WriteFileL( copy->DocumentRoot() ); - } - else User::Leave( KErrGeneral ); - CleanupStack::PopAndDestroy( 4 ); //attributes, results, copy, data - } - -// --------------------------------------------------------- -// CLocalAddition::Destroy -// -// --------------------------------------------------------- -// -void CLocalAddition::Destroy() - { - delete this; - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CLocalAddition::~CLocalAddition() - { - - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/src/LocalDeletion.cpp --- a/xdmprotocols/LocalProtocol/LocalOperations/src/LocalDeletion.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,170 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDeletion -* -*/ - - - - -// INCLUDES -#include "XdmXmlParser.h" -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalDeletion.h" -#include "LocalDocumentNode.h" -#include "LocalNodeAttribute.h" - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CLocalDeletion::CLocalDeletion( CLocalDocument& aTargetDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ) : - CLocalOperationBase( aTargetDoc, aOperationFactory ), - iDocumentSubset( aDocumentSubset ), - iOperationType( aDocumentSubset == NULL ? - EXdmDocument : EXdmPartialDocument ) - { - } - -// --------------------------------------------------------- -// CLocalDeletion::NewL -// -// --------------------------------------------------------- -// -CLocalDeletion* CLocalDeletion::NewL( CLocalDocument& aParentDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ) - { - CLocalDeletion* self = new ( ELeave ) CLocalDeletion( aParentDoc, aDocumentSubset, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CLocalDeletion::ExecuteL -// -// --------------------------------------------------------- -// -void CLocalDeletion::ExecuteL() - { - TPtrC fileName = iTargetDoc.XmlFilePath(); - TInt size = OpenDataFileL( fileName ); - if( size > 0 ) - { - //Only a subset of a document - if( iTargetDoc.IsSubset() ) - HandlePartialDeletionL( size ); - else if( iDocumentSubset != NULL ) - { - iTargetDoc.RemoveData( ( CLocalDocumentNode* )iDocumentSubset ); - iXmlFile.Close(); - ReplaceDataFileL(); - WriteFileL( iTargetDoc.DocumentRoot() ); - } - else - { - iXmlFile.Close(); - DeleteDataFileL(); //Delete the whole document - } - } - else User::Leave( KErrNotFound ); - iXmlFile.Close(); - } - -// --------------------------------------------------------- -// CLocalAddition::HandlePartialUpdateL -// -// --------------------------------------------------------- -// -void CLocalDeletion::HandlePartialDeletionL( TInt aDataLength ) - { - TInt error = KErrNone; - HBufC8* data = FetchXmlDataL( aDataLength ); - CleanupStack::PushL( data ); - TRAP( error, iXmlParser->ParseDocumentL( &iTargetDoc, *data ) ); - CXdmDocumentNode* parent = iDocumentSubset->Parent(); - RPointerArray parentResults; - CleanupClosePushL( parentResults ); - RPointerArray parentAttributes; - CleanupClosePushL( parentAttributes ); - RPointerArray nodeResults; - CleanupClosePushL( nodeResults ); - RPointerArray nodeAttributes; - CleanupClosePushL( nodeAttributes ); - TInt pAttrCount = parent->AttributeCount(); - TInt dAttrCount = iDocumentSubset->AttributeCount(); - if( pAttrCount > 0 ) - { - SXdmAttribute16 attribute; - for( TInt i = 0;i < pAttrCount;i++ ) - { - attribute.iName.Set( parent->Attribute( i )->NodeName() ); - attribute.iValue.Set( parent->Attribute( i )->AttributeValue() ); - } - User::LeaveIfError( parentAttributes.Append( &attribute ) ); - } - if( dAttrCount > 0 ) - { - SXdmAttribute16 attribute; - for( TInt i = 0;i < dAttrCount;i++ ) - { - attribute.iName.Set( iDocumentSubset->Attribute( i )->NodeName() ); - attribute.iValue.Set( iDocumentSubset->Attribute( i )->AttributeValue() ); - } - User::LeaveIfError( nodeAttributes.Append( &attribute ) ); - } - iTargetDoc.Find( parent->NodeName(), parentResults, parentAttributes ); - iTargetDoc.Find( iDocumentSubset->NodeName(), nodeResults, nodeAttributes ); - if( parentResults.Count() == 1 && nodeResults.Count() == 1 ) - { - iXmlFile.Close(); - ReplaceDataFileL(); - CLocalDocumentNode* p = ( CLocalDocumentNode* )parentResults[0]; - CLocalDocumentNode* r = ( CLocalDocumentNode* )nodeResults[0]; - p->RemoveLocalL( r ); - WriteFileL( iTargetDoc.DocumentRoot() ); - } - else User::Leave( KErrGeneral ); - CleanupStack::PopAndDestroy( 5 ); //nodeAttributes, nodeResults, - //parentAttributes, parentResults, data - } - -// --------------------------------------------------------- -// Symbian OS default constructor may leave. -// -// --------------------------------------------------------- -// -void CLocalDeletion::Destroy() - { - delete this; - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CLocalDeletion::~CLocalDeletion() - { - - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/src/LocalOperationBase.cpp --- a/xdmprotocols/LocalProtocol/LocalOperations/src/LocalOperationBase.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,263 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalOperationBase -* -*/ - - - - - -// INCLUDES -#include "XdmXmlParser.h" -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalOperationBase.h" - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CLocalOperationBase::CLocalOperationBase( const CLocalDocument& aTargetDoc, - CLocalOperationFactory& aOperationFactory ) : - iTargetDoc( CONST_CAST( CLocalDocument&, aTargetDoc ) ), - iOperationFactory( aOperationFactory ) - { - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CLocalOperationBase::~CLocalOperationBase() - { - iXmlFile.Close(); - delete iXmlParser; - delete iFileManager; - } - -// --------------------------------------------------------- -// CLocalOperationBase::BaseConstructL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::BaseConstructL() - { - iXmlParser = CXdmXmlParser::NewL(); - iFileManager = CFileMan::NewL( CLocalProtocol::FileSession() ); - } - -// --------------------------------------------------------- -// CLocalOperationBase::WriteFileL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::WriteFileL( const CXdmDocumentNode* aRootNode ) - { - __ASSERT_DEBUG( aRootNode != NULL, User::Panic( _L( "CLocalOperationBase" ), 1 ) ); - HBufC8* data = iXmlParser->FormatToXmlLC( ETrue, &iTargetDoc, aRootNode ); - User::LeaveIfError( iXmlFile.Write( data->Des() ) ); - CleanupStack::PopAndDestroy(); //data - GenerateTimeStampL(); - } - -// --------------------------------------------------------- -// CLocalOperationBase::GenerateTimeStampL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::GenerateTimeStampL() - { - RFile timeStamp; - HBufC8* time = TimeLC(); - HBufC* timeStampName = ConstructTimestampNameL(); - CleanupStack::PushL( timeStampName ); - User::LeaveIfError( timeStamp.Replace( CLocalProtocol::FileSession(), timeStampName->Des(), EFileWrite ) ); - User::LeaveIfError( timeStamp.Write( time->Des() ) ); - timeStamp.Close(); - CleanupStack::PopAndDestroy( 2 ); //timeStampName, time - } - -// --------------------------------------------------------- -// CLocalOperationBase::ConstructTimestampNameL -// -// --------------------------------------------------------- -// -HBufC* CLocalOperationBase::ConstructTimestampNameL() - { - const TChar backSlash = 92; - const TChar idSeparator = 46; - TInt index = iFullPath.LocateReverse( backSlash ); - TPtrC path = iFullPath.Left( index + 1 ); - HBufC* fileName = HBufC::NewLC( iTargetDoc.Name().Length() + KTimeStampFileExt().Length() ); - HBufC* fullPath = HBufC::NewLC( path.Length() + fileName->Des().MaxLength() ); - TPtr ptr( fileName->Des() ); - ptr.Copy( iTargetDoc.Name() ); - index = ptr.LocateReverse( idSeparator ); - TPtrC tmspName = index > 0 ? ptr.Left( index ) : ptr; - fullPath->Des().Copy( path ); - fullPath->Des().Append( tmspName ); - fullPath->Des().Append( KTimeStampFileExt ); - CleanupStack::Pop(); //fullPath - CleanupStack::PopAndDestroy(); //fileName - return fullPath; - } - -// --------------------------------------------------------- -// CLocalOperationBase::Time -// -// --------------------------------------------------------- -// -HBufC8* CLocalOperationBase::TimeLC() - { - TTime time; - TBuf dateBuffer; - time.HomeTime(); - time.FormatL( dateBuffer, KDateFormat ); - TBuf timeBuffer; - time.HomeTime(); - time.FormatL( timeBuffer, KTimeFormat ); - TBuf buffer; - buffer.SetLength( 0 ); - buffer.Copy( dateBuffer ); - buffer.Append( _L( " " ) ); - buffer.Append( timeBuffer ); - HBufC8* ret = HBufC8::NewLC( buffer.Length() ); - ret->Des().Copy( buffer ); - return ret; - } - -// --------------------------------------------------------- -// CLocalOperationBase::FetchXmlDataL -// -// --------------------------------------------------------- -// -HBufC8* CLocalOperationBase::FetchXmlDataL( TInt aFileSize ) - { - HBufC8* data = HBufC8::NewLC( aFileSize ); - TPtr8 desc( data->Des() ); - User::LeaveIfError( iXmlFile.Read( desc ) ); - CleanupStack::Pop(); //data - return data; - } - -// --------------------------------------------------------- -// CLocalOperationBase::FetchXmlDataL -// -// --------------------------------------------------------- -// -TInt CLocalOperationBase::OpenDataFileL( const TDesC& aFilePath ) - { - TInt length = 0; - iFullPath.Set( aFilePath ); - TInt error = iXmlFile.Open( CLocalProtocol::FileSession(), iFullPath, - EFileRead | EFileWrite | EFileShareExclusive ); - if( error != KErrNone ) - { - if( error == KErrPathNotFound ) - User::LeaveIfError( CLocalProtocol::FileSession().MkDirAll( CLocalProtocol::RootFolder() ) ); - error = iXmlFile.Create( CLocalProtocol::FileSession(), iFullPath, - EFileRead | EFileWrite | EFileShareExclusive ); - } - error = error == KErrNone ? iXmlFile.Size( length ) : KErrUnknown; - return error == KErrNone ? length : error; - } - -// --------------------------------------------------------- -// CLocalOperationBase::ReplaceDataFileL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::ReplaceDataFileL() - { - User::LeaveIfError( iXmlFile.Replace( CLocalProtocol::FileSession(), iFullPath, - EFileRead | EFileWrite | EFileShareExclusive ) ); - } - -// --------------------------------------------------------- -// CLocalOperationBase::DeleteDataFileL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::DeleteDataFileL() - { - User::LeaveIfError( CLocalProtocol::FileSession().Delete( iFullPath ) ); - HBufC* timeStampName = ConstructTimestampNameL(); - CleanupStack::PushL( timeStampName ); - User::LeaveIfError( CLocalProtocol::FileSession().Delete( timeStampName->Des() ) ); - CleanupStack::PopAndDestroy(); //timeStampName - } - -// --------------------------------------------------------- -// CLocalOperationBase::ExecuteL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::ExecuteL( TRequestStatus& /*aStatus*/, TUint /*aOptions*/ ) - { - } - -// --------------------------------------------------------- -// CLocalOperationBase::CancelOperation -// -// --------------------------------------------------------- -// -void CLocalOperationBase::CancelOperation() - { - } - -// --------------------------------------------------------- -// CLocalOperationBase::CompletionData -// -// --------------------------------------------------------- -// -const TXdmCompletionData& CLocalOperationBase::CompletionData() const - { - return iCompletionData; - } - -// --------------------------------------------------------- -// CLocalOperationBase::IsCompleted -// -// --------------------------------------------------------- -// -TBool CLocalOperationBase::IsCompleted() const - { - return ETrue; - } - -// --------------------------------------------------------- -// CLocalOperationBase::TargetNode -// -// --------------------------------------------------------- -// -CXdmDocumentNode* CLocalOperationBase::TargetNode() const - { - return NULL; - } - -// --------------------------------------------------------- -// CLocalOperationBase::Result -// -// --------------------------------------------------------- -// -TInt CLocalOperationBase::Result() const - { - return KErrNone; - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/src/LocalOperationFactory.cpp --- a/xdmprotocols/LocalProtocol/LocalOperations/src/LocalOperationFactory.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,186 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalOperationFactory -* -*/ - - - -#include -#include -#include -#include -#include "XdmOperation.h" -#include "LocalRetrieval.h" -#include "LocalAddition.h" -#include "LocalReplacement.h" -#include "LocalDeletion.h" -#include "LocalProtocol.h" -#include "LocalOperationFactory.h" - -// --------------------------------------------------------- -// CLocalOperationFactory::CLocalOperationFactory -// -// --------------------------------------------------------- -// -CLocalOperationFactory::CLocalOperationFactory() - { - } - -// --------------------------------------------------------- -// CLocalOperationFactory::NewL -// -// --------------------------------------------------------- -// -CLocalOperationFactory* CLocalOperationFactory::NewL() - { - CLocalOperationFactory* self = new ( ELeave ) CLocalOperationFactory(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CLocalOperationFactory::ConstructL -// -// --------------------------------------------------------- -// -void CLocalOperationFactory::ConstructL() - { - #ifdef _DEBUG - iLogWriter = CXdmLogWriter::NewL( KLocalOpLogFile ); - WriteToLog( _L8( "CLocalOperationFactory::ConstructL()" ) ); - #endif - } - -// --------------------------------------------------------- -// CLocalOperationFactory::~CLocalOperationFactory -// -// --------------------------------------------------------- -// -CLocalOperationFactory::~CLocalOperationFactory() - { - #ifdef _DEBUG - WriteToLog( _L8( "CLocalOperationFactory::~CLocalOperationFactory()" ) ); - #endif - delete iLogWriter; - } - -// --------------------------------------------------------- -// CLocalOperationFactory::FetchL -// -// --------------------------------------------------------- -// -MXdmOperation* CLocalOperationFactory::FetchL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const - { - return CLocalRetrieval::NewL( ( CLocalDocument& )aTargetDocument, - ( CLocalDocumentNode* )aTargetNode, - const_cast( *this ) ); - } - -// --------------------------------------------------------- -// CLocalOperationFactory::InsertL -// -// --------------------------------------------------------- -// -MXdmOperation* CLocalOperationFactory::InsertL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const - { - return CLocalAddition::NewL( ( CLocalDocument& )aTargetDocument, - ( CLocalDocumentNode* )aTargetNode, - const_cast( *this ) ); - } - -// --------------------------------------------------------- -// CLocalOperationFactory::ReplaceL -// -// --------------------------------------------------------- -// -MXdmOperation* CLocalOperationFactory::ReplaceL( CXdmDocument& aOldDocument, - CXdmDocumentNode* aNewNode, - CXdmDocumentNode* aOldNode ) const - { - return CLocalReplacement::NewL( ( CLocalDocument& )aOldDocument, - ( CLocalDocumentNode* )aNewNode, - ( CLocalDocumentNode* )aOldNode, - const_cast( *this ) ); - } - -// --------------------------------------------------------- -// CLocalOperationFactory::AppendL -// -// --------------------------------------------------------- -// -MXdmOperation* CLocalOperationFactory::AppendL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const - { - return CLocalAddition::NewL( ( CLocalDocument& )aTargetDocument, - ( CLocalDocumentNode* )aTargetNode, - const_cast( *this ) ); - } - -// --------------------------------------------------------- -// CLocalOperationFactory::PartialDeletionL -// -// --------------------------------------------------------- -// -MXdmOperation* CLocalOperationFactory::DeletionL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const - { - return CLocalDeletion::NewL( ( CLocalDocument& )aTargetDocument, - ( CLocalDocumentNode* )aTargetNode, - const_cast( *this ) ); - } - -// ---------------------------------------------------------- -// CLocalOperationFactory::WriteToLog -// -// ---------------------------------------------------------- -// -void CLocalOperationFactory::WriteToLog( TRefByValue aFmt,... ) - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - iLogWriter->WriteToLog( buf ); - } - -// --------------------------------------------------------- -// Map the interface UIDs to implementation factory functions -// -// --------------------------------------------------------- -// -const TImplementationProxy ImplementationTable[] = - { -#ifdef __EABI__ - IMPLEMENTATION_PROXY_ENTRY( KLocalOperationFactory, CLocalOperationFactory::NewL ) -#else - { { KLocalOperationFactory }, CLocalOperationFactory::NewL } -#endif - }; - -// --------------------------------------------------------- -// Return the implementation table & number of implementations -// -// --------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - return ImplementationTable; - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/src/LocalReplacement.cpp --- a/xdmprotocols/LocalProtocol/LocalOperations/src/LocalReplacement.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,173 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalReplacement -* -*/ - - - - -// INCLUDES -#include -#include "XdmXmlParser.h" -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalReplacement.h" -#include "LocalDocumentNode.h" -#include "LocalNodeAttribute.h" - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CLocalReplacement::CLocalReplacement( CLocalDocument& aTargetDoc, - CLocalDocumentNode* aOldNode, - CLocalDocumentNode* aNewNode, - CLocalOperationFactory& aOperationFactory ) : - CLocalOperationBase( aTargetDoc, aOperationFactory ), - iNewNode( ( CLocalDocumentNode* )aNewNode ), - iTargetNode( ( CLocalDocumentNode* )aOldNode ), - iOperationType( iTargetNode == NULL ? - EXdmDocument : EXdmPartialDocument ) - { - } - -// --------------------------------------------------------- -// Two-phased constructor. -// -// --------------------------------------------------------- -// -CLocalReplacement* CLocalReplacement::NewL( CLocalDocument& aParentDoc, - CLocalDocumentNode* aOldNode, - CLocalDocumentNode* aNewNode, - CLocalOperationFactory& aOperationFactory ) - { - CLocalReplacement* self = new ( ELeave ) CLocalReplacement( aParentDoc, aOldNode, aNewNode, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CLocalReplacement::ExecuteL -// -// --------------------------------------------------------- -// -void CLocalReplacement::ExecuteL() - { - TPtrC fileName = iTargetDoc.XmlFilePath(); - TInt size = OpenDataFileL( fileName ); - if( size > 0 ) - { - //Only a subset of a document - if( iTargetDoc.IsSubset() ) - HandlePartialReplacementL( size ); - else if( iTargetNode != NULL ) - { - CLocalDocumentNode* parent = ( CLocalDocumentNode* )iTargetNode->Parent(); - parent->ReplaceLocalL( iNewNode, iTargetNode ); - } - else - { - iXmlFile.Close(); - ReplaceDataFileL(); - WriteFileL( iTargetDoc.DocumentRoot() ); - } - } - else WriteFileL( iTargetDoc.DocumentRoot() ); - iXmlFile.Close(); - } - -// --------------------------------------------------------- -// CLocalReplacement::HandlePartialReplacementL -// -// --------------------------------------------------------- -// -void CLocalReplacement::HandlePartialReplacementL( TInt aDataLength ) - { - TInt error = KErrNone; - HBufC8* data = FetchXmlDataL( aDataLength ); - CleanupStack::PushL( data ); - TRAP( error, iXmlParser->ParseDocumentL( &iTargetDoc, *data ) ); - CXdmDocumentNode* parent = iTargetNode->Parent(); - RPointerArray parentResults; - CleanupClosePushL( parentResults ); - RPointerArray parentAttributes; - CleanupClosePushL( parentAttributes ); - RPointerArray targetResults; - CleanupClosePushL( targetResults ); - RPointerArray targetAttributes; - CleanupClosePushL( targetAttributes ); - TInt pAttrCount = parent->AttributeCount(); - TInt tAttrCount = iTargetNode->AttributeCount(); - if( pAttrCount > 0 ) - { - SXdmAttribute16 attribute; - for( TInt i = 0;i < pAttrCount;i++ ) - { - attribute.iName.Set( parent->Attribute( i )->NodeName() ); - attribute.iValue.Set( parent->Attribute( i )->AttributeValue() ); - } - User::LeaveIfError( parentAttributes.Append( &attribute ) ); - } - if( tAttrCount > 0 ) - { - SXdmAttribute16 attribute; - for( TInt i = 0;i < tAttrCount;i++ ) - { - attribute.iName.Set( iTargetNode->Attribute( i )->NodeName() ); - attribute.iValue.Set( iTargetNode->Attribute( i )->AttributeValue() ); - } - User::LeaveIfError( targetAttributes.Append( &attribute ) ); - } - iTargetDoc.Find( parent->NodeName(), parentResults, parentAttributes ); - iTargetDoc.Find( iTargetNode->NodeName(), targetResults, targetAttributes ); - if( parentResults.Count() == 1 && targetResults.Count() == 1 ) - { - iXmlFile.Close(); - ReplaceDataFileL(); - CLocalDocumentNode* node = ( CLocalDocumentNode* )parentResults[0]; - CLocalDocumentNode* target = ( CLocalDocumentNode* )targetResults[0]; - node->ReplaceLocalL( iNewNode, target ); - WriteFileL( iTargetDoc.DocumentRoot() ); - } - else User::Leave( KErrGeneral ); - CleanupStack::PopAndDestroy( 5 ); //targetAttributes, targetResults, - //parentAttributes, parentResults, data - } - -// --------------------------------------------------------- -// Symbian OS default constructor may leave. -// -// --------------------------------------------------------- -// -void CLocalReplacement::Destroy() - { - delete this; - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CLocalReplacement::~CLocalReplacement() - { - - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/LocalOperations/src/LocalRetrieval.cpp --- a/xdmprotocols/LocalProtocol/LocalOperations/src/LocalRetrieval.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalRetrieval -* -*/ - - - - -// INCLUDES -#include "XdmXmlParser.h" -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalRetrieval.h" -#include "LocalDocumentNode.h" -#include "LocalOperationFactory.h" - -// --------------------------------------------------------- -// CLocalRetrieval::CLocalRetrieval -// -// --------------------------------------------------------- -// -CLocalRetrieval::CLocalRetrieval( CLocalDocument& aTargetDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ) : - CLocalOperationBase( aTargetDoc, aOperationFactory ), - iDocumentSubset( aDocumentSubset ), - iOperationType( aDocumentSubset == NULL ? - EXdmDocument : EXdmPartialDocument ) - - { - } - -// --------------------------------------------------------- -// CLocalRetrieval::NewL -// -// --------------------------------------------------------- -// -CLocalRetrieval* CLocalRetrieval::NewL( CLocalDocument& aParentDoc, - CLocalDocumentNode* aDocumentSubset, - CLocalOperationFactory& aOperationFactory ) - { - CLocalRetrieval* self = new ( ELeave ) CLocalRetrieval( aParentDoc, aDocumentSubset, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CLocalRetrieval::ExecuteL -// -// --------------------------------------------------------- -// -void CLocalRetrieval::ExecuteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CLocalRetrieval::ExecuteL()" ) ); - #endif - HBufC8* data = NULL; - TInt error = KErrNone; - TInt length = OpenDataFileL( iTargetDoc.XmlFilePath() ); - TRAP( error, data = FetchXmlDataL( length ) ); - CleanupStack::PushL( data ); - if( data != NULL ) - { - if( iDocumentSubset == NULL ) - { - TRAP( error, iXmlParser->ParseDocumentL( &iTargetDoc, *data ) ); - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Document fetch complete - Error: %d" ), error ); - #endif - } - else - { - iDocumentSubset->SetEmptyNode( ETrue ); - iDocumentSubset->SetEmptyNode( EFalse ); - TRAP( error, iXmlParser->ParseDocumentL( &iTargetDoc, *data, ( CXdmDocumentNode* )iDocumentSubset ) ); - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Document fetch complete: %d" ), error ); - #endif - } - } - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Reading of the document data failed: %d" ), error ); - #endif - User::Leave( error ); - } - CleanupStack::PopAndDestroy(); //data - iXmlFile.Close(); - } - -// --------------------------------------------------------- -// CLocalRetrieval::Destroy -// -// --------------------------------------------------------- -// -void CLocalRetrieval::Destroy() - { - delete this; - } - -// --------------------------------------------------------- -// CLocalRetrieval::~CLocalRetrieval -// -// --------------------------------------------------------- -// -CLocalRetrieval::~CLocalRetrieval() - { - - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/bwinscw/LocalProtocolU.DEF --- a/xdmprotocols/LocalProtocol/bwinscw/LocalProtocolU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -EXPORTS - ?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &) - ??1CLocalDocumentNode@@UAE@XZ @ 2 NONAME ; CLocalDocumentNode::~CLocalDocumentNode(void) - ??1CXdmNamespace@@UAE@XZ @ 3 NONAME ; CXdmNamespace::~CXdmNamespace(void) - ?AppendLocalL@CLocalDocumentNode@@QAEXPAVCXdmDocumentNode@@@Z @ 4 NONAME ; void CLocalDocumentNode::AppendLocalL(class CXdmDocumentNode *) - ?FileSession@CLocalProtocol@@SAAAVRFs@@XZ @ 5 NONAME ; class RFs & CLocalProtocol::FileSession(void) - ?IsSubset@CLocalDocument@@QBEHXZ @ 6 NONAME ; int CLocalDocument::IsSubset(void) const - ?NewL@CXdmNamespace@@SAPAV1@ABVTDesC8@@0@Z @ 7 NONAME ; class CXdmNamespace * CXdmNamespace::NewL(class TDesC8 const &, class TDesC8 const &) - ?Prefix@CXdmNamespace@@QBE?AVTPtrC8@@XZ @ 8 NONAME ; class TPtrC8 CXdmNamespace::Prefix(void) const - ?RemoveData@CLocalDocument@@QAEXPAVCLocalDocumentNode@@@Z @ 9 NONAME ; void CLocalDocument::RemoveData(class CLocalDocumentNode *) - ?RemoveLocalL@CLocalDocumentNode@@QAEXPAVCXdmDocumentNode@@@Z @ 10 NONAME ; void CLocalDocumentNode::RemoveLocalL(class CXdmDocumentNode *) - ?ReplaceLocalL@CLocalDocumentNode@@QAEXPAVCXdmDocumentNode@@0@Z @ 11 NONAME ; void CLocalDocumentNode::ReplaceLocalL(class CXdmDocumentNode *, class CXdmDocumentNode *) - ?ResetSubset@CLocalDocument@@UAEXXZ @ 12 NONAME ; void CLocalDocument::ResetSubset(void) - ?RootFolder@CLocalProtocol@@SA?AVTPtrC16@@XZ @ 13 NONAME ; class TPtrC16 CLocalProtocol::RootFolder(void) - ?TempCopyL@CLocalDocument@@QAEPAV1@XZ @ 14 NONAME ; class CLocalDocument * CLocalDocument::TempCopyL(void) - ?Uri@CXdmNamespace@@QBE?AVTPtrC8@@XZ @ 15 NONAME ; class TPtrC8 CXdmNamespace::Uri(void) const - ?XmlFilePath@CLocalDocument@@QBE?AVTPtrC16@@XZ @ 16 NONAME ; class TPtrC16 CLocalDocument::XmlFilePath(void) const - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/eabi/LocalProtocolU.DEF --- a/xdmprotocols/LocalProtocol/eabi/LocalProtocolU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -EXPORTS - _Z24ImplementationGroupProxyRi @ 1 NONAME - _ZN13CXdmNamespace4NewLERK6TDesC8S2_ @ 2 NONAME - _ZN13CXdmNamespaceD0Ev @ 3 NONAME - _ZN13CXdmNamespaceD1Ev @ 4 NONAME - _ZN13CXdmNamespaceD2Ev @ 5 NONAME - _ZN14CLocalDocument10RemoveDataEP18CLocalDocumentNode @ 6 NONAME - _ZN14CLocalDocument11ResetSubsetEv @ 7 NONAME - _ZN14CLocalDocument9TempCopyLEv @ 8 NONAME - _ZN14CLocalProtocol10RootFolderEv @ 9 NONAME - _ZN14CLocalProtocol11FileSessionEv @ 10 NONAME - _ZN18CLocalDocumentNode12AppendLocalLEP16CXdmDocumentNode @ 11 NONAME - _ZN18CLocalDocumentNode12RemoveLocalLEP16CXdmDocumentNode @ 12 NONAME - _ZN18CLocalDocumentNode13ReplaceLocalLEP16CXdmDocumentNodeS1_ @ 13 NONAME - _ZN18CLocalDocumentNodeD0Ev @ 14 NONAME - _ZN18CLocalDocumentNodeD1Ev @ 15 NONAME - _ZN18CLocalDocumentNodeD2Ev @ 16 NONAME - _ZNK13CXdmNamespace3UriEv @ 17 NONAME - _ZNK13CXdmNamespace6PrefixEv @ 18 NONAME - _ZNK14CLocalDocument11XmlFilePathEv @ 19 NONAME - _ZNK14CLocalDocument8IsSubsetEv @ 20 NONAME - _ZTI14CLocalDocument @ 21 NONAME ; ## - _ZTI14CLocalProtocol @ 22 NONAME ; ## - _ZTV14CLocalDocument @ 23 NONAME ; ## - _ZTV14CLocalProtocol @ 24 NONAME ; ## - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/group/LocalProtocol.mmp --- a/xdmprotocols/LocalProtocol/group/LocalProtocol.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2005 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: LocalProtocol.mmp -* -*/ - - - -#include - -TARGET localprotocol.dll -UID 0x10009D8D 0x10207458 -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT -TARGETTYPE PLUGIN - -SOURCEPATH ../src - -START RESOURCE 10207458.rss - -TARGET localprotocol.rsc - -END - -SOURCE LocalProtocol.cpp -SOURCE LocalDocument.cpp -SOURCE LocalDirectory.cpp -SOURCE LocalDocumentNode.cpp -SOURCE LocalNodeAttribute.cpp -SOURCE LocalDirectoryEntry.cpp - -//Sources common to all protocols -SOURCEPATH ../../src -SOURCE XdmNamespace.cpp - -USERINCLUDE ../inc -USERINCLUDE ../../inc -USERINCLUDE ../../XdmXmlParser/inc - - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/xml -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../inc - -LIBRARY hal.lib -LIBRARY ecom.lib -LIBRARY efsrv.lib -LIBRARY euser.lib -LIBRARY flogger.lib -LIBRARY charconv.lib -LIBRARY xdmengine.lib -LIBRARY xdmxmlparser.lib - -#if defined( ARMCC ) -DEFFILE ../eabi/ -#elif defined ( WINSCW ) -deffile ../bwinscw/ -#elif defined (WINS ) -deffile ../bwins/ -#endif - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/group/bld.inf --- a/xdmprotocols/LocalProtocol/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2005 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: LocalProtocol bld.inf -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- -LocalProtocol.mmp - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/inc/LocalDirectory.h --- a/xdmprotocols/LocalProtocol/inc/LocalDirectory.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,172 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDirectory -* -*/ - - - - -#ifndef __LOCALDIRECTORY__ -#define __LOCALDIRECTORY__ - -#include -#include "XdmDirectory.h" - -//CONSTANTS - -//FORWARD DECLARATIONS -class CXdmDocument; -class CLocalProtocol; -class CLocalDirectoryEntry; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalDirectory ) : public CXdmDirectory - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CLocalDirectory* NewL( const TDesC& aFilePath, - CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - //void CancelUpdate(); - - /** - * Destructor. - */ - virtual ~CLocalDirectory(); - - private: //From CXdmDirectory - - /** - * Start updating the contents of this directory model - * @param TRequestStatus& Request status of the client - * @param TDirUpdatePhase Phase of the update - * @return void - */ - void StartUpdateL(); - - /** - * Cancel a directory update - * @return void - */ - void CancelUpdate(); - - /** - * Save the client's request status and update status - * @param TDirUpdatePhase The update phase - * @param TRequestStatus The client's request status - * @return void - */ - void SaveRequestData( TDirUpdatePhase aUpdatePhase, - TRequestStatus& aClientStatus ); - - /** - * Return the root element of this document - */ - TInt DocumentCount(); - - /** - * Return the root element of this document - */ - TPtrC Document( TInt aIndex ) const; - - /** - * Returns the path to this directory - * - * @return TPtrC8 The path to the directory this object models - */ - TPtrC DirectoryPath() const; - - /** - * Returns the path to this directory - * - * @return TPtrC8 The path to the directory this object models - */ - TXdmDocType DocumentTypeL( TInt aIndex ) const; - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CLocalDirectory( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * From CActive. - * @return void - */ - void RunL(); - - /** - * From CActive. - * @return void - */ - void DoCancel(); - - /** - * From CXdmDirectory. - * @return void - */ - void FindTimeStampFilesL( const CDir* aDirectory ); - - /** - * From CXdmDirectory. - * @return void - */ - void MatchWithStampFilesL( const CDir* aDirectory ); - - /** - * From CXdmDirectory. - * @return void - */ - TInt OfferEntryL( const TDesC& aEntryName ); - - /** - * From CXdmDirectory. - * @return void - */ - void RefreshEntryArrayL(); - - private: //Data - - TRequestStatus* iClientStatus; - TDirUpdatePhase iUpdatePhase; - CLocalProtocol& iLocalProtocol; - RPointerArray iEntryArray; - }; - -#endif //__LOCALDIRECTORY__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/inc/LocalDirectoryEntry.h --- a/xdmprotocols/LocalProtocol/inc/LocalDirectoryEntry.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDirectoryEntry -* -*/ - - - - -#ifndef __LOCALDIRECTORYENTRY__ -#define __LOCALDIRECTORYENTRY__ - -#include - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalDirectoryEntry ) : public CBase - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CLocalDirectoryEntry* NewL( const TDesC& aFileName ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - TPtrC EntryName() const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - TBool OfferEntryL( const TDesC& aEntryName ); - - /** - * Destructor. - */ - virtual ~CLocalDirectoryEntry(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CLocalDirectoryEntry(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL( const TDesC& aFilePath ); - - private: //Data - - HBufC* iXmlEntryName; - HBufC* iTimeStampEntryName; - }; - -#endif //__LOCALDIRECTORYENTRY__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/inc/LocalDocument.h --- a/xdmprotocols/LocalProtocol/inc/LocalDocument.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,336 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDocument -* -*/ - - - - -#ifndef __LOCALDOCUMENT__ -#define __LOCALDOCUMENT__ - -#include -#include "XdmDocument.h" - -_LIT( KTimeStampFileExt, ".tmsp"); -_LIT( KDateFormat, "%1-%2-%3"); -_LIT( KTimeFormat, "%H:%T:%S"); -const TInt KDateTimeMaxSize = 200; -const TInt KDateBufferMaxSize = 50; - -//FORWARD DECLARATIONS -class CXdmNamespace; -class MXdmOperation; -class CLocalProtocol; -class CLocalDocumentNode; -class CXdmOperationFactory; - -//CLASS DECLARATION -class CLocalDocument : public CXdmDocument - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CLocalDocument* NewL( CXdmEngine& aXdmEngine, - const TDesC& aDocumentName, - CLocalProtocol& aLocalProtocol ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - //static CLocalDocument* NewL( const TDesC8& aDocumentName ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void StartInternalL( TRequestStatus& aStatus ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void CancelUpdate(); - - /** - * Destructor. - */ - virtual ~CLocalDocument(); - - public: //Exported methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C CLocalDocument* TempCopyL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C TPtrC XmlFilePath() const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C TBool IsSubset() const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C virtual void ResetSubset(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C void RemoveData( CLocalDocumentNode* aDocumentNode ); - - public: //From CXdmDocument - - /** - * Return the root element of this document - * - * @return CXdmDocumentNode The root element of the document - * - * NOTE: The returning node may or may not contain any data, - * since, in the case that this document model does not - * have content yet, the element is a simple "entry point" - * to the whole document. Thus, for instance, if the client - * application requests the Xdm Engine to fetch a particular - * document, the root element points to nothing until the - * request has been completed. - * - */ - CXdmDocumentNode* DocumentRoot() const; - - private: //From CXdmDocument - - /** - * Construct an "anonymous" entry point for this document. - * This node effectively becomes the root of this document. - * - */ - CXdmDocumentNode* CreateRootL(); - - /* - * Reset the contents of this document model. - */ - void ResetContents(); - - /** - * Return the time stamp for this document - * - * @return TTime - */ - TTime TimeStamp() const; - - /** - * Return an error document for a failed update - * - * NOTE: Error document is not supported in this - * protocol. The returning pointer will be NULL. - * - * @return CXdmDocument* The error document - */ - CXdmDocumentNode* ErrorRoot(); - - /** - * Append an element to the path identifying the - * the current document subset - * @return void - */ - void AppendPathPartL( const TDesC& aString ); - - /** - * Return the current document subset (including descendants) - * @return void - */ - CXdmDocumentNode* CurrentExtent() const; - - /** - * Construct an "anonymous" entry point for this document. - * This node effectively becomes the root of this document. - */ - TXdmDocType DocumentType() const; - - private: //From MXdmNamespaceContainer - - /** - * Return the number of namespace declarations - * @return TInt Namespace declaration count - */ - TInt Count() const; - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - void AppendNamespaceL( const TDesC8& aUri, const TDesC8& aPrefix ); - - /** - * Remove a namespace from the document - * @param TDesC8& URI of the namespace - * @param TDesC8& Prefix of the namespace - */ - void RemoveNamespace( const TDesC8& aUri ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - TPtrC8 Uri( const TDesC8& aPrefix ) const; - - /** - * Fetch the aIndex-th URI - * @param TInt The index of the desired URI string - * @return TPtrC URI string - */ - TPtrC8 Uri( TInt aIndex ) const; - - /** - * Fetch the aIndex-th prefix - * @param TDesC8 The index of the desired prefix string - * @return TPtrC Prefix string - */ - TPtrC8 Prefix( TInt aIndex ) const; - - /** - * Resets namespaces from the document - */ - void ResetNamespaces( ); - - private: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CLocalDocument( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ); - - /** - * From CActive. - * @return void - */ - void RunL(); - - /** - * From CActive. - * @return void - */ - void DoCancel(); - - /** - * From CActive. - * @return void - */ - void FinaliseOperation( TInt aIndex ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void StartUpdateL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void SaveClientStatus( TRequestStatus& aStatus ); - - /** - * _DEBUG - */ - void DumpResponseBodyL( const TDesC8& aResponseBody ) const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL( const TDesC8& aDocumentName ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void FetchTimeStampL(); - - private: //Data - - enum TLocalOperation - { - EFetch = 0, - EReplace, - EInsert, - EFetchPartial, - EInsertPartial, - EReplacePartial, - }; - - enum TLocalDocumentState - { - EXdmDocIdle = 0, - EXdmDocUpdating, - EResolvingAsyncConflict, - }; - - TInt iDataLength; - TInt iUpdateIndex; - TInt iOperationCount; - TInt iOperationError; - TTime iLastAccess; - TTime iLastModification; - TBool iWholeDoc; - HBufC* iFullPath; - HBufC* iDocSubsetPath; - TLocalOperation iOperationType; - CLocalProtocol& iLocalProtocol; - CLocalDocumentNode* iDocumentRoot; - TLocalDocumentState iDocumentState; - RPointerArray iNamespaces; - }; - -#endif //__XCAPDOCUMENT__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/inc/LocalDocumentNode.h --- a/xdmprotocols/LocalProtocol/inc/LocalDocumentNode.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,242 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDocumentNode -* -*/ - - - - -#ifndef __LOCALDOCUMENTNODE__ -#define __LOCALDOCUMENTNODE__ - -#include "XdmNodeFactory.h" -#include "XdmDocumentNode.h" - -class CLocalProtocol; -class CXdmNodeAttribute; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalDocumentNode ) : public CXdmDocumentNode, - public MXdmNodeFactory - { - public: // Constructors and destructor - - /** - * Destructor. - */ - IMPORT_C virtual ~CLocalDocumentNode(); - - public: // New functions - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - static CLocalDocumentNode* NewL( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ); - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - static CLocalDocumentNode* NewL( CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CLocalProtocol& aLocalProtocol ); - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - static CLocalDocumentNode* NewL( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol, - const CXdmDocumentNode& aAnotherNode, - const CXdmDocumentNode& aParentNode ); - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of the new element - * @param CXdmDocumentNode* The parent of the new node - * @return CXdmDocumentNode* - */ - static CLocalDocumentNode* NewL( CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ); - - /** - * Two-phased constructor. - * - * @param TBool Leaf node indicator - * @param TDesC8& Name of the new element - * @param CXdmDocumentNode* The parent of the new node - * @return CXdmDocumentNode* - */ - static CLocalDocumentNode* NewL( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ); - - /** - * Two-phased constructor. - * - * @param TBool Leaf node indicator - * @param TDesC8& Name of the new element - * @param CXdmDocumentNode* The parent of the new node - * @return CXdmDocumentNode* - */ - static CLocalDocumentNode* NewL( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ); - - /** - * Set the next node in the list - * @param The next node in the list - * @return void - */ - void SetParentNode( CLocalDocumentNode*& aParentNode ); - - public: - - /** - * Set the next node in the list - * @param The next node in the list - * @return void - */ - IMPORT_C void RemoveLocalL( CXdmDocumentNode* aChileNode ); - - /** - * Set the next node in the list - * @param The next node in the list - * @return void - */ - IMPORT_C void AppendLocalL( CXdmDocumentNode* aChileNode ); - - /** - * Set the next node in the list - * @param The next node in the list - * @return void - */ - IMPORT_C void ReplaceLocalL( CXdmDocumentNode* aNewNode, - CXdmDocumentNode* aTargetNode ); - - private: - - /** - * C++ constructor, private version. - */ - CLocalDocumentNode( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ); - - /** - * C++ constructor, protected version. - * - * @param CXdmDocumentNode* The parent node of this element - */ - CLocalDocumentNode( CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ); - - /** - * C++ constructor, another private version. - */ - CLocalDocumentNode( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ); - - /** - * By default Symbian OS constructor is private. - * - * @param TDesC8& Name of this node - * @return void - */ - virtual void CopyConstructL( const CXdmDocumentNode& aAnotherNode, - const CXdmDocumentNode& aParentNode ); - - private: //From MXdmNodeFactory - - /** - * Create a new child element - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - CXdmDocumentNode* ChileNodeL(); - - /** - * Create a new child element - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - CXdmDocumentNode* ChileNodeL( const TDesC& aChildName ); - - /** - * Create a new child element - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - CXdmDocumentNode* ChileNodeL( const CXdmDocumentNode* aAnotherNode ); - - /** - * Create a new attribute - * - * @param TDesC8& Name of the new attribute - * @return CXdmNodeAttribute* - */ - CXdmNodeAttribute* AttributeL(); - - /** - * Create a new attribute - * - * @param TDesC8& Name of the new attribute - * @return CXdmNodeAttribute* - */ - CXdmNodeAttribute* AttributeL( const TDesC& aAttributeName ); - - private: //From MXdmNodeInterface - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - TPtrC8 Prefix() const; - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - void SetPrefixL( const TDesC8& aNamespacePrefix ); - - private: - - HBufC8* iPrefix; - CLocalProtocol& iLocalProtocol; - CLocalDocumentNode* iNextNode; - }; - -#endif //__LOCALDOCUMENTNODE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/inc/LocalNodeAttribute.h --- a/xdmprotocols/LocalProtocol/inc/LocalNodeAttribute.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalNodeAttribute -* -*/ - - - - -#ifndef __LOCALNODEATTRIBUTE__ -#define __LOCALNODEATTRIBUTE__ - -#include "XdmNodeAttribute.h" - -class CLocalProtocol; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CLocalNodeAttribute ) : public CXdmNodeAttribute - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of this attribute - * @param CXdmDocumentNode* Parent of this attribute - * - * NOTE! "Parent", in this case, denotes the - * element this attribute attributes. - * - * @return CXdmNodeAttribute* - */ - static CLocalNodeAttribute* NewL( CXdmEngine& aXdmEngine, - const TDesC& aAttributeName, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ); - - /** - * Two-phased constructor. - * - * @param CXdmDocumentNode* Parent of this attribute - * - * NOTE! "Parent", in this case, denotes the - * element this attribute attributes. - * - * @return CXdmNodeAttribute* - */ - static CLocalNodeAttribute* NewL( CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ); - - /** - * Destructor. - */ - virtual ~CLocalNodeAttribute(); - - public: // New functions - - - - private: - - /** - * C++ constructor, private version. - */ - CLocalNodeAttribute( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ); - - /** - * C++ constructor, protected version. - * - * @param CXdmDocumentNode* The parent node of this element - */ - CLocalNodeAttribute( CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ); - - /** - * By default Symbian OS constructor is private. - * - * @param TDesC8& Name of this node - * @return void - */ - void ConstructL( const TDesC& aNodeName ); - - /** - * C++ constructor, another private version. - */ - CLocalNodeAttribute( const TBool aLeafNode, - CXdmDocumentNode* aParentNode ); - - private: //From MXdmNodeInterface - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - TPtrC8 Prefix() const; - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - void SetPrefixL( const TDesC& aNamespacePrefix ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - void SetPrefixL( const TDesC8& aNamespacePrefix ); - - private: - - CLocalProtocol& iLocalProtocol; - }; - -#endif //__LOCALNODEATTRIBUTE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/inc/LocalProtocol.h --- a/xdmprotocols/LocalProtocol/inc/LocalProtocol.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,175 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalProtocol -* -*/ - - - - -#ifndef __LOCALPROTOCOL__ -#define __LOCALPROTOCOL__ - -#include -#include "XdmEngine.h" -#include "XdmProtocol.h" -#include "XdmShutdownSwitch.h" - -//CONSTANTS -_LIT( KLocalEngLogFile, "LocalProtocol" ); -_LIT( KLocalEngPrivateRoot, "C:\\private\\" ); -const TInt KLocalEngLogBufferMaxSize = 2000; - -//FORWARD DECLARATIONS -class CXdmXmlParser; -class CXdmLogWriter; -class CXdmOperationFactory; - -//CLASS DECLARATION -class CLocalProtocol : public CXdmProtocol - { - - public: - - /** - * Fetch the capabilities for this protocol. May require - * network operations. - */ - IMPORT_C static RFs& FileSession(); - - - /** - * A Global logging function - * @param TRefByValue aFmt,... - * @return void - */ - IMPORT_C static TPtrC RootFolder(); - - private: //From CXdmProtocol - - /** - * Initialise the media used to transfer Xdm data - */ - void InitTransferMedium( TInt aIdleTimeout, - TRequestStatus& aStatus ); - - /** - * Cancel initialisation of the transfer media. - */ - void CancelTransferMediumInit(); - - /** - * Is the transfer medium ready - */ - TBool IsTransferAvailable() const; - - /** - * Create a new document node. - */ - CXdmDocumentNode* CreateDocumentNodeL(); - - /** - * Create a new protocol dependent document model - */ - CXdmDocument* CreateDocumentL( const TDesC& aDocumentName, - const TXdmDocType aDocumentType ); - - /** - * Create a new protocol dependent document model - */ - CXdmDirectory* CreateDirectoryL( const TDesC& aDirectoryPath ); - - /** - * Destructor. - */ - virtual ~CLocalProtocol(); - - public: //Static - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CLocalProtocol* NewL( const TXdmProtocolParams& aProtocolInfo ); - - /** - * A Global logging function - * @param TRefByValue aFmt,... - * @return void - */ - RFs& RFSession(); - - /** - * A Global logging function - * @param TRefByValue aFmt,... - * @return void - */ - TPtrC Root(); - - public: - - /** - * A logging function - * @param TRefByValue aFmt,... - * @return void - */ - void WriteToLog( TRefByValue aFmt,... ) const; - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CLocalProtocol( const CXdmEngine& aXdmEngine, - const CXdmProtocolInfo& aProtocolInfo ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void SetRootDirectoryL( const TDesC& aRootPath ); - - private: - - /** - * From MXdmShutdownSwitch - * @return void - */ - //void SwitchOff(); - - private: //Data - - RFs iFileSession; - TBool iTransferMediaOpen; - HBufC* iRootFolder; - CXdmEngine& iXdmEngine; - CXdmLogWriter* iLogWriter; - CXdmXmlParser* iXmlParser; - const CXdmProtocolInfo& iProtocolInfo; - }; - -#endif //__LOCALPROTOCOL__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/src/10207458.rss --- a/xdmprotocols/LocalProtocol/src/10207458.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 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: XdmLocalProtocolInfo -* -*/ - - -// 10207458.RSS -// -#include "registryinfo.rh" - -//Declares the interface implementations provided -RESOURCE REGISTRY_INFO XdmLocalProtocolInfo - { - dll_uid = 0x10207458; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x10207422; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x10207424; - version_no = 1; - display_name = "XDM Engine Local Protocol||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - } - }; - } - }; - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/src/LocalDirectory.cpp --- a/xdmprotocols/LocalProtocol/src/LocalDirectory.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,308 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDirectory -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalDirectory.h" -#include "XdmDocumentNode.h" -#include "XdmNodeAttribute.h" -#include "LocalDirectoryEntry.h" - - -// ---------------------------------------------------------- -// CLocalDirectory::CLocalDirectory -// -// ---------------------------------------------------------- -// -CLocalDirectory::CLocalDirectory( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ) : - CXdmDirectory( aXdmEngine ), - iLocalProtocol( aLocalProtocol ) - { - } - -// ---------------------------------------------------------- -// CLocalDirectory::NewL -// -// ---------------------------------------------------------- -// -CLocalDirectory* CLocalDirectory::NewL( const TDesC& aFilePath, - CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ) - { - CLocalDirectory* self = new ( ELeave ) CLocalDirectory( aXdmEngine, aLocalProtocol ); - CleanupStack::PushL( self ); - self->BaseConstructL( aFilePath ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------- -// CLocalDirectory::~CLocalDirectory -// -// ---------------------------------------------------- -// -CLocalDirectory::~CLocalDirectory() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDirectory::~CLocalDirectory()" ) ); - #endif - Cancel(); - iEntryArray.ResetAndDestroy(); - iEntryArray.Close(); - } - -// ---------------------------------------------------------- -// CLocalDirectory::ConstructL -// -// ---------------------------------------------------------- -// -void CLocalDirectory::ConstructL() - { - RefreshEntryArrayL(); - CActiveScheduler::Add( this ); - } - -// ---------------------------------------------------------- -// CLocalDirectory::RefreshEntryArrayL -// -// ---------------------------------------------------------- -// -void CLocalDirectory::RefreshEntryArrayL() - { - CDir* directory = NULL; - iEntryArray.ResetAndDestroy(); - TPtrC path = iDirectoryPath->Des(); - RFs& session = CLocalProtocol::FileSession(); - User::LeaveIfError( session.GetDir( path, KEntryAttNormal, ESortByExt, directory ) ); - CleanupStack::PushL( directory ); - TInt count = directory->Count(); - FindTimeStampFilesL( directory ); - MatchWithStampFilesL( directory ); - CleanupStack::PopAndDestroy(); //directory - } - -// ---------------------------------------------------------- -// CLocalDirectory::FindTimeStampFilesL -// -// ---------------------------------------------------------- -// -void CLocalDirectory::FindTimeStampFilesL( const CDir* aDirectory ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDirectory::FindTimeStampFilesL()" ) ); - #endif - TBool ready = EFalse; - TInt count = aDirectory->Count(); - for( TInt i = 0;!ready && i < count;i++ ) - { - TPtrC name = ( *aDirectory )[i].iName; - TInt index = name.Find( KTimeStampFileExt ); - if( index > 0 ) - { - TInt stampIndex = i; - CLocalDirectoryEntry* entry = NULL; - while( !ready ) - { - entry = CLocalDirectoryEntry::NewL( name ); - CleanupStack::PushL( entry ); - User::LeaveIfError( iEntryArray.Append( entry ) ); - CleanupStack::Pop(); //entry - stampIndex++; - if( stampIndex < count ) - { - name.Set( ( *aDirectory )[stampIndex].iName ); - index = name.Find( KTimeStampFileExt ); - if( index <= 0 ) - ready = ETrue; - } - else ready = ETrue; - } - } - } - } - -// ---------------------------------------------------------- -// CLocalDirectory::MatchWithStampFilesL -// -// ---------------------------------------------------------- -// -void CLocalDirectory::MatchWithStampFilesL( const CDir* aDirectory ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDirectory::MatchWithStampFilesL()" ) ); - #endif - TInt count = aDirectory->Count(); - for( TInt i = 0;i < count;i++ ) - { - TPtrC name = ( *aDirectory )[i].iName; - TInt index = name.Find( KTimeStampFileExt ); - if( index > 0 ) - continue; - else - { - TBool ready = EFalse; - TInt count = iEntryArray.Count(); - for( TInt i = 0;!ready && i < count;i++ ) - ready = iEntryArray[i]->OfferEntryL( name ); - } - } - } - -// ---------------------------------------------------------- -// CLocalDirectory::DocumentCount -// -// ---------------------------------------------------------- -// -TInt CLocalDirectory::DocumentCount() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDirectory::DocumentCount()" ) ); - #endif - RefreshEntryArrayL(); - return iEntryArray.Count(); - } - -// ---------------------------------------------------- -// CLocalDocument::DocumentTypeL -// -// ---------------------------------------------------- -// -TXdmDocType CLocalDirectory::DocumentTypeL( TInt /*aIndex*/ ) const - { - return EXdmDocGeneral; - } - -// ---------------------------------------------------------- -// CLocalDirectory::Document -// -// ---------------------------------------------------------- -// -TPtrC CLocalDirectory::Document( TInt aIndex ) const - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDirectory::Document()" ) ); - #endif - return aIndex < 0 || aIndex > iEntryArray.Count() ? TPtrC() : - iEntryArray[aIndex]->EntryName(); - } - -// ---------------------------------------------------------- -// CLocalDirectory::ConstructL -// -// ---------------------------------------------------------- -// -TPtrC CLocalDirectory::DirectoryPath() const - { - return iDirectoryPath != NULL ? iDirectoryPath->Des() : TPtrC(); - } - -// ---------------------------------------------------------- -// CXcapDirectory::SaveRequestData -// -// ---------------------------------------------------------- -// -void CLocalDirectory::SaveRequestData( TDirUpdatePhase aUpdatePhase, - TRequestStatus& aClientStatus ) - { - iUpdatePhase = aUpdatePhase; - iClientStatus = &aClientStatus; - } - -// ---------------------------------------------------------- -// CLocalDirectory::StartUpdateL -// -// ---------------------------------------------------------- -// -void CLocalDirectory::StartUpdateL() - - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDirectory::StartUpdateL()" ) ); - #endif - switch( iUpdatePhase ) - { - case EUpdateDocumentList: - RefreshEntryArrayL(); - User::RequestComplete( iClientStatus, KErrNone ); - break; - case ERefreshDocuments: - User::RequestComplete( iClientStatus, KErrNone ); - default: - break; - } - } - -// --------------------------------------------------------- -// CLocalDirectory::RunL() -// -// --------------------------------------------------------- -// -void CLocalDirectory::RunL() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDirectory::RunL() - Request: %d" ), iStatus.Int() ); - #endif - } - -// ---------------------------------------------------- -// CLocalDirectory::CancelUpdate -// -// ---------------------------------------------------- -// -void CLocalDirectory::CancelUpdate() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDirectory::CancelUpdate()" ) ); - #endif - Cancel(); - } - -// --------------------------------------------------------- -// CLocalDirectory::DoCancel -// -// --------------------------------------------------------- -// -void CLocalDirectory::DoCancel() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDirectory::DoCancel()" ) ); - #endif - switch( iUpdatePhase ) - { - case EDirPhaseIdle: - break; - case EUpdateDocumentList: - break; - case ERefreshDocuments: - break; - default: - break; - } - User::RequestComplete( iClientStatus, KErrCancel ); - } - - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/src/LocalDirectoryEntry.cpp --- a/xdmprotocols/LocalProtocol/src/LocalDirectoryEntry.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDirectoryEntry -* -*/ - - - - -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalDirectoryEntry.h" - -// ---------------------------------------------------- -// CLocalDirectoryEntry::CLocalDirectoryEntry -// -// ---------------------------------------------------- -// -CLocalDirectoryEntry::CLocalDirectoryEntry() - { - } - -// ---------------------------------------------------- -// CLocalDirectoryEntry::CLocalDirectoryEntry -// -// ---------------------------------------------------- -// -CLocalDirectoryEntry* CLocalDirectoryEntry::NewL( const TDesC& aFileName ) - { - CLocalDirectoryEntry* self = new ( ELeave ) CLocalDirectoryEntry(); - CleanupStack::PushL( self ); - self->ConstructL( aFileName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------- -// CLocalDirectoryEntry::ConstructL -// -// ---------------------------------------------------- -// -void CLocalDirectoryEntry::ConstructL( const TDesC& aFileName ) - { - TChar comma = 46; - TInt index = aFileName.LocateReverse( comma ); - TPtrC temp = aFileName.Left( index ); - iTimeStampEntryName = HBufC::NewL( temp.Length() ); - iTimeStampEntryName->Des().Copy( temp ); - } - -// ---------------------------------------------------- -// CLocalDirectoryEntry::EntryName -// -// ---------------------------------------------------- -// -TPtrC CLocalDirectoryEntry::EntryName() const - { - return iXmlEntryName != NULL ? iXmlEntryName->Des() : TPtrC(); - } - -// ---------------------------------------------------- -// CLocalDirectoryEntry::CLocalDirectoryEntry -// -// ---------------------------------------------------- -// -TBool CLocalDirectoryEntry::OfferEntryL( const TDesC& aEntryName ) - { - TChar comma = 46; - TInt index = aEntryName.LocateReverse( comma ); - TPtrC name( index > 0 ? aEntryName.Left( index ) : aEntryName ); - if( iTimeStampEntryName->Des().Compare( name ) == 0 ) - { - iXmlEntryName = HBufC::NewL( aEntryName.Length() ); - iXmlEntryName->Des().Copy( aEntryName ); - return ETrue; - } - else return EFalse; - } - -// ---------------------------------------------------- -// CLocalDirectoryEntry::CLocalDirectoryEntry -// -// ---------------------------------------------------- -// -CLocalDirectoryEntry::~CLocalDirectoryEntry() - { - delete iXmlEntryName; - delete iTimeStampEntryName; - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/src/LocalDocument.cpp --- a/xdmprotocols/LocalProtocol/src/LocalDocument.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,525 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDocument -* -*/ - - - - -// INCLUDE FILES -#include -#include "XdmProtocol.h" -#include "XdmNamespace.h" -#include "XdmOperation.h" -#include "XdmXmlParser.h" -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalDocumentNode.h" -#include "XdmOperationFactory.h" - -// ---------------------------------------------------- -// CLocalDocument::CLocalDocument -// -// ---------------------------------------------------- -// -CLocalDocument::CLocalDocument( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ) : - CXdmDocument( aXdmEngine ), - iLocalProtocol( aLocalProtocol ) - { - } - - -// ---------------------------------------------------------- -// CLocalDocument::NewL -// -// ---------------------------------------------------------- -// -CLocalDocument* CLocalDocument::NewL( CXdmEngine& aXdmEngine, - const TDesC& aDocumentName, - CLocalProtocol& aLocalProtocol ) - { - CLocalDocument* self = new ( ELeave ) CLocalDocument( aXdmEngine, aLocalProtocol ); - CleanupStack::PushL( self ); - self->BaseConstructL( KLocalOperationFactory, aDocumentName ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CLocalDocument::ConstructL -// -// ---------------------------------------------------------- -// -void CLocalDocument::ConstructL() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::ConstructL()" ) ); - #endif - TPtrC name = iDocumentName->Des(); - TPtrC root = iLocalProtocol.RootFolder(); - iFullPath = HBufC::NewL( name.Length() + root.Length() ); - iFullPath->Des().Copy( root ); - iFullPath->Des().Append( name ); - FetchTimeStampL(); - CActiveScheduler::Add( this ); - } - -// ---------------------------------------------------------- -// CLocalDocument::ResetContents -// -// ---------------------------------------------------------- -// -void CLocalDocument::ResetContents() - { - delete iDocumentRoot; - iDocumentRoot = NULL; - iNamespaces.ResetAndDestroy(); - } - -// ---------------------------------------------------------- -// CLocalDocument::FetchTimeStampL -// -// ---------------------------------------------------------- -// -void CLocalDocument::FetchTimeStampL() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::FetchTimeStampL()" ) ); - #endif - RFile timeStamp; - TBuf8 buf; - TBuf buf16; - const TChar idSeparator = 46; - TPtrC fullPath( iFullPath->Des() ); - HBufC* path = HBufC::NewLC( fullPath.Length() + KTimeStampFileExt().Length() ); - TInt index = fullPath.LocateReverse( idSeparator ); - TPtrC tmspName( index > 0 ? fullPath.Left( index ) : fullPath ); - path->Des().Copy( tmspName ); - path->Des().Append( KTimeStampFileExt ); - TInt error = timeStamp.Open( CLocalProtocol::FileSession(), path->Des(), EFileRead ); - if( error == KErrNone ) - { - CleanupClosePushL( timeStamp ); - User::LeaveIfError( timeStamp.Read( buf ) ); - buf16.Copy( buf ); - buf.Zero(); - User::LeaveIfError( iLastModification.Parse( buf16 ) ); - CleanupStack::PopAndDestroy(); //timeStamp - } - CleanupStack::PopAndDestroy(); //path - } -// ---------------------------------------------------- -// CLocalDocument::~CLocalDocument -// -// ---------------------------------------------------- -// -CLocalDocument::~CLocalDocument() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::~CLocalDocument()" ) ); - #endif - Cancel(); - delete iFullPath; - delete iDocumentRoot; - iNamespaces.ResetAndDestroy(); - } - -// ---------------------------------------------------- -// CLocalDocument::CreateRootL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CLocalDocument::CreateRootL() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::DocumentSubsetL()" ) ); - #endif - iDocumentRoot = CLocalDocumentNode::NewL( iXdmEngine, iLocalProtocol ); - return iDocumentRoot; - } - -// ---------------------------------------------------- -// CLocalDocument::TempCopyL -// -// ---------------------------------------------------- -// -EXPORT_C CLocalDocument* CLocalDocument::TempCopyL() - { - return CLocalDocument::NewL( iXdmEngine, Name(), iLocalProtocol ); - } - -// ---------------------------------------------------- -// CLocalDocument::DocumentRoot -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CLocalDocument::DocumentRoot() const - { - return iDocumentRoot; - } - -// ---------------------------------------------------- -// CLocalDocument::ErrorRoot -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CLocalDocument::ErrorRoot() - { - return NULL; - } - -// ---------------------------------------------------- -// CLocalDocument::ErrorRoot -// -// ---------------------------------------------------- -// -TXdmDocType CLocalDocument::DocumentType() const - { - return EXdmDocGeneral; - } - -// ---------------------------------------------------- -// CLocalDocument::IsSubset -// -// ---------------------------------------------------- -// -EXPORT_C TBool CLocalDocument::IsSubset() const - { - return iDocSubset; - } - -// ---------------------------------------------------- -// CLocalDocument::ResetSubset -// -// ---------------------------------------------------- -// -EXPORT_C void CLocalDocument::ResetSubset() - { - CXdmDocument::ResetSubset(); - delete iDocumentRoot; - iDocumentRoot = NULL; - } - -// ---------------------------------------------------- -// CLocalDocument::XmlFilePath -// -// ------------------------------ ---------------------- -// -EXPORT_C TPtrC CLocalDocument::XmlFilePath() const - { - return iFullPath != NULL ? iFullPath->Des() : TPtrC(); - } - -// ---------------------------------------------------- -// CLocalDocument::RemoveData -// -// ---------------------------------------------------- -// -EXPORT_C void CLocalDocument::RemoveData( CLocalDocumentNode* /*aDocumentNode*/ ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::RemoveData()" ) ); - #endif - - } - -// ---------------------------------------------------- -// CLocalDocument::StartUpdateL -// -// ---------------------------------------------------- -// -void CLocalDocument::StartUpdateL() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::StartUpdateL()" ) ); - #endif - TBool keepGoing = ETrue; - TInt completion = KErrNone; - TInt count = iChangeRequests.Count(); - for( TInt i = 0;keepGoing && i < count;i++ ) - { - //"First in, first served" - TRAPD( error, iChangeRequests[0]->ExecuteL() ); - if( error == KErrNone ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( " Execution of the operation no. %d was successful" ), i ); - #endif - } - else - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( " Execution of the operation no. %d failed with %d" ), i, error ); - #endif - completion = error; - keepGoing = EFalse; - } - FinaliseOperation( 0 ); - } - User::RequestComplete( iClientStatus, completion ); - } - -// ---------------------------------------------------- -// CLocalProtocol::AppendPathPartL -// -// ---------------------------------------------------- -// -void CLocalDocument::AppendPathPartL( const TDesC& aString ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::PathPartL()" ) ); - #endif - if( iDocumentRoot != NULL ) - { - CXdmDocumentNode* node = NULL; - CXdmDocumentNode* parent = iDocumentRoot; - while( parent->NextNode() != NULL ) - parent = parent->NextNode(); - node = CLocalDocumentNode::NewL( iXdmEngine, aString, parent, iLocalProtocol ); - parent->SetNextNode( node ); - } - else - iDocumentRoot = CLocalDocumentNode::NewL( iXdmEngine, aString, iLocalProtocol ); - } - -// ---------------------------------------------------- -// CLocalProtocol::CurrentExtent -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CLocalDocument::CurrentExtent() const - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::CurrentExtent()" ) ); - #endif - CXdmDocumentNode* ret = NULL; - if( iDocumentRoot != NULL ) - { - CXdmDocumentNode* node = iDocumentRoot; - while( node->NextNode() != NULL ) - node = node->NextNode(); - ret = node; - } - else - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( " This document does not yet have a root, leave with KErrGeneral" ) ); - #endif - User::Leave( KErrGeneral ); - } - return ret; - } - -// ---------------------------------------------------- -// CLocalDocument::StartUpdateL -// -// ---------------------------------------------------- -// -void CLocalDocument::StartInternalL( TRequestStatus& aStatus ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::StartInternalL()" ) ); - #endif - aStatus = KRequestPending; - iClientStatus = &aStatus; - StartUpdateL(); - } - -// ---------------------------------------------------- -// CLocalDocument::CancelUpdate -// -// ---------------------------------------------------- -// -void CLocalDocument::CancelUpdate() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::CancelUpdate()" ) ); - #endif - User::RequestComplete( iClientStatus, KErrCancel ); - } - -// --------------------------------------------------------- -// CLocalDocument::RunL() -// -// --------------------------------------------------------- -// -void CLocalDocument::RunL() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::RunL()" ) ); - #endif - } - -// ---------------------------------------------------- -// CLocalDocument::FinaliseOperation -// -// ---------------------------------------------------- -// -void CLocalDocument::FinaliseOperation( TInt aIndex ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::FinaliseOperation()" ) ); - #endif - TInt count = iChangeRequests.Count(); - if( count > 0 && ( aIndex >= 0 && aIndex < count ) ) - { - MXdmOperation* operation = NULL; - operation = iChangeRequests[aIndex]; - iChangeRequests.Remove( aIndex ); - operation->Destroy(); - operation = NULL; - } - } - -// --------------------------------------------------------- -// CLocalDocument::AppendNamespaceL -// -// --------------------------------------------------------- -// -void CLocalDocument::AppendNamespaceL( const TDesC8& aUri, const TDesC8& aPrefix ) - { - CXdmNamespace* ns = CXdmNamespace::NewL( aUri, aPrefix ); - CleanupStack::PushL( ns ); - User::LeaveIfError( iNamespaces.Append( ns ) ); - CleanupStack::Pop(); //ns - } - -// --------------------------------------------------------- -// CXcapDocument::RemoveNamespace -// -// --------------------------------------------------------- -// -void CLocalDocument::RemoveNamespace( const TDesC8& aUri ) - { - TBool found = EFalse; - CXdmNamespace* ns = NULL; - TInt count = iNamespaces.Count(); - for( TInt i = 0;!found && i < count;i++ ) - { - ns = iNamespaces[i]; - if( ns->Uri().Compare( aUri ) == 0 ) - { - found = ETrue; - iNamespaces.Remove( i ); - delete ns; - ns = NULL; - } - } - } - -// --------------------------------------------------------- -// CLocalDocument::Uri -// -// --------------------------------------------------------- -// -TPtrC8 CLocalDocument::Uri( const TDesC8& aPrefix ) const - { - TPtrC8 uri( _L8( "" ) ); - TBool found = EFalse; - TInt count = iNamespaces.Count(); - for( TInt i = 0;i < count && !found;i++ ) - { - if( iNamespaces[i]->Prefix().Compare( aPrefix ) == 0 ) - { - uri.Set( iNamespaces[i]->Uri() ); - found = ETrue; - } - } - return uri; - } - -// --------------------------------------------------------- -// CLocalDocument::Count -// -// --------------------------------------------------------- -// -TInt CLocalDocument::Count() const - { - return iNamespaces.Count(); - } - -// --------------------------------------------------------- -// CLocalDocument::Prefix -// -// --------------------------------------------------------- -// -TPtrC8 CLocalDocument::Prefix( TInt aIndex ) const - { - TInt count = iNamespaces.Count(); - if( count > 0 && ( aIndex >= 0 && aIndex < count ) ) - return iNamespaces[aIndex]->Prefix(); - else return TPtrC8(); - } - -// --------------------------------------------------------- -// CLocalDocument::Uri -// -// --------------------------------------------------------- -// -TPtrC8 CLocalDocument::Uri( TInt aIndex ) const - { - TInt count = iNamespaces.Count(); - if( count > 0 && ( aIndex >= 0 && aIndex < count ) ) - return iNamespaces[aIndex]->Uri(); - else return TPtrC8(); - } - -// --------------------------------------------------------- -// CLocalDocument::ResetNamespaces -// -// --------------------------------------------------------- -// -void CLocalDocument::ResetNamespaces( ) - { - iNamespaces.ResetAndDestroy(); - } - -// --------------------------------------------------------- -// CLocalDocument::TimeStamp -// -// --------------------------------------------------------- -// -TTime CLocalDocument::TimeStamp() const - { - return iLastModification; - } - -// --------------------------------------------------------- -// CLocalDocument::SaveClientStatus -// -// --------------------------------------------------------- -// -void CLocalDocument::SaveClientStatus( TRequestStatus& aStatus ) - { - iClientStatus = &aStatus; - } - -// --------------------------------------------------------- -// CLocalDocument::DoCancel -// -// --------------------------------------------------------- -// -void CLocalDocument::DoCancel() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocument::DoCancel()" ) ); - #endif - } - - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/src/LocalDocumentNode.cpp --- a/xdmprotocols/LocalProtocol/src/LocalDocumentNode.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,331 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalDocumentNode -* -*/ - - - - -// INCLUDE FILES -#include "XdmDocument.h" -#include "LocalProtocol.h" -#include "LocalDocumentNode.h" -#include "LocalNodeAttribute.h" - - -// ---------------------------------------------------------- -// CLocalDocumentNode::CLocalDocumentNode -// -// ---------------------------------------------------------- -// -CLocalDocumentNode::CLocalDocumentNode( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ) : - CXdmDocumentNode( aXdmEngine, ( MXdmNodeFactory& )*this ), - iLocalProtocol( aLocalProtocol ) - { - } - - -// ---------------------------------------------------------- -// CLocalDocumentNode::CLocalDocumentNode -// -// ---------------------------------------------------------- -// -CLocalDocumentNode::CLocalDocumentNode( CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ) : - CXdmDocumentNode( aXdmEngine, - ( MXdmNodeFactory& )*this, aParentNode ), - iLocalProtocol( aLocalProtocol ) - - { - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::CLocalDocumentNode -// -// ---------------------------------------------------------- -// -CLocalDocumentNode::CLocalDocumentNode( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ) : - CXdmDocumentNode( aLeafNode, aXdmEngine, - ( MXdmNodeFactory& )*this, aParentNode ), - iLocalProtocol( aLocalProtocol ) - { - - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CLocalDocumentNode* CLocalDocumentNode::NewL( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ) - { - return new ( ELeave ) CLocalDocumentNode( aXdmEngine, aLocalProtocol ); - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CLocalDocumentNode* CLocalDocumentNode::NewL( CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CLocalProtocol& aLocalProtocol ) - { - CLocalDocumentNode* self = new ( ELeave ) CLocalDocumentNode( aXdmEngine, aLocalProtocol ); - CleanupStack::PushL( self ); - self->BaseConstructL( aNodeName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CLocalDocumentNode* CLocalDocumentNode::NewL( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol, - const CXdmDocumentNode& aAnotherNode, - const CXdmDocumentNode& aParentNode ) - { - CLocalDocumentNode* self = new ( ELeave ) CLocalDocumentNode( aXdmEngine, aLocalProtocol ); - CleanupStack::PushL( self ); - self->BaseConstructL( aAnotherNode.NodeName() ); - self->CopyConstructL( aAnotherNode, aParentNode ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CLocalDocumentNode* CLocalDocumentNode::NewL( CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ) - { - CLocalDocumentNode* self = new ( ELeave ) CLocalDocumentNode( aXdmEngine, aParentNode, - aLocalProtocol ); - CleanupStack::PushL( self ); - self->BaseConstructL( aNodeName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CLocalDocumentNode* CLocalDocumentNode::NewL( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ) - { - CLocalDocumentNode* self = new ( ELeave ) CLocalDocumentNode( aLeafNode, aXdmEngine, - aParentNode, aLocalProtocol ); - CleanupStack::PushL( self ); - self->BaseConstructL( aNodeName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CLocalDocumentNode* CLocalDocumentNode::NewL( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ) - { - return new ( ELeave ) CLocalDocumentNode( aLeafNode, aXdmEngine, - aParentNode, aLocalProtocol ); - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::CopyConstructL -// -// ---------------------------------------------------------- -// -void CLocalDocumentNode::CopyConstructL( const CXdmDocumentNode& aAnotherNode, - const CXdmDocumentNode& aParentNode ) - { - CXdmDocumentNode::CopyConstructL( aAnotherNode, aParentNode ); - //TODO: Write the protocol specific copy operations - } - -// ---------------------------------------------------- -// CLocalDocumentNode::~CLocalDocumentNode -// -// ---------------------------------------------------- -// -EXPORT_C CLocalDocumentNode::~CLocalDocumentNode() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocumentNode::~CLocalDocumentNode(): %x" ), this ); - #endif - delete iPrefix; - delete iNextNode; - } - -// ---------------------------------------------------- -// CLocalDocumentNode::RemoveLocalL -// -// ---------------------------------------------------- -// -EXPORT_C void CLocalDocumentNode::RemoveLocalL( CXdmDocumentNode* aChileNode ) - { - RemoveChileNodeL( aChileNode ); - } - -// ---------------------------------------------------- -// CLocalDocumentNode::AppendLocalL -// -// ---------------------------------------------------- -// -EXPORT_C void CLocalDocumentNode::AppendLocalL( CXdmDocumentNode* aChileNode ) - { - if( aChileNode->Match( *this ) ) - { - const TInt count = aChileNode->NodeCount(); - for( TInt i = 0;i < count;i++ ) - AppendChileNodeL( aChileNode->ChileNode( i ) ); - } - else AppendChileNodeL( aChileNode ); - } - -// ---------------------------------------------------- -// CLocalDocumentNode::ReplaceLocalL -// -// ---------------------------------------------------- -// -EXPORT_C void CLocalDocumentNode::ReplaceLocalL( CXdmDocumentNode* aNewNode, - CXdmDocumentNode* aTargetNode ) - { - ReplaceChileNodeL( aNewNode, aTargetNode ); - } - -// ---------------------------------------------------- -// CLocalDocumentNode::CreateChileNodeL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CLocalDocumentNode::ChileNodeL() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocumentNode::CreateChileNodeL()" ) ); - #endif - return CLocalDocumentNode::NewL( EFalse, iXdmEngine, this, iLocalProtocol ); - } - -// ---------------------------------------------------- -// CLocalDocumentNode::CreateChileNodeL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CLocalDocumentNode::ChileNodeL( const TDesC& aChildName ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocumentNode::CreateChileNodeL() - Name: %S" ), &aChildName ); - #endif - return CLocalDocumentNode::NewL( EFalse, iXdmEngine, aChildName, this, iLocalProtocol ); - } - -// ---------------------------------------------------- -// CLocalDocumentNode::CreateChileNodeL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CLocalDocumentNode::ChileNodeL( const CXdmDocumentNode* aAnotherNode ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocumentNode::ChileNodeL() - Object: %x" ), aAnotherNode ); - #endif - return CLocalDocumentNode::NewL( iXdmEngine, iLocalProtocol, *aAnotherNode, *this ); - } - -// ---------------------------------------------------- -// CLocalDocumentNode::CreateAttributeL -// -// ---------------------------------------------------- -// -CXdmNodeAttribute* CLocalDocumentNode::AttributeL() - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocumentNode::CreateAttributeL()" ) ); - #endif - return CLocalNodeAttribute::NewL( iXdmEngine, this, iLocalProtocol ); - } - -// ---------------------------------------------------- -// CLocalDocumentNode::CreateAttributeL -// -// ---------------------------------------------------- -// -CXdmNodeAttribute* CLocalDocumentNode::AttributeL( const TDesC& aAttributeName ) - { - #ifdef _DEBUG - iLocalProtocol.WriteToLog( _L8( "CLocalDocumentNode::CreateAttributeL() - Name: %S" ), &aAttributeName ); - #endif - return CLocalNodeAttribute::NewL( iXdmEngine, aAttributeName, this, iLocalProtocol ); - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::SetParentNode -// -// ---------------------------------------------------------- -// -void CLocalDocumentNode::SetParentNode( CLocalDocumentNode*& aParentNode ) - { - iParentNode = aParentNode; - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::NamespacePrefix -// -// ---------------------------------------------------------- -// -TPtrC8 CLocalDocumentNode::Prefix() const - { - return iPrefix != NULL ? iPrefix->Des() : TPtrC8(); - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::SetNamespacePrefixL -// -// ---------------------------------------------------------- -// -void CLocalDocumentNode::SetPrefixL( const TDesC8& aPrefix ) - { - delete iPrefix; - iPrefix = NULL; - iPrefix = HBufC8::NewL( aPrefix.Length() ); - iPrefix->Des().Copy( aPrefix ); - } - - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/src/LocalNodeAttribute.cpp --- a/xdmprotocols/LocalProtocol/src/LocalNodeAttribute.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalNodeAttribute -* -*/ - - - - -// INCLUDE FILES -#include "LocalProtocol.h" -#include "LocalNodeAttribute.h" - -// ---------------------------------------------------------- -// CLocalNodeAttribute::CLocalNodeAttribute -// -// ---------------------------------------------------------- -// -CLocalNodeAttribute::CLocalNodeAttribute( CXdmEngine& aXdmEngine, - CLocalProtocol& aLocalProtocol ) : - CXdmNodeAttribute( aXdmEngine, - ( MXdmNodeFactory& )*this ), - iLocalProtocol( aLocalProtocol ) - - { - } - -// ---------------------------------------------------------- -// CLocalNodeAttribute::CLocalNodeAttribute -// -// ---------------------------------------------------------- -// -CLocalNodeAttribute::CLocalNodeAttribute( CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ) : - CXdmNodeAttribute( aXdmEngine, - ( MXdmNodeFactory& )*this, aParentNode ), - iLocalProtocol( aLocalProtocol ) - - { - } - -// ---------------------------------------------------------- -// CLocalNodeAttribute::CLocalNodeAttribute -// -// ---------------------------------------------------------- -// -CLocalNodeAttribute* CLocalNodeAttribute::NewL( CXdmEngine& aXdmEngine, - const TDesC& aAttributeName, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ) - { - CLocalNodeAttribute* self = new ( ELeave ) CLocalNodeAttribute( aXdmEngine, aParentNode,aLocalProtocol ); - CleanupStack::PushL( self ); - self->CXdmNodeAttribute::BaseConstructL( aAttributeName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CLocalNodeAttribute::CLocalNodeAttribute -// -// ---------------------------------------------------------- -// -CLocalNodeAttribute* CLocalNodeAttribute::NewL( CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode, - CLocalProtocol& aLocalProtocol ) - { - CLocalNodeAttribute* self = new ( ELeave ) CLocalNodeAttribute( aXdmEngine, aParentNode, aLocalProtocol ); - /*CleanupStack::PushL( self ); - self->BaseConstructL(); - CleanupStack::Pop();*/ - return self; - } - -// ---------------------------------------------------------- -// CLocalNodeAttribute::~CLocalNodeAttribute -// -// ---------------------------------------------------------- -// -CLocalNodeAttribute::~CLocalNodeAttribute() - { - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::NamespacePrefix -// -// ---------------------------------------------------------- -// -TPtrC8 CLocalNodeAttribute::Prefix() const - { - return TPtrC8(); - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::SetNamespacePrefixL -// -// ---------------------------------------------------------- -// -void CLocalNodeAttribute::SetPrefixL( const TDesC& /*aNamespacePrefix*/ ) - { - } - -// ---------------------------------------------------------- -// CLocalDocumentNode::SetNamespacePrefixL -// -// ---------------------------------------------------------- -// -void CLocalNodeAttribute::SetPrefixL( const TDesC8& /*aNamespacePrefix*/ ) - { - } - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/LocalProtocol/src/LocalProtocol.cpp --- a/xdmprotocols/LocalProtocol/src/LocalProtocol.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,287 +0,0 @@ -/* -* Copyright (c) 2005 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: CLocalProtocol -* -*/ - - - -#include -#include -#include -#include -#include "XdmXmlParser.h" -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalDocumentNode.h" -#include "LocalDirectory.h" -#include "XdmCredentials.h" -#include "XdmProtocolInfo.h" -#include "XdmOperationFactory.h" - -// ---------------------------------------------------------- -// CLocalProtocol::CLocalProtocol -// -// ---------------------------------------------------------- -// -CLocalProtocol::CLocalProtocol( const CXdmEngine& aXdmEngine, - const CXdmProtocolInfo& aProtocolInfo ) : - iTransferMediaOpen( EFalse ), - iXdmEngine( CONST_CAST( CXdmEngine&, aXdmEngine ) ), - iProtocolInfo( aProtocolInfo ) - { - } - -// ---------------------------------------------------------- -// CLocalProtocol::DeleteLogFileL -// -// ---------------------------------------------------------- -// -CLocalProtocol* CLocalProtocol::NewL( const TXdmProtocolParams& aProtocolParams ) - { - CLocalProtocol* self = new ( ELeave ) CLocalProtocol( aProtocolParams.iXdmEngine, - aProtocolParams.iProtocolInfo ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CLocalProtocol::DeleteLogFileL -// -// ---------------------------------------------------------- -// -CLocalProtocol::~CLocalProtocol() - { - #ifdef _DEBUG - WriteToLog( _L8( "CLocalProtocol::~CLocalProtocol()" ) ); - #endif - delete iRootFolder; - delete iXmlParser; - delete iLogWriter; - iFileSession.Close(); - Dll::FreeTls(); - } - -// ---------------------------------------------------------- -// CLocalProtocol::ConstructL -// -// ---------------------------------------------------------- -// -void CLocalProtocol::ConstructL() - { - #ifdef _DEBUG - iLogWriter = CXdmLogWriter::NewL( KLocalEngLogFile ); - WriteToLog( _L8( "CLocalProtocol::ConstructL() " ) ); - #endif - iXmlParser = CXdmXmlParser::NewL(); - SetRootDirectoryL( iProtocolInfo.Root() ); - User::LeaveIfError( iFileSession.Connect() ); - Dll::SetTls( this ); - } - -// ---------------------------------------------------------- -// CLocalProtocol::SetRootDirectoryL -// -// ---------------------------------------------------------- -// -void CLocalProtocol::SetRootDirectoryL( const TDesC& aRootPath ) - { - TUid id = RProcess().Identity(); - TBuf<32> processId; - processId.Zero(); - processId.Format( _L( "%x" ), id ); - #ifdef _DEBUG - WriteToLog( _L8( "CLocalProtocol::SetRootDirectoryL()" ) ); - #endif - if( aRootPath.Length() > 0 ) - { - iRootFolder = HBufC::NewL( aRootPath.Length() + - processId.Length() + - TPtrC( KLocalEngPrivateRoot ).Length() + 4 ); - iRootFolder->Des().Copy( KLocalEngPrivateRoot ); - iRootFolder->Des().Append( processId ); - iRootFolder->Des().Append( _L( "\\" ) ); - iRootFolder->Des().Append( aRootPath ); - iRootFolder->Des().Append( _L( "\\" ) ); - } - else - { - iRootFolder = HBufC::NewL( processId.Length() + - KLocalEngPrivateRoot().Length() + 2 ); - iRootFolder->Des().Copy( KLocalEngPrivateRoot ); - iRootFolder->Des().Append( processId ); - iRootFolder->Des().Append( _L( "\\" ) ); - } - #ifdef _DEBUG - TBuf8<256> eight; - eight.Copy( iRootFolder->Des() ); - WriteToLog( _L8( " Path: %S" ), &eight ); - #endif - } - -// ---------------------------------------------------------- -// CLocalProtocol::.WriteToLog -// -// ---------------------------------------------------------- -// -void CLocalProtocol::WriteToLog( TRefByValue aFmt,... ) const - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - iLogWriter->WriteToLog( buf ); - } - -// ---------------------------------------------------- -// CLocalProtocol::InitTransferMedia -// -// ---------------------------------------------------- -// -void CLocalProtocol::InitTransferMedium( TInt /*aIdleTimeout*/, - TRequestStatus& aStatus ) - { - TRequestStatus* status = &aStatus; - User::RequestComplete( status, KErrNone ); - } - -// ---------------------------------------------------- -// CLocalProtocol::CancelTransferMediaInit -// -// ---------------------------------------------------- -// -void CLocalProtocol::CancelTransferMediumInit() - { - } - -// ---------------------------------------------------- -// CLocalProtocol::IsTransferAvailable -// -// ---------------------------------------------------- -// -TBool CLocalProtocol::IsTransferAvailable() const - { - return ETrue; - } - -// ---------------------------------------------------- -// CLocalProtocol::RFSession -// -// ---------------------------------------------------- -// -RFs& CLocalProtocol::RFSession() - { - return iFileSession; - } - -// ---------------------------------------------------- -// CLocalProtocol::Root -// -// ---------------------------------------------------- -// -TPtrC CLocalProtocol::Root() - { - return iRootFolder != NULL ? iRootFolder->Des() : TPtrC(); - } - -// ---------------------------------------------------------- -// void CXcapProtocol::DeleteLogFileL -// -// ---------------------------------------------------------- -// -EXPORT_C RFs& CLocalProtocol::FileSession() - { - TAny* ptr = Dll::Tls(); - CLocalProtocol* self = ( CLocalProtocol* )ptr; - return self->RFSession(); - } - -// ---------------------------------------------------- -// CLocalProtocol::RootFolder -// -// ---------------------------------------------------- -// -EXPORT_C TPtrC CLocalProtocol::RootFolder() - { - TAny* ptr = Dll::Tls(); - CLocalProtocol* self = ( CLocalProtocol* )ptr; - return self->Root(); - } - -// ---------------------------------------------------- -// CLocalProtocol::CreateDocumentNodeL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CLocalProtocol::CreateDocumentNodeL() - { - return CLocalDocumentNode::NewL( iXdmEngine, *this ); - } - -// ---------------------------------------------------- -// CLocalProtocol::CreateDocumentL -// -// ---------------------------------------------------- -// -CXdmDocument* CLocalProtocol::CreateDocumentL( const TDesC& aDocumentName, - const TXdmDocType /*aDocumentType*/ ) - { - return CLocalDocument::NewL( iXdmEngine, aDocumentName, *this ); - } - -// ---------------------------------------------------- -// CLocalProtocol::CreateDirectoryL -// -// ---------------------------------------------------- -// -CXdmDirectory* CLocalProtocol::CreateDirectoryL( const TDesC& aDirectoryPath ) - { - TPtrC root = iRootFolder->Des(); - HBufC* fullName = HBufC::NewLC( root.Length() + aDirectoryPath.Length() ); - fullName->Des().Copy( root ); - fullName->Des().Append( aDirectoryPath ); - CXdmDirectory* dir = CLocalDirectory::NewL( fullName->Des(), iXdmEngine, *this ); - CleanupStack::PopAndDestroy(); //fullName - return dir; - } - -// --------------------------------------------------------- -// Map the interface UIDs to implementation factory functions -// -// --------------------------------------------------------- -// -const TImplementationProxy ImplementationTable[] = - { - #ifdef __EABI__ - IMPLEMENTATION_PROXY_ENTRY( 0x10207424, CLocalProtocol::NewL ) - #else - { { 0x10207424 }, CLocalProtocol::NewL } - #endif - }; - -// --------------------------------------------------------- -// Return the implementation table & number of implementations -// -// --------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - return ImplementationTable; - } - - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/BWINSCW/XcapAppUsageU.DEF --- a/xdmprotocols/XcapProtocol/XcapAppUsage/BWINSCW/XcapAppUsageU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -EXPORTS - ?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &) - ?NewL@CXcapAppUsage@@QAEPAV1@ABVCXdmEngine@@H@Z @ 2 NONAME ; class CXcapAppUsage * CXcapAppUsage::NewL(class CXdmEngine const &, int) - ?Validate@CXcapAppUsage@@QAEHAAVCXdmDocument@@H@Z @ 3 NONAME ; int CXcapAppUsage::Validate(class CXdmDocument &, int) - ?Validate@CXcapAppUsage@@QAEHAAVCXdmDocumentNode@@PAVMXcapUriInterface@@H@Z @ 4 NONAME ; int CXcapAppUsage::Validate(class CXdmDocumentNode &, class MXcapUriInterface *, int) - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XCapCommonPolicyCapsUsage/inc/XcapIetfCommonPolicyUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XCapCommonPolicyCapsUsage/inc/XcapIetfCommonPolicyUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapIetfCommonPolicyUsage -* -*/ - - - - -#ifndef __XCAPIETFCOMMONPOLICYUSAGE__ -#define __XCAPIETFCOMMONPOLICYUSAGE__ - -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapIetfCommonPolicyUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapIetfCommonPolicyUsage* - */ - static CXcapIetfCommonPolicyUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapIetfCommonPolicyUsage(); - - public: //From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapIetfCommonPolicyUsage( const CXdmEngine& aXdmEngine ); - - private: // Data - - - }; - -#endif //__XCAPIETFCOMMONPOLICYUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XCapCommonPolicyCapsUsage/inc/XcapOmaCommonPolicyUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XCapCommonPolicyCapsUsage/inc/XcapOmaCommonPolicyUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapOmaCommonPolicyUsage -* -*/ - - - - -#ifndef __XCAPOMACOMMONPOLICYUSAGE__ -#define __XCAPOMACOMMONPOLICYUSAGE__ - -#include -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapOmaCommonPolicyUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapOmaCommonPolicyUsage* - */ - static CXcapOmaCommonPolicyUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapOmaCommonPolicyUsage(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapOmaCommonPolicyUsage( const CXdmEngine& aXdmEngine ); - }; - -#endif //__XCAPOMACOMMONPOLICYUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XCapCommonPolicyCapsUsage/src/XcapIetfCPUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XCapCommonPolicyCapsUsage/src/XcapIetfCPUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,331 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapIetfCommonPolicyUsage -* -*/ - - - - -#include -#include -#include -#include "XcapIetfCommonPolicyUsage.h" - -// Used specifications -// draft-ietf-geopriv-common-policy-08, 05 March 2006, expires 06 September 2006 - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::CXcapIetfCommonPolicyUsage -// -// ---------------------------------------------------- -// -CXcapIetfCommonPolicyUsage::CXcapIetfCommonPolicyUsage( const CXdmEngine& aXdmEngine ) -:CXcapAppUsage( aXdmEngine ) - { - } - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::NewL -// -// ---------------------------------------------------- -// -CXcapIetfCommonPolicyUsage* CXcapIetfCommonPolicyUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapIetfCommonPolicyUsage* self = new ( ELeave ) CXcapIetfCommonPolicyUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::~CXcapIetfCommonPolicyUsage -// -// ---------------------------------------------------- -// -CXcapIetfCommonPolicyUsage::~CXcapIetfCommonPolicyUsage() - { - } - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapIetfCommonPolicyUsage::ConstructL() - { - } - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapIetfCommonPolicyUsage::AUID() const - { - return TPtrC8( KXdmIetfCommonPolicyUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapIetfCommonPolicyUsage::ContentType() const - { - return TPtrC8( KXdmIetfCommonPolicyUsageContType ); - } - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapIetfCommonPolicyUsage::DefaultNamespace() const - { - return TPtrC8( KXdmIetfCommonPolicyNamespace ); - } - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::ValidateNodeL -// -// ---------------------------------------------------- -// -TBool CXcapIetfCommonPolicyUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found ( EFalse ); - TDataType dataType ( EDataTypeUndefined ); - TPtrC element = aXdmNode.NodeName(); - - // - if ( Match( element, KXdmRuleset ) ) - { - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - // ruleset should not contain any other type elements - // than - if ( !Match( aXdmNode.ChileNode(i)->NodeName(), KXdmRule ) ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - } - found = ETrue; - } - // - else if ( Match( element, KXdmRule ) ) - { - // required attribute id - if ( !aXdmNode.HasAttribute( KXdmId ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmConditions ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmActions ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmTransformations ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmValidity ) ) - { - // should contain and - TBool from( EFalse ); - TBool until( EFalse ); - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - TPtrC childName = aXdmNode.ChileNode(i)->NodeName(); - if ( Match( childName, KXdmFrom ) ) - { - from = ETrue; - } - else if ( Match( childName, KXdmUntil ) ) - { - until = ETrue; - } - } - if ( !from || !until ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredElement ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmFrom ) ) - { - dataType = EDataTypeDateTime; - found = ETrue; - } - // - else if ( Match( element, KXdmTo ) ) - { - dataType = EDataTypeDateTime; - found = ETrue; - } - // - else if ( Match( element, KXdmIdentity ) ) - { - // should contain either or - // elements, not both - TBool one( EFalse ); - TBool many( EFalse ); - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - TPtrC childName = aXdmNode.ChileNode(i)->NodeName(); - if ( Match( childName, KXdmOne ) ) - { - one = ETrue; - } - else if ( Match( childName, KXdmMany ) ) - { - many = ETrue; - } - } - if ( one && many ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmId ) ) - { - // required attribute entity - if ( !aXdmNode.HasAttribute( KXdmEntity ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmAnyIdentity ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmExcept ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmSphere ) ) - { - // required attribute value - if ( !aXdmNode.HasAttribute( KXdmValue ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmOne ) ) - { - // required attribute id - if ( !aXdmNode.HasAttribute( KXdmId ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmMany) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmUntil ) ) - { - dataType = EDataTypeDateTime; - found = ETrue; - } - - // if the node is some of the basic types, - // pass it to the base class for data validation - if ( dataType != EDataTypeUndefined ) - { - ValidateDataL( dataType, aXdmNode ); - } - return found; - } - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapIetfCommonPolicyUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - TDataType dataType ( EDataTypeUndefined ); - TPtrC attribute = aXdmNodeAttr.NodeName(); - - // id - if ( Match( attribute, KXdmId ) ) - { - dataType = EDataTypeString; - } - // domain - else if ( Match( attribute, KXdmDomain ) ) - { - dataType = EDataTypeString; - } - // value - else if ( Match( attribute, KXdmValue ) ) - { - dataType = EDataTypeString; - } - - // pass to base class for data validation - ValidateDataL( dataType, aXdmNodeAttr ); - } - -// ---------------------------------------------------- -// CXcapIetfCommonPolicyUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapIetfCommonPolicyUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - aXdmDocument.AppendNamespaceL( KXdmIetfCommonPolicyNamespace, KNullDesC8 ); - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XCapCommonPolicyCapsUsage/src/XcapOmaCPUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XCapCommonPolicyCapsUsage/src/XcapOmaCPUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,184 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapOmaCommonPolicyUsage -* -*/ - - - - -// Used specifications -// OMA-TS-XDM_Core-V1_0-20060612, 12 June 2006 - -#include -#include -#include "XcapOmaCommonPolicyUsage.h" - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::CXcapOmaCommonPolicyUsage -// -// ---------------------------------------------------- -// -CXcapOmaCommonPolicyUsage::CXcapOmaCommonPolicyUsage( const CXdmEngine& aXdmEngine ) : -CXcapAppUsage( aXdmEngine ) - { - } - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::NewL -// -// ---------------------------------------------------- -// -CXcapOmaCommonPolicyUsage* CXcapOmaCommonPolicyUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapOmaCommonPolicyUsage* self = new ( ELeave ) CXcapOmaCommonPolicyUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::~CXcapOmaCommonPolicyUsage -// -// ---------------------------------------------------- -// -CXcapOmaCommonPolicyUsage::~CXcapOmaCommonPolicyUsage() - { - } - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapOmaCommonPolicyUsage::ConstructL() - { - } - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapOmaCommonPolicyUsage::AUID() const - { - return TPtrC8( KXdmOmaCommonPolicyUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapOmaCommonPolicyUsage::ContentType() const - { - return TPtrC8( KXdmOmaCommonPolicyUsageContType ); - } - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapOmaCommonPolicyUsage::DefaultNamespace() const - { - return TPtrC8( KXdmOmaCommonPolicyNamespace ); - } - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::ValidateNodeL -// -// ---------------------------------------------------- -// -TBool CXcapOmaCommonPolicyUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found( EFalse ); - TDataType dataType ( EDataTypeUndefined ); - TPtrC element = aXdmNode.NodeName(); - - // - if ( Match( element, KXdmOtherIdentity ) ) - { - dataType = EDataTypeEmpty; - found = ETrue; - } - // - else if ( Match( element, KXdmExternalList ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmEntry ) ) - { - // should we check the parent's namespace here - found = ETrue; - } - // - else if ( Match( element, KXdmAnonymousRequest ) ) - { - dataType = EDataTypeEmpty; - found = ETrue; - } - - // if the node is some of the basic types, - // pass it to the base class for data validation - if ( dataType != EDataTypeUndefined ) - { - ValidateDataL( dataType, aXdmNode ); - } - return found; - } - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapOmaCommonPolicyUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - // anc - if ( Match( aXdmNodeAttr.NodeName(), KXdmAnc ) ) - { - // pass to base class for data validation - ValidateDataL( EDataTypeAnyURI, aXdmNodeAttr ); - } - } - -// ---------------------------------------------------- -// CXcapOmaCommonPolicyUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapOmaCommonPolicyUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - aXdmDocument.AppendNamespaceL( KXdmOmaCommonPolicyNamespace, KNullDesC8 ); - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XCapPocUserAccessUsage/inc/XcapPocUserAccessUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XCapPocUserAccessUsage/inc/XcapPocUserAccessUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapPocUserAccessUsage -* -*/ - - - - -#ifndef __XCAPPOCUSERACCESSUSAGE__ -#define __XCAPPOCUSERACCESSUSAGE__ - -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapPocUserAccessUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapPocUserAccessUsage* - */ - static CXcapPocUserAccessUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapPocUserAccessUsage(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapPocUserAccessUsage( const CXdmEngine& aXdmEngine ); - - private: // Data - - CXcapAppUsage* iIetfCommonPolicies; - CXcapAppUsage* iOmaCommonPolicies; - }; - -#endif //__XCAPPOCGROUPUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XCapPocUserAccessUsage/src/XcapPocUserAccessUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XCapPocUserAccessUsage/src/XcapPocUserAccessUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,208 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapPocUserAccessUsage -* -*/ - - - - -#include -#include -#include -#include "XcapPocUserAccessUsage.h" - -// Used specification -// OMA-TS-PoC_XDM-V1_0-20050317-C, 17 March 2005 -// OMA-TS-PoC_XDM-V1_0-20060127-C, 27 January 2006 - -// ---------------------------------------------------- -// CXcapPocUserAccessUsage::CXcapPocUserAccessUsage -// -// ---------------------------------------------------- -// -CXcapPocUserAccessUsage::CXcapPocUserAccessUsage( const CXdmEngine& aXdmEngine ) : -CXcapAppUsage( aXdmEngine ), -iIetfCommonPolicies( NULL ), -iOmaCommonPolicies( NULL ) - { - } - -// ---------------------------------------------------- -// CXcapPocUserAccessUsage::NewL -// -// ---------------------------------------------------- -// -CXcapPocUserAccessUsage* CXcapPocUserAccessUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapPocUserAccessUsage* self = new ( ELeave ) CXcapPocUserAccessUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapPocUserAccessUsage::~CXcapPocUserAccessUsage -// -// ---------------------------------------------------- -// -CXcapPocUserAccessUsage::~CXcapPocUserAccessUsage() - { - delete iIetfCommonPolicies; - delete iOmaCommonPolicies; - } - -// ---------------------------------------------------- -// CXcapPocUserAccessUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapPocUserAccessUsage::ConstructL() - { - iIetfCommonPolicies = CXcapAppUsage::NewL( iXdmEngine, EXdmIetfCommonPolicy ); - iOmaCommonPolicies = CXcapAppUsage::NewL( iXdmEngine, EXdmOmaCommonPolicy ); - } - -// ---------------------------------------------------- -// CXcapPocUserAccessUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapPocUserAccessUsage::AUID() const - { - return TPtrC8( KXdmPocUserAccessUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapPocUserAccessUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapPocUserAccessUsage::ContentType() const - { - return TPtrC8( KXdmPocUserAccessUsageContType ); - } - -// ---------------------------------------------------- -// CXcapPocUserAccessUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapPocUserAccessUsage::DefaultNamespace() const - { -// return TPtrC8( KXdmPocUserAccessNamespace ); - // NOTE the default namespace is IetfCommonPolicy - return TPtrC8( KXdmIetfCommonPolicyNamespace ); - } - -// ---------------------------------------------------- -// CXcapPocUserAccessUsage::ValidateNodeL -// -// ---------------------------------------------------- -// -TBool CXcapPocUserAccessUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found ( EFalse ); - TPtrC element = aXdmNode.NodeName(); - - // there is restriction for the value - // of - // check that value is either "reject", "accept" or "pass" - // 0 (reject), 1 (pass), 2 (accept) - if ( Match( element, KXdmAllowInvite ) ) - { - TPtrC8 data = aXdmNode.LeafNodeContent(); - if ( data.CompareF( KXdmReject ) - && data.CompareF( KXdmAccept ) - && data.CompareF( KXdmPass ) ) - { - LeaveWithErrorL( KXcapErrorEnumerationRule ); - } - found = ETrue; - // NOTE the default namespace is IetfCommonPolicy - SetPrefixL( aXdmNode, KXdmPocUserAccessNsPrefix ); - } - // urn:ietf:params:xml:ns:common-policy - if ( !found ) - { - found = iIetfCommonPolicies->ValidateNodeL( aXdmNode ); - // NOTE the default namespace is IetfCommonPolicy - /*if ( found ) - { - SetPrefixL( aXdmNode, KXdmIetfCommonPolicyNsPrefix ); - }*/ - } - // urn:oma:params:xml:ns:common-policy - if ( !found ) - { - found = iOmaCommonPolicies->ValidateNodeL( aXdmNode ); - if ( found ) - { - SetPrefixL( aXdmNode, KXdmOmaCommonPolicyNsPrefix ); - } - } - return found; - } - -// ---------------------------------------------------- -// CXcapPocUserAccessUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapPocUserAccessUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - // there aren't any attributes, all attributes are - // either from urn:ietf:params:xml:ns:common-policy - // or from urn:oma:params:xml:ns:common-policy - - // add parent element namespace checking when available, - // now we don't know the attribute's namespace - iIetfCommonPolicies->ValidateAttributeL( aXdmNodeAttr ); - iOmaCommonPolicies->ValidateAttributeL( aXdmNodeAttr ); - } - - - // ---------------------------------------------------- -// CXcapPocUserAccessUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapPocUserAccessUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - aXdmDocument.AppendNamespaceL( KXdmIetfCommonPolicyNamespace, KNullDesC8 ); - aXdmDocument.AppendNamespaceL( KXdmPocUserAccessNamespace, KXdmPocUserAccessNsPrefix ); - aXdmDocument.AppendNamespaceL( KXdmOmaCommonPolicyNamespace, KXdmOmaCommonPolicyNsPrefix ); -/* aXdmDocument.AppendNamespaceL( KXdmPocUserAccessNamespace, KNullDesC8 ); - aXdmDocument.AppendNamespaceL( KXdmIetfCommonPolicyNamespace, KXdmIetfCommonPolicyNsPrefix ); - aXdmDocument.AppendNamespaceL( KXdmOmaCommonPolicyNamespace, KXdmOmaCommonPolicyNsPrefix );*/ - } - - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapC4/inc/XcapC4.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapC4/inc/XcapC4.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -/* -* Copyright (c) 2008 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: CXcapC4 -* -*/ - -#ifndef __XCAPRESCONTENT__ -#define __XCAPRESCONTENT__ - -#include "XcapAppUsage.h" - -// CONSTANTS -#define KC4SettingsCenRepUID 0x20021391 - - -// CLASS DECLARATION -class CXcapC4 : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapC4* - */ - static CXcapC4* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapC4(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapC4( const CXdmEngine& aXdmEngine ); - - private: // member data - /// RCS Global: Old content type setting - TInt iRCSGlobalOldContentType; - }; - -#endif //__XCAPPRESCONTENT__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapC4/src/XcapC4.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapC4/src/XcapC4.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -/* -* Copyright (c) 2008 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: CXcapC4 -* -*/ - -#include -#include -#include -#include -#ifdef _DEBUG -#include -#endif - -#include "XcapC4.h" -//#include "pasvariation.hrh" - - -// Used specification -// Presence Content XDM Specification, draft 1.0 - -// ---------------------------------------------------- -// CXcapC4::CXcapC4 -// -// ---------------------------------------------------- -// -CXcapC4::CXcapC4( const CXdmEngine& aXdmEngine ) : - CXcapAppUsage( aXdmEngine ) - { -#ifdef _DEBUG - WriteToLog( _L8( "CXcapC4 initialized!" ) ); -#endif - } - -// ---------------------------------------------------- -// CXcapC4::NewL -// -// ---------------------------------------------------- -// -CXcapC4* CXcapC4::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapC4* self = new ( ELeave ) CXcapC4( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapC4::~CXcapC4 -// -// ---------------------------------------------------- -// -CXcapC4::~CXcapC4() - { - } - -// ---------------------------------------------------- -// CXcapC4::ConstructL -// -// ---------------------------------------------------- -// -void CXcapC4::ConstructL() - { - CRepository* cenRepRCSGlobal; - cenRepRCSGlobal = CRepository::NewL( TUid::Uid( KC4SettingsCenRepUID ) ); - CleanupStack::PushL( cenRepRCSGlobal ); - - // 0x06 is the index in central repository for content type setting - User::LeaveIfError( cenRepRCSGlobal->Get( 0x06, iRCSGlobalOldContentType ) ); - CleanupStack::PopAndDestroy( ); // cenRepRCSGlobal - } - -// ---------------------------------------------------- -// CXcapC4::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapC4::AUID() const - { - return TPtrC8( KXdmPresContentAUID ); - } - -// ---------------------------------------------------- -// CXcapC4::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapC4::ContentType() const - { - if ( iRCSGlobalOldContentType ) - { - return TPtrC8( KXdmPresContentContTypeOld ); - } - else - { - return TPtrC8( KXdmPresContentContType ); - } - } - -// ---------------------------------------------------- -// CXcapC4::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapC4::DefaultNamespace() const - { - return TPtrC8( KXdmPresContentNamespace ); - } - -// ---------------------------------------------------- -// CXcapC4::ValidateL -// -// ---------------------------------------------------- -// -TBool CXcapC4::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { -#ifdef _DEBUG - WriteToLog( _L8( "CXcapC4::ValidateNodeL" ) ); -#endif - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found ( EFalse ); - TPtrC element = aXdmNode.NodeName(); - - // mime-type - if ( Match( element, KXdmMimeType ) ) - { - found = ETrue; - } - else if ( Match( element, KXdmEncoding ) ) - { - found = ETrue; - } - else if ( Match( element, KXdmDescription ) ) - { - found = ETrue; - } - else if ( Match( element, KXdmData ) ) - { - found = ETrue; - } - -#ifdef _DEBUG - WriteToLog( _L8( "CXcapC4::ValidateNodeL - found: %d" ), found ); -#endif - return found; - } - -// ---------------------------------------------------- -// CXcapC4::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapC4::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - // there should not be any attributes in pres-content document -#ifdef _DEBUG - WriteToLog( _L8( "CXcapC4::ValidateAttributeL" ) ); -#endif -// User::Leave( KErrNotSupported ); - } - -// ---------------------------------------------------- -// CXcapC4::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapC4::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { -#ifdef _DEBUG - WriteToLog( _L8( "CXcapC4::AddNamespaceInformationL" ) ); -#endif - aXdmDocument.AppendNamespaceL( KXdmPresContentNamespace, KNullDesC8 ); - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapCapabilityUsage/inc/XcapCapabilityUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapCapabilityUsage/inc/XcapCapabilityUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCapabilityUsage -* -*/ - - - - -#ifndef __XCAPCAPABILITYUSAGE__ -#define __XCAPCAPABILITYUSAGE__ - -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapCapabilityUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapCapabilityUsage* - */ - static CXcapCapabilityUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapCapabilityUsage(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapCapabilityUsage( const CXdmEngine& aXdmEngine ); - }; - -#endif //__XCAPCAPABILITYUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapCapabilityUsage/src/XcapCapabilityUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapCapabilityUsage/src/XcapCapabilityUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,188 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCapabilityUsage -* -*/ - - - - -#include -#include "XcapCapabilityUsage.h" - -// Used specification -// OMA-TS-XDM_Core-V1_0-20051103-C, 03 November 2005 - -// ---------------------------------------------------- -// CXcapCapabilityUsage::CXcapCapabilityUsage -// -// ---------------------------------------------------- -// -CXcapCapabilityUsage::CXcapCapabilityUsage( const CXdmEngine& aXdmEngine ) : - CXcapAppUsage( aXdmEngine ) - { - } - -// ---------------------------------------------------- -// CXcapCapabilityUsage::NewL -// -// ---------------------------------------------------- -// -CXcapCapabilityUsage* CXcapCapabilityUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapCapabilityUsage* self = new ( ELeave ) CXcapCapabilityUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapCapabilityUsage::~CXcapCapabilityUsage -// -// ---------------------------------------------------- -// -CXcapCapabilityUsage::~CXcapCapabilityUsage() - { - } - -// ---------------------------------------------------- -// CXcapCapabilityUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapCapabilityUsage::ConstructL() - { - } - -// ---------------------------------------------------- -// CXcapCapabilityUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapCapabilityUsage::AUID() const - { - return TPtrC8( KXdmCapabilityUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapCapabilityUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapCapabilityUsage::ContentType() const - { - return TPtrC8( KXdmCapabilityUsageContType ); - } - -// ---------------------------------------------------- -// CXcapCapabilityUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapCapabilityUsage::DefaultNamespace() const - { - return TPtrC8( KXdmCapabilityNamespace ); - } - -// ---------------------------------------------------- -// CXcapCapabilityUsage::ValidateNodeL -// -// ---------------------------------------------------- -// -TBool CXcapCapabilityUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found ( EFalse ); - TDataType dataType ( EDataTypeUndefined ); - TPtrC element = aXdmNode.NodeName(); - - // - if ( Match( element, KXdmAuids ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmAuid ) ) - { - dataType = EDataTypeString; - found = ETrue; - } - // - else if ( Match( element, KXdmExtensions ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmExtension ) ) - { - dataType = EDataTypeString; - found = ETrue; - } - // - else if ( Match( element, KXdmNamespace ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmNamespace ) ) - { - dataType = EDataTypeAnyURI; - found = ETrue; - } - - if ( dataType != EDataTypeUndefined ) - { - // pass to the base class for data validation - ValidateDataL( dataType, aXdmNode ); - } - return found; - } - -// ---------------------------------------------------- -// CXcapCapabilityUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapCapabilityUsage::ValidateAttributeL( const CXdmNodeAttribute& /*aXdmNodeAttr*/ ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - // There aren't any attributes in - // capability usage schema. - } - -// ---------------------------------------------------- -// CXcapCapabilityUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapCapabilityUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - aXdmDocument.AppendNamespaceL( KXdmCapabilityNamespace, KNullDesC8 ); - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapDirectoryUsage/inc/XcapDirectoryUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapDirectoryUsage/inc/XcapDirectoryUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDirectoryUsage -* -*/ - - - - -#ifndef __XCAPDIRECTORYUSAGE__ -#define __XCAPDIRECTORYUSAGE__ - -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapDirectoryUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapDirectoryUsage* - */ - static CXcapDirectoryUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapDirectoryUsage(); - - public: - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapDirectoryUsage( const CXdmEngine& aXdmEngine ); - }; - -#endif //__XCAPDIRECTORYUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapDirectoryUsage/src/XcapDirectoryUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapDirectoryUsage/src/XcapDirectoryUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,234 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDirectoryUsage -* -*/ - - - - -#include -#include -#include -#include "XcapDirectoryUsage.h" - - -// Used specification -// OMA-TS-XDM_Core-V1_0-20051103-C, 03 November 2005 - -// ---------------------------------------------------- -// CXcapDirectoryUsage::CXcapDirectoryUsage -// -// ---------------------------------------------------- -// -CXcapDirectoryUsage::CXcapDirectoryUsage( const CXdmEngine& aXdmEngine ) : - CXcapAppUsage( aXdmEngine ) - { - } - -// ---------------------------------------------------- -// CXcapDirectoryUsage::NewL -// -// ---------------------------------------------------- -// -CXcapDirectoryUsage* CXcapDirectoryUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapDirectoryUsage* self = new ( ELeave ) CXcapDirectoryUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapDirectoryUsage::~CXcapDirectoryUsage -// -// ---------------------------------------------------- -// -CXcapDirectoryUsage::~CXcapDirectoryUsage() - { - } - -// ---------------------------------------------------- -// CXcapDirectoryUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapDirectoryUsage::ConstructL() - { - } - -// ---------------------------------------------------- -// CXcapDirectoryUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapDirectoryUsage::AUID() const - { - return TPtrC8( KXdmDirectoryUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapDirectoryUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapDirectoryUsage::ContentType() const - { - return TPtrC8( KXdmDirectoryUsageContType ); - } - -// ---------------------------------------------------- -// CXcapDirectoryUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapDirectoryUsage::DefaultNamespace() const - { - return TPtrC8( KXdmDirectoryNamespace ); - } - -// ---------------------------------------------------- -// CXcapDirectoryUsage::ValidateNodeL -// -// ---------------------------------------------------- -// -TBool CXcapDirectoryUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found( EFalse ); - TPtrC element = aXdmNode.NodeName(); - - // - if ( Match( element, KXdmXcapDirectory ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmFolder ) ) - { - // required attribute auid - if ( !aXdmNode.HasAttribute( KXdmAuid ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - // there should be either or - // element, not both - TBool entry( EFalse ); - TBool errorcode( EFalse ) ; - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - TPtrC childName = aXdmNode.ChileNode(i)->NodeName(); - if ( childName.CompareF( KXdmEntry ) ) - { - entry = ETrue; - } - else if ( childName.CompareF( KXdmErrorCode ) ) - { - errorcode = ETrue; - } - } - if ( entry && errorcode ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmEntry ) ) - { - // required attributes uri and etag - if ( !aXdmNode.HasAttribute( KXdmUri ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - if ( !aXdmNode.HasAttribute( KXdmEtag ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute); - } - found = ETrue; - } - // - else if ( Match( element, KXdmErrorCode ) ) - { - ValidateDataL( EDataTypeString, aXdmNode ); - found = ETrue; - } - return found; - } - -// ---------------------------------------------------- -// CXcapDirectoryUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapDirectoryUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - TDataType dataType ( EDataTypeUndefined ); - TPtrC attribute = aXdmNodeAttr.NodeName(); - // uri - if ( Match( attribute, KXdmUri ) ) - { - dataType = EDataTypeAnyURI; - } - // etag - else if ( Match( attribute, KXdmEtag ) ) - { - dataType = EDataTypeString; - } - // last-modified - else if ( Match( attribute, KXdmLastModified ) ) - { - dataType = EDataTypeDateTime; - } - // size - else if ( Match( attribute, KXdmSize ) ) - { - dataType = EDataTypeNonNegativeInteger; - } - // auid - else if ( Match( attribute, KXdmAuid ) ) - { - dataType = EDataTypeString; - } - // pass to base class for data validation - ValidateDataL( dataType, aXdmNodeAttr ); - } - -// ---------------------------------------------------- -// CXcapDirectoryUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapDirectoryUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - aXdmDocument.AppendNamespaceL( KXdmDirectoryNamespace, KNullDesC8 ); - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapPocGroupUsage/inc/XcapPocGroupUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapPocGroupUsage/inc/XcapPocGroupUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapPocGroupUsage -* -*/ - - - - -#ifndef __XCAPPOCGROUPUSAGE__ -#define __XCAPPOCGROUPUSAGE__ - -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapPocGroupUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapPocGroupUsage* - */ - static CXcapPocGroupUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapPocGroupUsage(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapPocGroupUsage( const CXdmEngine& aXdmEngine ); - - private: // Data - - CXcapAppUsage* iIetfCommonPolicies; - CXcapAppUsage* iOmaCommonPolicies; - CXcapAppUsage* iResourceLists; - }; - -#endif //__XCAPPOCGROUPUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapPocGroupUsage/src/XcapPocGroupUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapPocGroupUsage/src/XcapPocGroupUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,330 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapPocGroupUsage -* -*/ - - - - -#include -#include -#include -#include "XcapPocGroupUsage.h" - - - -// Used specification -// OMA-TS-PoC_XDM-V1_0-20060609-A, 09 June 2006 -// ---------------------------------------------------- -// CXcapPocGroupUsage::CXcapPocGroupUsage -// -// ---------------------------------------------------- -// -CXcapPocGroupUsage::CXcapPocGroupUsage( const CXdmEngine& aXdmEngine ) : -CXcapAppUsage( aXdmEngine ), -iIetfCommonPolicies( NULL ), -iOmaCommonPolicies( NULL ), -iResourceLists( NULL ) - { - } - -// ---------------------------------------------------- -// CXcapPocGroupUsage::NewL -// -// ---------------------------------------------------- -// -CXcapPocGroupUsage* CXcapPocGroupUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapPocGroupUsage* self = new ( ELeave ) CXcapPocGroupUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapPocGroupUsage::~CXcapPocGroupUsage -// -// ---------------------------------------------------- -// -CXcapPocGroupUsage::~CXcapPocGroupUsage() - { - delete iIetfCommonPolicies; - delete iOmaCommonPolicies; - delete iResourceLists; - } - -// ---------------------------------------------------- -// CXcapPocGroupUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapPocGroupUsage::ConstructL() - { - iIetfCommonPolicies = CXcapAppUsage::NewL( iXdmEngine, EXdmIetfCommonPolicy ); - iOmaCommonPolicies = CXcapAppUsage::NewL( iXdmEngine, EXdmOmaCommonPolicy ); - iResourceLists = CXcapAppUsage::NewL( iXdmEngine, EXdmResourceLists ); - } - -// ---------------------------------------------------- -// CXcapPocGroupUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapPocGroupUsage::AUID() const - { - return TPtrC8( KXdmPocGroupUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapPocGroupUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapPocGroupUsage::ContentType() const - { - return TPtrC8( KXdmPocGroupUsageContType ); - } - -// ---------------------------------------------------- -// CXcapPocGroupUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapPocGroupUsage::DefaultNamespace() const - { - return TPtrC8( KXdmPocGroupNamespace ); - } - -// ---------------------------------------------------- -// CXcapPocGroupUsage::ValidateNodeL -// -// ---------------------------------------------------- -// -TBool CXcapPocGroupUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found( EFalse ); - TDataType dataType ( EDataTypeUndefined ); - TPtrC element = aXdmNode.NodeName(); - - // - if ( Match( element, KXdmGroup ) ) - { - // no other elements than - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - if ( !Match( aXdmNode.ChileNode(i)->NodeName(), KXdmListService ) ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - } - found = ETrue; - } - // - else if ( Match( element, KXdmListService ) ) - { - // required attribute uri - if ( !aXdmNode.HasAttribute( KXdmUri ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmDisplayName ) ) - { - CXdmDocumentNode* parent = aXdmNode.Parent(); - if ( parent && !parent->NodeName().CompareF( KXdmEntry ) ) - { - found = iResourceLists->ValidateNodeL( aXdmNode ); - if ( found ) - { - SetPrefixL( aXdmNode, KXdmResourceListsNsPrefix ); - } - } - else - { - dataType = EDataTypeString; - found = ETrue; - } - } - // - else if ( Match( element, KXdmInviteMembers ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmMaxParticipantCount ) ) - { - dataType = EDataTypeNonNegativeInteger; - found = ETrue; - } - // - else if ( Match( element, KXdmIsListMember ) ) - { - // dataType = EDataTypeBoolean; // OMA-TS-PoC_XDM-V1_0-20050317-C, 17 March 2005 - // changed 4-Nov-2005 PoC XDM - dataType = EDataTypeEmpty; - found = ETrue; - } - // - else if ( Match( element, KXdmAllowConfState ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmAllowInvUsersDyn ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmJoinHandling ) ) - { - // OMA-TS-PoC_XDM-V1_0-20050317-C, 17 March 2005 - // the value must be "allow" or "block" - // 0 (block) and 1 (allow) - /* TPtrC8 data = aXdmNode.LeafNodeContent(); - if ( data.CompareF( KXdmAllow ) - && data.CompareF( KXdmBlock ) ) - { - LeaveWithErrorL( KXcapErrorEnumerationRule ); - } - */ - // changed OMA-TS-PoC_XDM-V1_0-20060127-C, 27 January 2006 - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmAllowInitiateConf ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmAllowAnonymity ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmIsKeyParticipant ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - // type = rl:externalType from urn:ietf:params:xml:ns:resource-lists - // pass to the appropriate usage for validation - // but use default namespace - else if ( Match( element, KXdmExternal ) ) - { - found = iResourceLists->ValidateNodeL( aXdmNode ); - } - // - // type = rl:entryType from urn:ietf:params:xml:ns:resource-lists - // pass to the appropriate usage for validation - // but use default namespace - else if ( Match( element, KXdmEntry ) ) - { - found = iResourceLists->ValidateNodeL( aXdmNode ); - } - - // urn:ietf:params:xml:ns:common-policy - if ( !found ) - { - found = iIetfCommonPolicies->ValidateNodeL( aXdmNode ); - if ( found ) - { - SetPrefixL( aXdmNode, KXdmIetfCommonPolicyNsPrefix ); - } - } - // urn:oma:params:xml:ns:common-policy - if ( !found ) - { - found = iOmaCommonPolicies->ValidateNodeL( aXdmNode ); - if ( found ) - { - SetPrefixL( aXdmNode, KXdmOmaCommonPolicyNsPrefix ); - } - } - - // if the node is some of the basic types, - // pass it to the base class for data validation - if ( dataType != EDataTypeUndefined ) - { - ValidateDataL( dataType, aXdmNode ); - } - return found; - } - -// ---------------------------------------------------- -// CXcapPocGroupUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapPocGroupUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - TPtrC attribute = aXdmNodeAttr.NodeName(); - - // uri - if ( Match( attribute, KXdmUri ) ) - { - // pass to base class for data validation - // check if this should be SIP uri - ValidateDataL( EDataTypeAnyURI, aXdmNodeAttr ); - } - else - { - // add parent element namespace checking when available, - // now we don't know the attribute's namespace - iIetfCommonPolicies->ValidateAttributeL( aXdmNodeAttr ); - iOmaCommonPolicies->ValidateAttributeL( aXdmNodeAttr ); - } - } - -// ---------------------------------------------------- -// CXcapPocGroupUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapPocGroupUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - aXdmDocument.AppendNamespaceL( KXdmPocGroupNamespace, KNullDesC8 ); - aXdmDocument.AppendNamespaceL( KXdmResourceListsNamespace, KXdmResourceListsNsPrefix ); - aXdmDocument.AppendNamespaceL( KXdmIetfCommonPolicyNamespace, KXdmIetfCommonPolicyNsPrefix ); - aXdmDocument.AppendNamespaceL( KXdmOmaCommonPolicyNamespace, KXdmOmaCommonPolicyNsPrefix ); - } - - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapPresenceRulesUsage/inc/XcapIetfPresRulesUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapPresenceRulesUsage/inc/XcapIetfPresRulesUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapIetfPresRulesUsage -* -*/ - - - - -#ifndef __XCAPIETFPRESRULESUSAGE__ -#define __XCAPIETFPRESRULESUSAGE__ - -#include "XcapAppUsage.h" - - - -// CLASS DECLARATION -class CXcapIetfPresRulesUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapIetfPresRulesUsage* - */ - static CXcapIetfPresRulesUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapIetfPresRulesUsage(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapIetfPresRulesUsage( const CXdmEngine& aXdmEngine ); - - private: // Data - - CXcapAppUsage* iIetfCommonPolicy; - }; - -#endif //__XCAPIETFPRESRULESUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapPresenceRulesUsage/inc/XcapOmaPresRulesUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapPresenceRulesUsage/inc/XcapOmaPresRulesUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapOmaPresRulesUsage -* -*/ - - - - -#ifndef __XCAPOMAPRESRULESUSAGE__ -#define __XCAPOMAPRESRULESUSAGE__ - -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapOmaPresRulesUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapOmaPresRulesUsage* - */ - static CXcapOmaPresRulesUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapOmaPresRulesUsage(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapOmaPresRulesUsage( const CXdmEngine& aXdmEngine ); - - private: // Data - - CXcapAppUsage* iIetfPresRules; - CXcapAppUsage* iIetfCommonPolicy; - CXcapAppUsage* iOmaCommonPolicy; - }; - -#endif //__XCAPOMAPRESRULESUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapPresenceRulesUsage/src/XcapIetfPresRulesUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapPresenceRulesUsage/src/XcapIetfPresRulesUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,520 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapIetfPresRulesUsage -* -*/ - - - - -#include "XcapIetfPresRulesUsage.h" -#include "XdmDocumentNode.h" -#include "XdmNodeAttribute.h" -#include "XdmErrors.h" - -// Used specification -// draft-ietf-simple-presence-rules-03, 18 July 2005 -// expires 19 January, 2006 -// draft-ietf-simple-presence-rules-05, 06 March 2006 -// expires 07 September, 2006 - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::CXcapIetfPresRulesUsage -// -// ---------------------------------------------------- -// -CXcapIetfPresRulesUsage::CXcapIetfPresRulesUsage( const CXdmEngine& aXdmEngine ) : -CXcapAppUsage( aXdmEngine ), -iIetfCommonPolicy( NULL ) - { - } - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::NewL -// -// ---------------------------------------------------- -// -CXcapIetfPresRulesUsage* CXcapIetfPresRulesUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapIetfPresRulesUsage* self = new ( ELeave ) CXcapIetfPresRulesUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::~CXcapIetfPresRulesUsage -// -// ---------------------------------------------------- -// -CXcapIetfPresRulesUsage::~CXcapIetfPresRulesUsage() - { - delete iIetfCommonPolicy; - } - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapIetfPresRulesUsage::ConstructL() - { - iIetfCommonPolicy = CXcapAppUsage::NewL( iXdmEngine, KXdmIetfCommonPolicyUsageUid ); - } - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapIetfPresRulesUsage::AUID() const - { - return TPtrC8( KXdmIetfPresRulesUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapIetfPresRulesUsage::ContentType() const - { - return TPtrC8( KXdmIetfPresRulesUsageContType ); - } - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapIetfPresRulesUsage::DefaultNamespace() const - { - return TPtrC8( KXdmIetfPresRulesNamespace ); - } - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::ValidateL -// -// ---------------------------------------------------- -// -TBool CXcapIetfPresRulesUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found ( EFalse ); - TDataType dataType ( EDataTypeUndefined ); - TPtrC element = aXdmNode.NodeName(); - - // - if ( Match( element, KXdmServiceUriScheme ) ) - { - dataType = EDataTypeToken; - found = ETrue; - } - // - else if ( Match( element, KXdmClass ) ) - { - dataType = EDataTypeToken; - found = ETrue; - } - // - else if ( Match( element, KXdmOccurenceId ) ) - { - dataType = EDataTypeToken; - found = ETrue; - } - // - else if ( Match( element, KXdmServiceUri ) ) - { - dataType = EDataTypeAnyURI; - found = ETrue; - } - // - else if ( Match( element, KXdmAllServices ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmProvideServices ) ) - { - // type = provideServicePermissions - // here we should have either - // or sequence of other elements - TBool allServices( EFalse ); - TBool sequence( EFalse ); - TBool serviceUri( EFalse ); - TBool serviceUriScheme( EFalse ); - TBool occurenceId( EFalse ); - TBool prclass( EFalse ); - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - TPtrC childName = aXdmNode.ChileNode(i)->NodeName(); - if ( Match( childName, KXdmAllServices ) ) - { - allServices = ETrue; - } - else - { - sequence = ETrue; - // in sequence should be either , - // , or - if ( Match( childName, KXdmServiceUri ) ) - { - serviceUri = ETrue; - } - else if ( Match( childName, KXdmServiceUriScheme ) ) - { - serviceUriScheme = ETrue; - } - else if ( Match( childName, KXdmOccurenceId ) ) - { - occurenceId = ETrue; - } - else if ( Match( childName, KXdmClass ) ) - { - prclass = ETrue; - } - } - } - if ( allServices && sequence ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - if ( sequence ) - { - if ( serviceUri && ( serviceUriScheme || occurenceId || prclass ) ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - if ( serviceUriScheme && ( occurenceId || prclass ) ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - if ( occurenceId && prclass ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - } - found = ETrue; - } - // used in presence-rules-03 - // - else if ( Match( element, KXdmDeviceId ) ) - { - dataType = EDataTypeAnyURI; - found = ETrue; - } - // used in presence-rules-05 - // - else if ( Match( element, KXdmDeviceID ) ) - { - dataType = EDataTypeAnyURI; - found = ETrue; - } - // - else if ( Match( element, KXdmAllDevices ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmProvideDevices ) ) - { - // type = provideDevicePermissions - // here we should have either - // or sequence of other elements - TBool allDevices( EFalse ); - TBool sequence( EFalse ); - TBool deviceId( EFalse ); - TBool occurenceId( EFalse ); - TBool prclass( EFalse ); - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - TPtrC childName = aXdmNode.ChileNode(i)->NodeName(); - if ( Match( childName, KXdmAllDevices ) ) - { - allDevices = ETrue; - } - else - { - sequence = ETrue; - // in sequence should be either pres-rules-03 pres-rules-05 , - // or - if ( Match( childName, KXdmDeviceId ) - || Match( childName, KXdmDeviceID ) ) - { - deviceId = ETrue; - } - else if ( Match( childName, KXdmOccurenceId ) ) - { - occurenceId = ETrue; - } - else if ( Match( childName, KXdmClass ) ) - { - prclass = ETrue; - } - } - } - if ( allDevices && sequence ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - if ( sequence ) - { - if ( deviceId && ( occurenceId || prclass ) ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - if ( occurenceId && prclass ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - } - found = ETrue; - } - // - else if ( Match( element, KXdmAllPersons ) ) - { - found = ETrue; - } - // - else if ( !element.CompareF( KXdmProvidePersons ) ) - { - // type = providePersonPermissions - // here we should have either - // or sequence of other elements - TBool allPersons( EFalse ); - TBool sequence( EFalse ); - TBool occurenceId( EFalse ); - TBool prclass( EFalse ); - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - TPtrC childName = aXdmNode.ChileNode(i)->NodeName(); - if ( Match( childName, KXdmAllPersons ) ) - { - allPersons = ETrue; - } - else - { - sequence = ETrue; - // in sequence should be either - // or - if ( Match( childName, KXdmOccurenceId ) ) - { - occurenceId = ETrue; - } - else if ( Match( childName, KXdmClass ) ) - { - prclass = ETrue; - } - } - } - if ( allPersons && sequence ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - if ( sequence ) - { - if ( occurenceId && prclass ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - } - found = ETrue; - } - // - else if ( Match( element, KXdmProvideActivities ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideClass ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideDeviceId ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideMood ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvidePlaceIs ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvidePlaceType ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvidePrivacy ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideRelationship ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideStatusIcon ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideSphere ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideTimeOffset ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideUserInput ) ) - { - // value is restricted, allowed values - // are "false", "bare", "thresholds" and "full" - TPtrC8 data = aXdmNode.LeafNodeContent(); - if ( data.CompareF( KXdmFalse ) - && data.CompareF( KXdmBare ) - && data.CompareF( KXdmThresholds ) - && data.CompareF( KXdmFull ) ) - { - LeaveWithErrorL( KXcapErrorEnumerationRule ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmProvideNote ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideUnknownAttribute ) ) - { - // required attribute name - if ( !aXdmNode.HasAttribute( KXdmName ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmProvideAllAttributes ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmSubHandling ) ) - { - found = ETrue; - // value is restricted, allowed values - // are "block", "confirm", "polite-block" and "allow" - TPtrC8 data = aXdmNode.LeafNodeContent(); - if ( data.CompareF( KXdmBlock ) - && data.CompareF( KXdmConfirm ) - && data.CompareF( KXdmPoliteBlock ) - && data.CompareF( KXdmAllow ) ) - { - LeaveWithErrorL( KXcapErrorEnumerationRule ); - } - } - // urn:ietf:params:xml:ns:common-policy - if ( !found ) - { - found = iIetfCommonPolicy->ValidateNodeL( aXdmNode ); - if ( found ) - { - SetPrefixL( aXdmNode, KXdmIetfCommonPolicyNsPrefix ); - } - } - - if ( dataType != EDataTypeUndefined ) - { - // pass to the base class for data validation - ValidateDataL( dataType, aXdmNode ); - } - return found; - } - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapIetfPresRulesUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - // name - if ( Match( aXdmNodeAttr.NodeName(), KXdmName ) ) - { - // pass to base class for data validation - ValidateDataL( EDataTypeString, aXdmNodeAttr ); - } - // the rest are from urn:ietf:params:xml:ns:common-policy - else - { - iIetfCommonPolicy->ValidateAttributeL( aXdmNodeAttr ); - } - } - -// ---------------------------------------------------- -// CXcapIetfPresRulesUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapIetfPresRulesUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - aXdmDocument.AppendNamespaceL( KXdmIetfPresRulesNamespace, KNullDesC8 ); - aXdmDocument.AppendNamespaceL( KXdmIetfPresRulesNamespace, KXdmIetfPresRulesNsPrefix ); // ESTI-7AY95P - aXdmDocument.AppendNamespaceL( KXdmIetfCommonPolicyNamespace, KXdmIetfCommonPolicyNsPrefix ); // ESTI-7AY95P - } - - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapPresenceRulesUsage/src/XcapOmaPresRulesUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapPresenceRulesUsage/src/XcapOmaPresRulesUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,267 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapOmaPresRulesUsage -* -*/ - - - - -#include -#include -#include "XcapOmaPresRulesUsage.h" - -// Used specification -// OMA-TS-Presence_SIMPLE_XDM-V1_0-20060110-C, 10 January 2006 -// OMA-TS-Presence_SIMPLE_XDM-V1_0-20060418-C, 18 April 2006 - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::CXcapOmaPresRulesUsage -// -// ---------------------------------------------------- -// -CXcapOmaPresRulesUsage::CXcapOmaPresRulesUsage( const CXdmEngine& aXdmEngine ) : -CXcapAppUsage( aXdmEngine ), -iIetfPresRules( NULL ), -iIetfCommonPolicy( NULL ), -iOmaCommonPolicy( NULL ) - { - } - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::NewL -// -// ---------------------------------------------------- -// -CXcapOmaPresRulesUsage* CXcapOmaPresRulesUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapOmaPresRulesUsage* self = new ( ELeave ) CXcapOmaPresRulesUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::~CXcapOmaPresRulesUsage -// -// ---------------------------------------------------- -// -CXcapOmaPresRulesUsage::~CXcapOmaPresRulesUsage() - { - delete iIetfPresRules; - delete iIetfCommonPolicy; - delete iOmaCommonPolicy; - } - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapOmaPresRulesUsage::ConstructL() - { - iIetfPresRules = CXcapAppUsage::NewL( iXdmEngine, KXdmIetfPresRulesUsageUid ); - iIetfCommonPolicy = CXcapAppUsage::NewL( iXdmEngine, KXdmIetfCommonPolicyUsageUid ); - iOmaCommonPolicy = CXcapAppUsage::NewL( iXdmEngine, KXdmOmaCommonPolicyUsageUid ); - } - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapOmaPresRulesUsage::AUID() const - { - return TPtrC8( KXdmOmaPresRulesUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapOmaPresRulesUsage::ContentType() const - { - return TPtrC8( KXdmOmaPresRulesUsageContType ); - } - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapOmaPresRulesUsage::DefaultNamespace() const - { - //return TPtrC8( KXdmOmaPresRulesNamespace ); - // NOTE the default namespace is IetfCommonPolicy - return TPtrC8( KXdmIetfCommonPolicyNamespace ); - } - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::ValidateL -// -// ---------------------------------------------------- -// -TBool CXcapOmaPresRulesUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found ( EFalse ); - TDataType dataType ( EDataTypeUndefined ); - TPtrC element = aXdmNode.NodeName(); - - // - if ( Match( element, KXdmProvideWillingness ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideNetworkAvailability ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideSessionParticipation ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideRegistrationState ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideBarringState ) ) - { - dataType = EDataTypeBoolean; - found = ETrue; - } - // - else if ( Match( element, KXdmProvideGeopriv ) ) - { - // value must be "false" or "full" - // 0 (false), 1 (full) - TPtrC8 data = aXdmNode.LeafNodeContent(); - if ( data.CompareF( KXdmFalse ) - && data.CompareF( KXdmFull ) ) - { - LeaveWithErrorL( KXcapErrorEnumerationRule ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmServiceId ) ) - { - dataType = EDataTypeString; - found = ETrue; - } - - // NOTE the default namespace is IetfCommonPolicy - if ( found ) - { - SetPrefixL( aXdmNode, KXdmOmaPresRulesNsPrefix ); - } - - // urn:ietf:params:xml:ns:pres-rules - // urn:ietf:params:xml:ns:common-policy - // urn:oma:xml:xdm:common-policy - else - { - // urn:ietf:params:xml:ns:common-policy - found = iIetfCommonPolicy->ValidateNodeL( aXdmNode ); - if ( found ) - { - // this means that this belongs to urn:ietf:params:xml:ns:common-policy, - // there may be the prefix already - // NOTE the default namespace is IetfCommonPolicy - SetPrefixL( aXdmNode, KNullDesC8 ); - } - else - { - // urn:ietf:params:xml:ns:pres-rules - found = iIetfPresRules->ValidateNodeL( aXdmNode ); - if ( found ) - { - SetPrefixL( aXdmNode, KXdmIetfPresRulesNsPrefix ); - } - else - { - // urn:oma:xml:xdm:common-policy - found = iOmaCommonPolicy->ValidateNodeL( aXdmNode ); - if ( found ) - { - SetPrefixL( aXdmNode, KXdmOmaCommonPolicyNsPrefix ); - } - } - } - } - - if ( dataType != EDataTypeUndefined ) - { - // pass to the base class for data validation - ValidateDataL( dataType, aXdmNode ); - } - return found; - } - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapOmaPresRulesUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - // there aren't any attributes in - // oma presence rules usage schema - // urn:ietf:params:xml:ns:pres-rules - // urn:ietf:params:xml:ns:common-policy - iIetfPresRules->ValidateAttributeL( aXdmNodeAttr ); - } - -// ---------------------------------------------------- -// CXcapOmaPresRulesUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapOmaPresRulesUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - // NOTE the default namespace is IetfCommonPolicy - aXdmDocument.AppendNamespaceL( KXdmIetfCommonPolicyNamespace, KNullDesC8 ); - aXdmDocument.AppendNamespaceL( KXdmOmaCommonPolicyNamespace, KXdmOmaCommonPolicyNsPrefix ); - aXdmDocument.AppendNamespaceL( KXdmOmaPresRulesNamespace, KXdmOmaPresRulesNsPrefix ); - aXdmDocument.AppendNamespaceL( KXdmIetfPresRulesNamespace, KXdmIetfPresRulesNsPrefix ); -/* aXdmDocument.AppendNamespaceL( KXdmOmaPresRulesNamespace, KNullDesC8 ); - aXdmDocument.AppendNamespaceL( KXdmIetfPresRulesNamespace, KXdmIetfPresRulesNsPrefix ); - aXdmDocument.AppendNamespaceL( KXdmIetfCommonPolicyNamespace, KXdmIetfCommonPolicyNsPrefix );*/ - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapResourceListsUsage/inc/XcapResourceListsUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapResourceListsUsage/inc/XcapResourceListsUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapResourceListsUsage -* -*/ - - - - -#ifndef __XCAPRESOURCELISTSUSAGE__ -#define __XCAPRESOURCELISTSUSAGE__ - -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapResourceListsUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapResourceListsUsage* - */ - static CXcapResourceListsUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapResourceListsUsage(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapResourceListsUsage( const CXdmEngine& aXdmEngine ); - }; - -#endif //__XCAPRESOURCELISTSUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapResourceListsUsage/src/XcapResourceListsUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapResourceListsUsage/src/XcapResourceListsUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,229 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapResourceListsUsage -* -*/ - - - - -#include -#include -#include -#include "XcapResourceListsUsage.h" - -// Used specification -// draft-ietf-simple-xcap-list-usage-05, 7 February 2005 -// expires 8 August 2005 - -// ---------------------------------------------------- -// CXcapResourceListsUsage::CXcapResourceListsUsage -// -// ---------------------------------------------------- -// -CXcapResourceListsUsage::CXcapResourceListsUsage( const CXdmEngine& aXdmEngine ) : - CXcapAppUsage( aXdmEngine ) - { - } - -// ---------------------------------------------------- -// CXcapResourceListsUsage::NewL -// -// ---------------------------------------------------- -// -CXcapResourceListsUsage* CXcapResourceListsUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapResourceListsUsage* self = new ( ELeave ) CXcapResourceListsUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapResourceListsUsage::~CXcapResourceListsUsage -// -// ---------------------------------------------------- -// -CXcapResourceListsUsage::~CXcapResourceListsUsage() - { - } - -// ---------------------------------------------------- -// CXcapResourceListsUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapResourceListsUsage::ConstructL() - { - } - -// ---------------------------------------------------- -// CXcapResourceListsUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapResourceListsUsage::AUID() const - { - return TPtrC8( KXdmResourceListsUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapResourceListsUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapResourceListsUsage::ContentType() const - { - return TPtrC8( KXdmResourceListsUsageContType ); - } - -// ---------------------------------------------------- -// CXcapResourceListsUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapResourceListsUsage::DefaultNamespace() const - { - return TPtrC8( KXdmResourceListsNamespace ); - } - -// ---------------------------------------------------- -// CXcapResourceListsUsage::ValidateL -// -// ---------------------------------------------------- -// -TBool CXcapResourceListsUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found ( EFalse ); - TDataType dataType ( EDataTypeUndefined ); - TPtrC element = aXdmNode.NodeName(); - - // - if ( Match( element, KXdmResourceLists) ) - { - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - // there should not be any other elements than - if ( !Match( aXdmNode.ChileNode(i)->NodeName(), KXdmList ) ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - } - found = ETrue; - } - // - else if ( Match( element, KXdmList ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmEntry ) ) - { - // required attribute uri - if ( !aXdmNode.HasAttribute( KXdmUri ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmEntryRef ) ) - { - if ( !aXdmNode.HasAttribute( KXdmRef ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmDisplayName ) ) - { - dataType = EDataTypeString; - found = ETrue; - } - - if ( dataType != EDataTypeUndefined ) - { - // pass to the base class for data validation - ValidateDataL( dataType, aXdmNode ); - } - return found; - } - -// ---------------------------------------------------- -// CXcapResourceListsUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapResourceListsUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - TDataType dataType ( EDataTypeUndefined ); - TPtrC attribute = aXdmNodeAttr.NodeName(); - - // name - if ( Match( attribute, KXdmName ) ) - { - dataType = EDataTypeString; - } - // uri - else if ( Match( attribute, KXdmUri ) ) - { - dataType = EDataTypeString; - } - // ref - else if ( Match( attribute, KXdmRef ) ) - { - dataType = EDataTypeAnyURI; - } - // anchor - else if ( Match( attribute, KXdmAnchor ) ) - { - dataType = EDataTypeAnyURI; - } - - if ( dataType != EDataTypeUndefined ) - { - // pass to base class for data validation - ValidateDataL( dataType, aXdmNodeAttr ); - } - } - -// ---------------------------------------------------- -// CXcapResourceListsUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapResourceListsUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - aXdmDocument.AppendNamespaceL( KXdmResourceListsNamespace, KNullDesC8 ); - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapRlsServicesUsage/inc/XcapRlsServicesUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapRlsServicesUsage/inc/XcapRlsServicesUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapRlsServicesUsage -* -*/ - - - - -#ifndef __XCAPRLSSERVICESUSAGE__ -#define __XCAPRLSSERVICESUSAGE__ - -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapRlsServicesUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapRlsServicesUsage* - */ - static CXcapRlsServicesUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapRlsServicesUsage(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapRlsServicesUsage( const CXdmEngine& aXdmEngine ); - - private: // Data - - CXcapAppUsage* iResourceLists; - }; - -#endif //__XCAPRLSSERVICESUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapRlsServicesUsage/src/XcapRlsServicesUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapRlsServicesUsage/src/XcapRlsServicesUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,271 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapRlsServicesUsage -* -*/ - - - - -#include -#include -#include -#include "XcapRlsServicesUsage.h" - -// Used specification -// OMA-RLS_XDM_Specification-V1_0-20060214-C, 14 February 2006 - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::CXcapRlsServicesUsage -// -// ---------------------------------------------------- -// -CXcapRlsServicesUsage::CXcapRlsServicesUsage( const CXdmEngine& aXdmEngine ) : -CXcapAppUsage( aXdmEngine ), -iResourceLists( NULL ) - { - } - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::NewL -// -// ---------------------------------------------------- -// -CXcapRlsServicesUsage* CXcapRlsServicesUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapRlsServicesUsage* self = new ( ELeave ) CXcapRlsServicesUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::~CXcapRlsServicesUsage -// -// ---------------------------------------------------- -// -CXcapRlsServicesUsage::~CXcapRlsServicesUsage() - { - delete iResourceLists; - } - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapRlsServicesUsage::ConstructL() - { - iResourceLists = CXcapAppUsage::NewL( iXdmEngine, KXdmResourceListsUsageUid ); - } - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapRlsServicesUsage::AUID() const - { - return TPtrC8( KXdmRlsServicesUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapRlsServicesUsage::ContentType() const - { - return TPtrC8( KXdmRlsServicesUsageContType ); - } - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapRlsServicesUsage::DefaultNamespace() const - { - return TPtrC8( KXdmRlsServicesNamespace ); - } - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::ValidateNodeL -// -// ---------------------------------------------------- -// -TBool CXcapRlsServicesUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - - TBool found( EFalse ); - TDataType dataType ( EDataTypeUndefined ); - TPtrC element = aXdmNode.NodeName(); - // - if ( Match( element, KXdmRlsServices ) ) - { - found = ETrue; - } - // - else if ( Match( element, KXdmService ) ) - { - // required attribute uri - if ( !aXdmNode.HasAttribute( KXdmUri ) ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - } - - // there should be either or - // element and mandatory element - TBool resourcelist( EFalse ); - TBool list( EFalse ); - TBool packages( EFalse ); - // go through all childs - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - TPtrC childName = aXdmNode.ChileNode(i)->NodeName(); - if ( Match( childName, KXdmResourceList ) ) - { - resourcelist = ETrue; - } - else if ( Match( childName, KXdmList ) ) - { - list = ETrue; - } - else if ( Match( childName, KXdmPackages ) ) - { - packages = ETrue; - } - } - // or , not both - if ( resourcelist && list ) - { - LeaveWithErrorL( KXcapErrorSchemaViolation ); - } - // each must have at least one element - if ( !packages ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredElement ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmResourceList ) ) - { - dataType = EDataTypeAnyURI; - found = ETrue; - } - // - else if ( Match( element, KXdmPackages ) ) - { - // each shall specify at least presence event package, - // go through all childs - TBool presence ( EFalse ); - TInt count( aXdmNode.NodeCount() ); - for ( TInt i(0); i < count; i++ ) - { - if ( Match( aXdmNode.ChileNode(i)->NodeName(), KXdmPackage ) ) - { - TPtrC8 data = aXdmNode.ChileNode(i)->LeafNodeContent(); - if ( !data.CompareF( KXdmPresence ) ) - { - presence = ETrue; - } - } - } - // check that the presence exists - if ( !presence ) - { - LeaveWithErrorL( KXcapErrorMissingRequiredElementValue ); - } - found = ETrue; - } - // - else if ( Match( element, KXdmPackage ) ) - { - dataType = EDataTypeString; - found = ETrue; - } - // type=rl:listType from urn:ietf:params:xml:ns:resource-lists - // however belongs to the default namespace - // ( btw, there is mistake in specification example ) - else if ( Match( element, KXdmList ) ) - { - found = iResourceLists->ValidateNodeL( aXdmNode ); - } - // , from urn:ietf:params:xml:ns:resource-lists - if ( !found ) - { - found = iResourceLists->ValidateNodeL( aXdmNode ); - if ( found ) - { - SetPrefixL( aXdmNode, KXdmResourceListsNsPrefix ); - } - } - if ( dataType != EDataTypeUndefined ) - { - // pass to the base class for data validation - ValidateDataL( dataType, aXdmNode ); - } - return found; - } - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapRlsServicesUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - // uri - if ( Match( aXdmNodeAttr.NodeName(), KXdmUri ) ) - { - ValidateDataL( EDataTypeAnyURI, aXdmNodeAttr ); - } - // the rest are rom urn:ietf:params:xml:ns:resource-lists - else - { - iResourceLists->ValidateAttributeL( aXdmNodeAttr ); - } - } - -// ---------------------------------------------------- -// CXcapRlsServicesUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapRlsServicesUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - aXdmDocument.AppendNamespaceL( KXdmRlsServicesNamespace, KNullDesC8 ); - aXdmDocument.AppendNamespaceL( KXdmResourceListsNamespace, KXdmResourceListsNsPrefix ); - } - - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapSharedXDMUsage/inc/XcapSharedXDMUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapSharedXDMUsage/inc/XcapSharedXDMUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapSharedXDMUsage -* -*/ - - - - -#ifndef __XCAPSHAREDXDMUSAGE__ -#define __XCAPSHAREDXDMUSAGE__ - -#include "XcapAppUsage.h" - - -// CLASS DECLARATION -class CXcapSharedXDMUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapSharedXDMUsage* - */ - static CXcapSharedXDMUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapSharedXDMUsage(); - - public: // From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapSharedXDMUsage( const CXdmEngine& aXdmEngine ); - - private: // Data - - CXcapAppUsage* iResListUsage; - - }; - -#endif //__XCAPSHAREDXDMUSAGE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapSharedXDMUsage/src/XcapSharedXDMUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapSharedXDMUsage/src/XcapSharedXDMUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,180 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapSharedXDMUsage -* -*/ - - - - -#include -#include -#include "XcapSharedXDMUsage.h" - -// Used spesifications -// OMA-TS-XDM_Core-V1_0-20051103-C, 03 November 2005 -// OMA-TS-XDM_Shared-V1_0-20051006-C, 12 June 2006 - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::CXcapSharedXDMUsage -// -// ---------------------------------------------------- -// -CXcapSharedXDMUsage::CXcapSharedXDMUsage( -const CXdmEngine& aXdmEngine ) : CXcapAppUsage( aXdmEngine ), -iResListUsage( NULL ) - { - } - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::NewL -// -// ---------------------------------------------------- -// -CXcapSharedXDMUsage* CXcapSharedXDMUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapSharedXDMUsage* self = new ( ELeave ) CXcapSharedXDMUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::~CXcapSharedXDMUsage -// -// ---------------------------------------------------- -// -CXcapSharedXDMUsage::~CXcapSharedXDMUsage() - { - delete iResListUsage; - } - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapSharedXDMUsage::ConstructL() - { - iResListUsage = CXcapAppUsage::NewL( iXdmEngine, KXdmResourceListsUsageUid ); - } - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapSharedXDMUsage::AUID() const - { - return TPtrC8( KXdmSharedXDMUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapSharedXDMUsage::ContentType() const - { - return TPtrC8( KXdmSharedXDMUsageContType ); - } - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapSharedXDMUsage::DefaultNamespace() const - { - // we use urn:ietf:params:xml:ns:resource-lists - // as a default namespace - return TPtrC8( KXdmResourceListsNamespace ); - } - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::ValidateNodeL -// -// ---------------------------------------------------- -// -TBool CXcapSharedXDMUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - TBool found ( EFalse ); - TPtrC element = aXdmNode.NodeName(); - - // - if ( Match( element, KXdmUriUsages ) ) - { - SetPrefixL( aXdmNode, KXdmSharedXDMUriUsageNsPrefix ); - found = ETrue; - } - // - else if ( Match( element, KXdmUriUsage ) ) - { - SetPrefixL( aXdmNode, KXdmSharedXDMUriUsageNsPrefix ); - found = ETrue; - } - // the rest are from urn:ietf:params:xml:ns:resource-lists - else - { - // do not append the namespace prefix here, - // since the used default namespace is - // urn:ietf:params:xml:ns:resource-lists - found = iResListUsage->ValidateNodeL( aXdmNode ); - } - return found; - } - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapSharedXDMUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - // this usage doesn't have any attributes, - // all attributes are from urn:ietf:params:xml:ns:resource-lists - iResListUsage->ValidateAttributeL( aXdmNodeAttr ); - - } - -// ---------------------------------------------------- -// CXcapSharedXDMUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapSharedXDMUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - // we use urn:ietf:params:xml:ns:resource-lists - // as a default namespace - aXdmDocument.AppendNamespaceL( KXdmResourceListsNamespace, KNullDesC8 ); - aXdmDocument.AppendNamespaceL( KXdmSharedXDMUriUsageNamespace, KXdmSharedXDMUriUsageNsPrefix ); - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapTestAppUsage/inc/XcapTestAppUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapTestAppUsage/inc/XcapTestAppUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapTestAppUsage -* -*/ - - - - -#ifndef __XCAPTESTAPPUSAGE__ -#define __XCAPTESTAPPUSAGE__ - -#include "XcapAppUsage.h" - -// CONSTANTS -// Define here literals for element names if they -// aren't already defined in AppUsageDef.h -// _LIT( KExample, "example" ); -// _LIT( KExampleElement, "example-element" ); -// _LIT( KExampleElement2, "example-element2" ); -// _LIT( KExampleElement3, "example-element3" ); -// _LIT( KExampleAttr1, "exampleAttr1" ); -// _LIT( KExampleAttr2, "exampleAttr2" ); - -// CLASS DECLARATION -class CXcapTestAppUsage : public CXcapAppUsage - { - public: - - /** - * Symbian OS constructor - * @param TXcapAppUsageParams Parameters - * @return CXcapTestAppUsage* - */ - static CXcapTestAppUsage* NewL( const TXcapAppUsageParams& aParameters ); - - /** - * Destructor - */ - virtual ~CXcapTestAppUsage(); - - public: //From CXcapAppUsage - - /** - * AUID for this usage - * @return AUID - */ - TPtrC8 AUID() const; - - /** - * MIME type for this usage - * @return MIME type - */ - TPtrC8 ContentType() const; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - TPtrC8 DefaultNamespace() const; - - /** - * Validate the node in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmDocumentNode& reference to the node - * @return ETrue, if the node belongs to the appusage's namespace - */ - TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ); - - /** - * Validate the attribute in the parameter - * Leaves with system wide error codes or - * with error defined in XdmErrors.h - * @param CXdmNodeAttribute& reference to the attribute - */ - void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * Add namespaces and namespace prefixes used in document - * @param CXdmDocument& reference to the document - */ - void AddNamespaceInformationL( CXdmDocument& aXdmDocument ); - - private: - - /** - * Second phase construction - */ - void ConstructL(); - - /** - * Prohibit copy costructor - */ - CXcapTestAppUsage( const CXdmEngine& aXdmEngine ); - - private: // Data - - }; - -#endif //__XCAPTESTAPPUSAGE__ - - // End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/XcapTestAppUsage/src/XcapTestAppUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/XcapTestAppUsage/src/XcapTestAppUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapTestAppUsage -* -*/ - - - - -#include "XcapTestAppUsage.h" - -// ---------------------------------------------------- -// CXcapTestAppUsage::CXcapTestAppUsage -// -// ---------------------------------------------------- -// -CXcapTestAppUsage::CXcapTestAppUsage( const CXdmEngine& aXdmEngine ) : - CXcapAppUsage( aXdmEngine ) - { - } - -// ---------------------------------------------------- -// CXcapTestAppUsage::NewL -// -// ---------------------------------------------------- -// -CXcapTestAppUsage* CXcapTestAppUsage::NewL( const TXcapAppUsageParams& aParameters ) - { - CXcapTestAppUsage* self = new ( ELeave ) CXcapTestAppUsage( aParameters.iXdmEngine ); - CleanupStack::PushL( self ); // << self - self->ConstructL(); - CleanupStack::Pop( self ); // >> self - return self; - } - -// ---------------------------------------------------- -// CXcapTestAppUsage::~CXcapTestAppUsage -// -// ---------------------------------------------------- -// -CXcapTestAppUsage::~CXcapTestAppUsage() - { - } - -// ---------------------------------------------------- -// CXcapTestAppUsage::ConstructL -// -// ---------------------------------------------------- -// -void CXcapTestAppUsage::ConstructL() - { - } - -// ---------------------------------------------------- -// CXcapTestAppUsage::AUID -// -// ---------------------------------------------------- -// -TPtrC8 CXcapTestAppUsage::AUID() const - { - return TPtrC8( KXdmTestAppUsageAUID ); - } - -// ---------------------------------------------------- -// CXcapTestAppUsage::ContentType -// -// ---------------------------------------------------- -// -TPtrC8 CXcapTestAppUsage::ContentType() const - { - return TPtrC8( KXdmTestAppUsageContType ); - } - -// ---------------------------------------------------- -// CXcapTestAppUsage::DefaultNamespace -// -// ---------------------------------------------------- -// -TPtrC8 CXcapTestAppUsage::DefaultNamespace() const - { - return TPtrC8( KXdmTestAppUsageDefaultNamespace ); - } - -// ---------------------------------------------------- -// CXcapTestAppUsage::ValidateNodeL -// -// ---------------------------------------------------- -// -TBool CXcapTestAppUsage::ValidateNodeL( CXdmDocumentNode& /*aXdmNode*/ ) - { - // This method is called by base class for each element - // in document, here we have to declare every element, check element - // datatype, restrictions for values and also do all checking that concerns - // the structure of the element. If the datatype is some of - // the common datatypes defined in xcapappusage.h, the node - // can pe passed to the base class for value validation. - // If the node belongs to this namespace, the return value - // should be true, false otherwise. - - - // TBool found ( EFalse ); - // TDataType dataType ( EDataTypeUndefined ); - // TPtrC element = aXdmNode.NodeName(); - - // - // if ( Match( element, KExampleElement ) ) - // { - // supported data types are defined in AppUsageDef - // dataType = EDataTypeBoolean; - // found = ETrue; - // } - // - // else if ( Match( element, KExampleElement2 ) ) - // { - // required attribute attribute - // if ( !aXdmNode.HasAttribute( KAttribute ) ) - // { - // LeaveWithErrorL( KXcapErrorMissingRequiredAttribute ); - // } - // found = ETrue; - // } - // - // else if ( Match( element, KExampleElement3 ) ) - // { - // TInt count( aXdmNode.NodeCount() ); - // for ( TInt i(0); i < count; i++ ) - // { - // there should not be any other elements than - // if ( !Match( aXdmNode.ChileNode(i)->NodeName(), KExample ) ) - // { - // LeaveWithErrorL( KXcapErrorSchemaViolation ); - // } - // } - // found = ETrue; - // } - - // if ( dataType != EDataTypeUndefined ) - // { - // pass to the base class for data validation - // ValidateDataL( dataType, aXdmNode ); - // } - // return found; - - return EFalse; - } - -// ---------------------------------------------------- -// CXcapTestAppUsage::ValidateAttributeL -// -// ---------------------------------------------------- -// -void CXcapTestAppUsage::ValidateAttributeL( const CXdmNodeAttribute& /*aXdmNodeAttr*/ ) - { - // This method is called by base class for each attribute - // in document, here we have to define data types - // for attributes, and pass them to the base class - // for the actual data checking. - - // TDataType dataType ( EDataTypeUndefined ); - // TPtrC attribute = aXdmNodeAttr.NodeName(); - - // exampleAttr1 - // if ( Match( attribute, KExampleAttr1 ) ) - // { - // dataType = EDataTypeString; - // } - // exampleAttr2 - // else if ( Match( attribute, KExampleAttr2 ) ) - // { - // dataType = EDataTypeString; - // } - - // if ( dataType != EDataTypeUndefined ) - // { - // pass to base class for data validation - // ValidateDataL( dataType, aXdmNodeAttr ); - // } - } - -// ---------------------------------------------------- -// CXcapTestAppUsage::AddNamespaceInformationL -// -// ---------------------------------------------------- -// -void CXcapTestAppUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument ) - { - // default namespace prefix should be empty - aXdmDocument.AppendNamespaceL( KXdmTestAppUsageDefaultNamespace, KNullDesC8 ); - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/eabi/XcapAppUsageU.DEF --- a/xdmprotocols/XcapProtocol/XcapAppUsage/eabi/XcapAppUsageU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -EXPORTS - _Z24ImplementationGroupProxyRi @ 1 NONAME - _ZN13CXcapAppUsage4NewLERK10CXdmEnginei @ 2 NONAME - _ZN13CXcapAppUsage8ValidateER12CXdmDocumenti @ 3 NONAME - _ZN13CXcapAppUsage8ValidateER16CXdmDocumentNodeP17MXcapUriInterfacei @ 4 NONAME - _ZTI13CXcapAppUsage @ 5 NONAME - _ZTI18CXcapPocGroupUsage @ 6 NONAME - _ZTI19CXcapDirectoryUsage @ 7 NONAME - _ZTI19CXcapSharedXDMUsage @ 8 NONAME - _ZTI20CXcapCapabilityUsage @ 9 NONAME - _ZTI21CXcapRlsServicesUsage @ 10 NONAME - _ZTI22CXcapOmaPresRulesUsage @ 11 NONAME - _ZTI23CXcapIetfPresRulesUsage @ 12 NONAME - _ZTI23CXcapPocUserAccessUsage @ 13 NONAME - _ZTI23CXcapResourceListsUsage @ 14 NONAME - _ZTI25CXcapOmaCommonPolicyUsage @ 15 NONAME - _ZTI26CXcapIetfCommonPolicyUsage @ 16 NONAME - _ZTI7CXcapC4 @ 17 NONAME - _ZTV13CXcapAppUsage @ 18 NONAME - _ZTV18CXcapPocGroupUsage @ 19 NONAME - _ZTV19CXcapDirectoryUsage @ 20 NONAME - _ZTV19CXcapSharedXDMUsage @ 21 NONAME - _ZTV20CXcapCapabilityUsage @ 22 NONAME - _ZTV21CXcapRlsServicesUsage @ 23 NONAME - _ZTV22CXcapOmaPresRulesUsage @ 24 NONAME - _ZTV23CXcapIetfPresRulesUsage @ 25 NONAME - _ZTV23CXcapPocUserAccessUsage @ 26 NONAME - _ZTV23CXcapResourceListsUsage @ 27 NONAME - _ZTV25CXcapOmaCommonPolicyUsage @ 28 NONAME - _ZTV26CXcapIetfCommonPolicyUsage @ 29 NONAME - _ZTV7CXcapC4 @ 30 NONAME - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/group/XcapAppUsage.mmp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/group/XcapAppUsage.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapAppUsage.mmp -* -*/ - - - -#include - -TARGET xcapappusage.dll -TARGETTYPE PLUGIN -UID 0x10009D8D 0x10207416 -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -SOURCEPATH ../src -SOURCE XcapAppUsage.cpp - -START RESOURCE 10207416.rss - TARGET xcapappusage.rsc -END - -//Capability application usage -SOURCEPATH ../XcapCapabilityUsage/src -SOURCE XcapCapabilityUsage.cpp - -//Directory application usage -SOURCEPATH ../XcapDirectoryUsage/src -SOURCE XcapDirectoryUsage.cpp - -//PocGroup application usage -SOURCEPATH ../XcapPocGroupUsage/src -SOURCE XcapPocGroupUsage.cpp - -//PocUserAccessPolicy application usage -SOURCEPATH ../XCapPocUserAccessUsage/src -SOURCE XcapPocUserAccessUsage.cpp - -// SharedXDM application usage -SOURCEPATH ../XcapSharedXDMUsage/src -SOURCE XcapSharedXDMUsage.cpp - -//RlsServices application usage -SOURCEPATH ../XcapRlsServicesUsage/src -SOURCE XcapRlsServicesUsage.cpp - -//ResourceLists application usage -SOURCEPATH ../XcapResourceListsUsage/src -SOURCE XcapResourceListsUsage.cpp - -//CommonPolicyCaps application usage -SOURCEPATH ../XCapCommonPolicyCapsUsage/src -SOURCE XcapOmaCPUsage.cpp -SOURCE XcapIetfCPUsage.cpp - -// PresenceRules application usage -SOURCEPATH ../XcapPresenceRulesUsage/src -SOURCE XcapIetfPresRulesUsage.cpp -SOURCE XcapOmaPresRulesUsage.cpp - -// Example application usage -// SOURCEPATH ../XcapTestAppUsage/src -// SOURCE XcapTestAppUsage.cpp - -// PRES-CONTENT STARTS -SOURCEPATH ../XcapC4/src -SOURCE XcapC4.cpp -// PRES-CONTENT ENDS -USERINCLUDE ../inc -USERINCLUDE ../../inc -USERINCLUDE ../XcapCapabilityUsage/inc -USERINCLUDE ../XcapDirectoryUsage/inc -USERINCLUDE ../XcapPocGroupUsage/inc -USERINCLUDE ../XCapPocUserAccessUsage/inc -USERINCLUDE ../XcapSharedXDMUsage/inc -USERINCLUDE ../XcapRlsServicesUsage/inc -USERINCLUDE ../XcapResourceListsUsage/inc -USERINCLUDE ../XCapCommonPolicyCapsUsage/inc -USERINCLUDE ../XcapPresenceRulesUsage/inc -// USERINCLUDE ../XcapTestAppUsage/inc - -USERINCLUDE ../../../../inc -// PRES-CONTENT STARTS -USERINCLUDE ../XcapC4/inc -// PRES-CONTENT ENDS -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../../inc - -LIBRARY ecom.lib -LIBRARY euser.lib -LIBRARY XdmEngine.lib -LIBRARY centralrepository.lib - -DEBUGLIBRARY efsrv.lib -DEBUGLIBRARY flogger.lib - - - -#if defined( ARMCC ) - DEFFILE ../eabi/ -#elif defined ( WINSCW ) - deffile ../BWINSCW/ -#elif defined (WINS ) - deffile ../BWINS/ -#endif - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/group/bld.inf --- a/xdmprotocols/XcapProtocol/XcapAppUsage/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapAppUsage bld.inf -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_EXPORTS -//-------------------- - - -//-------------------- -PRJ_MMPFILES -//-------------------- - -XcapAppUsage.mmp diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/inc/XcapAppUsage.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/inc/XcapAppUsage.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,498 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapAppUsage -* -*/ - - - - -#ifndef __XCAPAPPUSAGE__ -#define __XCAPAPPUSAGE__ - -// INCLUDES -#include - -#include -#include -#include "XcapAppUsageDef.h" - -// CONSTANTS -#ifdef _DEBUG -_LIT( KXdmAppUsageLogDir, "Xdm" ); -_LIT( KXdmAppUsageLogFile, "XcapAppUsage.txt" ); -const TInt KAppUsageLogBufferMaxSize = 2000; -#endif - -_LIT( KXdmDefaultNsAttrName, "xmlns"); -_LIT( KXdmNonDefaultNsAttrName, "xmlns:"); -const TInt KXdmMaxPrefixLength = 10; - -// FORWARD DECLARATIONS -class CXdmDocument; -class MXcapUriInterface; - -// NOTE -// If _NAMESPACES_TO_NODE_SELECTOR flag is defined, used namespaces will be added to the node selector -// when updating partial documents. -// The default namespace of the usage will not be added. -#define _NAMESPACES_TO_NODE_SELECTOR - -// If _ADD_NAMESPACE_ATTRIBUTES flag is defined, namespace information is -// added as an node atttribute when updating partial documents. -// The default namespace of the usage will not be added. -#define _ADD_NAMESPACE_ATTRIBUTES - -/** -* A helper class for parameter passing from -* the XCAP protocol to the application usage -* -* NOTE: There will most probably be more than one parameter! -* -*/ -class TXcapAppUsageParams - { - public: - - /** - * @param CXdmEngine& XDM Engine - * @return TXcapAppUsageParams - */ - TXcapAppUsageParams( const CXdmEngine& aXdmEngine ) : - iXdmEngine( aXdmEngine ){} - - public: - - const CXdmEngine& iXdmEngine; - }; - -// CLASS DECLARATION -/** -* Application usage base class -*/ -class CXcapAppUsage : public CBase - { - public: - - /** - * Symbian OS constructor - * @param aXdmEngine XdmEngine reference - * @param aDocumentType Type of the document - * @return CXcapAppUsage* - * REMOVE THIS WHEN USAGE IN ENGINE CHANGED!!! - */ - static CXcapAppUsage* NewL( const CXdmEngine& aXdmEngine, - const TXdmDocType aDocumentType ); - - /** - * Symbian OS constructor - * @param aXdmEngine XdmEngine reference - * @param aDocumentType Type of the document - * @return CXcapAppUsage* - */ - IMPORT_C CXcapAppUsage* NewL( const CXdmEngine& aXdmEngine, - const TInt aDocumentType ); - - /** - * Destructor - */ - virtual ~CXcapAppUsage(); - - /** - * Validate the document in the parameter. - * Calls ValidateNodeL( aXdmNode ) method from derived class - * for each node in document and ValidateAttributeL( aXdmNodeAttr ) - * for each attribute in document. If the document is outgoing, - * calls also AddNamespaceInformationL method from derived class. - * @param aXdmDocument document reference - * @param aAddNamespaces if true, the namespaces will be added - * @return KErrNone or error code. - */ - IMPORT_C TInt Validate( CXdmDocument& aXdmDocument, TBool aAddNamespaces ) ; - - /** - * Validate the node in the parameter. - * Calls ValidateNodeL( aXdmNode ) method from derived class for - * current node and it's descendants and ValidateAttributeL( aXdmNodeAttr ) - * for each attribute. Stores the uri of the node. - * @param aXdmNode node reference - * @param TBool aIsGetOrDelete indication of http get or delete - * @return KErrNone or error code. - */ - IMPORT_C TInt Validate( CXdmDocumentNode& aXdmNode, - MXcapUriInterface* aUriInterface, - TBool aIsGetOrDelete ) ; - - - - public: // Application Usage API - - /** - * AUID for this usage - * @return AUID - */ - virtual TPtrC8 AUID() const = 0; - - /** - * MIME type for this usage - * @return MIME type - */ - virtual TPtrC8 ContentType() const = 0; - - /** - * Default namespace for this usage - * @return Default namespace definition - */ - virtual TPtrC8 DefaultNamespace() const = 0; - - /** - * Validate the node in the parameter - * This method is called by base class for each node - * in document, here we have to check element datatype, - * restrictions for values and also do all checking that concerns - * the structure of the element. If the datatype is some of - * the common datatypes defined in xcapappusage.h, the node - * can pe passed to the base class for value validation. - * @param CXdmDocumentNode& node reference - * @return True, if the node belongs to the current namespace - */ - virtual TBool ValidateNodeL( CXdmDocumentNode& aXdmNode ) = 0; - - /** - * Validate the attribute in the parameter - * This method is called by base class for each attribute - * in document, here we have to define data types - * for attributes, and pass them to the base class - * for the actual data checking. - * @param aXdmNodeAttr attribute reference - */ - virtual void ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr ) = 0; - - /** - * Add namespaces and namespace prefixes used in document - * @param aXdmDocument document reference - */ - virtual void AddNamespaceInformationL( CXdmDocument& aXdmDocument ) = 0; - - - protected: - - /** - * C++ constructor - */ - CXcapAppUsage( const CXdmEngine& aXdmEngine ); - - /** - * Validates basic data types - * @param aDataType type of the data - * @param aXdmNode node reference - */ - void ValidateDataL ( TDataType aDataType, CXdmDocumentNode& aXdmNode ); - - /** - * Validates basic data types - * @param aDataType type of the data - * @param aXdmNodeAttr attribute reference - */ - void ValidateDataL ( TDataType aDataType, const CXdmNodeAttribute& aXdmNodeAttr ); - - /** - * If outgoing document, adds namespacePrefix - * to the node in parameter - * @param aXdmNode node reference - * @param aPrefix namespace prefix - */ - void SetPrefixL( CXdmDocumentNode& aXdmNode, const TDesC8& aPrefix ); - - /** - * Helper method for string comparison - * @param aLeft first string - * @param aRight second string - * @return ETrue, if the strings are equal - */ - TBool Match( const TDesC& aLeft, const TDesC& aRight ); - - /** - * Helper method for string comparison - * @param aLeft first string - * @param aRight second string - * @return ETrue, if the strings are equal - */ - TBool Match( const TDesC8& aLeft, const TDesC8& aRight ); - - /** - * To be used when an error occurs, however if the node is - * for http get or delete request, this do not leave - * @param aErrorCode function will leave with this error code - */ - void LeaveWithErrorL( TInt aErrorCode ); - -#ifdef _DEBUG - /** - * Writes logs to file. - */ - void WriteToLog( TRefByValue aFmt,... ); -#endif - - private: - - /** - * Validate the document in the parameter. - * @param aXdmDocument document reference - */ - void DoValidateL( CXdmDocument& aXdmDocument ) ; - - /** - * Validate the node in the parameter. - * @param aXdmNode node reference - */ - void DoValidateL( CXdmDocumentNode& aXdmNode ) ; - - /** - * Validates basic data types - * @param aDataType type of the data - * @param aData validated data - */ - void ValidateDataL ( TDataType aDataType, TDesC8& aData ); - - /** - * Updates member variables for used namespaces - * @param aPrefix prefix of the namespace - */ - void AddUsedNamespace( const TDesC8& aPrefix ) ; - - /** - * Resets member variables for used namespaces - */ - void ResetUsedNamespaces( ); - - /** - * Appends namespace information to the node's uri interface. - * Called if _NAMESPACES_TO_NODE_SELECTOR defined. - * @param aUriInterface interface for storing the uri - */ - void AppendUsedNamespacesL( MXcapUriInterface* aUriInterface ); - - /** - * Creates namespace attribute for the node. - * Called if _ADD_NAMESPACE_ATTRIBUTES is defined - * and validating partial document. - * @param aXdmNode node for storing the uri - */ - void CreateNamespaceAttributesL( CXdmDocumentNode& aXdmNode, MXcapUriInterface* aUriInterface ); - - /** - * Removes namespace attributes from the node - * and it's child nodes - * @param aXdmNode - */ - void RemoveNamespaceAttributesL( CXdmDocumentNode& aXdmNode ); - - /** - * Adds namespace attributes that are used in - * partial document - * @param aXdmNode - */ - void AppendNamespaceAttributesL( CXdmDocumentNode& aXdmNode ) ; - - /** - * Creates namespace attribute for node - * @param aXdmNode - * @param aPrefix prefix of the namespace - * @param aNamespace namespace definition - */ - void CreateNamespaceAttributeL( CXdmDocumentNode& aXdmNode, const TDesC8& aPrefix, const TDesC8& aNamespace ); - - - /** - * Goes through all nodes and checks if - * default namespace is used in document fragment - * the namespace given in parameter - * @param aXdmNode - * @return ETrue or EFalse - */ - TBool DefaultNamespaceUsed( CXdmDocumentNode& aXdmNode ); - - protected: // Data - - CXdmEngine& iXdmEngine; - - private: // Data - - TBool iAddNamespaces; - TBool iNsToNodeSelector; - TBool iAddNsAttributes; - TBool iIsGetOrDelete; - TUid iDestructorKey; - // Variables for used namespaces - // Add new one here if needed - TBool iRL; - TBool iCR; - TBool iCP ; - TBool iPR; - TBool iLS; - TBool iPOC; - TBool iOPR; - TBool iRLS; - TBool iOU; - // add new prefix definitions here - - - }; - - -// ---------------------------------------------------- -// CXcapAppUsage::NewL -// Create a new application usage implementation -// REMOVE THIS WHEN USAGE IN ENGINE CHANGED!!! -// ---------------------------------------------------- -// -inline CXcapAppUsage* CXcapAppUsage::NewL( const CXdmEngine& aXdmEngine, - const TXdmDocType aDocumentType ) - { - TAny* ptr = NULL; - TXcapAppUsageParams params( aXdmEngine ); - switch( aDocumentType ) - { - case EXdmCapabilities: - { - TUid KDefaultImplementationUid = { 0x10207418 }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmDirectory: - { - TUid KDefaultImplementationUid = { 0x10207419 }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmTestDocType: - { - TUid KDefaultImplementationUid = { 0x1020741A }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmPoCGroup: - { - TUid KDefaultImplementationUid = { 0x1020741B }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmPoCUserAccessPolicy: - { - TUid KDefaultImplementationUid = { 0x1020741C }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmSharedXdm: - { - TUid KDefaultImplementationUid = { 0x1020741D }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmRlsServices: - { - TUid KDefaultImplementationUid = { 0x1020741E }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmResourceLists: - { - TUid KDefaultImplementationUid = { 0x10275080 }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmIetfCommonPolicy: - { - TUid KDefaultImplementationUid = { 0x10275081 }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmOmaCommonPolicy: - { - TUid KDefaultImplementationUid = { 0x10275082 }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmIetfPresenceRules: - { - TUid KDefaultImplementationUid = { 0x10275083 }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; - case EXdmOmaPresenceRules: - { - TUid KDefaultImplementationUid = { 0x102750AB }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; -// PRES-CONTENT STARTS - case EXdmPresContent: - { - TUid KDefaultImplementationUid = { 0x20028701 }; - TRAPD( error, ptr = REComSession::CreateImplementationL( - KDefaultImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ) ); - } - break; -// PRES-CONTENT ENDS - default: - User::Leave( KErrNotSupported ); - } - return reinterpret_cast( ptr ); - } - - -#endif //__XCAPAPPUSAGE__ - - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/inc/XcapAppUsageDef.h --- a/xdmprotocols/XcapProtocol/XcapAppUsage/inc/XcapAppUsageDef.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,254 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapAppUsage enumerations -* -*/ - - - - -#ifndef __XCAPAPPUSAGEDEF__ -#define __XCAPAPPUSAGEDEF__ - -// Supported data types -enum TDataType - { - EDataTypeUndefined = 0, - EDataTypeString, - EDataTypeNonNegativeInteger, - EDataTypeAnyURI, - EDataTypeDateTime, - EDataTypeBoolean, - EDataTypeToken, - EDataTypeEmpty - }; - -// AUIDs -_LIT8( KXdmResourceListsUsageAUID, "/resource-lists/" ); -_LIT8( KXdmCapabilityUsageAUID, "/xcap-caps/" ); -_LIT8( KXdmDirectoryUsageAUID, "/org.openmobilealliance.xcap-directory/" ); -_LIT8( KXdmIetfCommonPolicyUsageAUID, "/policy-capabilities/" ); -_LIT8( KXdmOmaCommonPolicyUsageAUID, "/org.openmobilealliance.policy-capabilities/" ); -_LIT8( KXdmPocUserAccessUsageAUID, "/org.openmobilealliance.poc-rules/" ); -_LIT8( KXdmIetfPresRulesUsageAUID, "/pres-rules/" ); -_LIT8( KXdmRlsServicesUsageAUID, "/rls-services/" ); -_LIT8( KXdmSharedXDMUsageAUID, "/resource-lists/" ); -_LIT8( KXdmOmaPresRulesUsageAUID, "/org.openmobilealliance.pres-rules/" ); -_LIT8( KXdmPocGroupUsageAUID, "/org.openmobilealliance.poc-groups/" ); -// add new AUID definitions here -//_LIT8( KXdmTestAppUsageAUID, "/org.foo.bar/" ); -// PRES-CONTENT starts -_LIT8( KXdmPresContentAUID, "/org.openmobilealliance.pres-content/" ); -// PRES-CONTENT ends - -// ContentTypes -_LIT8( KXdmResourceListsUsageContType, "application/resource-lists+xml" ); -_LIT8( KXdmCapabilityUsageContType, "application/xcap-caps+xml" ); -_LIT8( KXdmDirectoryUsageContType, "application/oma-directory+xml" ); -_LIT8( KXdmIetfCommonPolicyUsageContType, "application/policy-caps+xml" ); -_LIT8( KXdmOmaCommonPolicyUsageContType, "application/policy-caps+xml" ); -_LIT8( KXdmSharedXDMUsageContType, "application/resource-lists+xml" ); -_LIT8( KXdmIetfPresRulesUsageContType, "application/auth-policy+xml" ); -_LIT8( KXdmPocUserAccessUsageContType, "application/auth-policy+xml" ); -_LIT8( KXdmOmaPresRulesUsageContType, "application/auth-policy+xml" ); -_LIT8( KXdmRlsServicesUsageContType, "application/rls-services+xml" ); -_LIT8( KXdmPocGroupUsageContType, "application/vnd.oma.poc.groups+xml" ); -// add new content types here -//_LIT8( KXdmTestAppUsageContType, "application/test-type+xml" ); -// PRES-CONTENT starts -_LIT8( KXdmPresContentContType, "application/vnd.oma.pres-content+xml" ); -_LIT8( KXdmPresContentContTypeOld, "application/vnd.oma.content+xml" ); -// PRES-CONTENT ends - -// Namespaces -_LIT8( KXdmResourceListsNamespace, "urn:ietf:params:xml:ns:resource-lists" ); -_LIT8( KXdmCapabilityNamespace, "urn:ietf:params:xml:ns:xcap-caps" ); -_LIT8( KXdmDirectoryNamespace, "urn:oma:params:xml:ns:xcap-directory" ); -_LIT8( KXdmIetfCommonPolicyNamespace, "urn:ietf:params:xml:ns:common-policy" ); -_LIT8( KXdmOmaCommonPolicyNamespace, "urn:oma:xml:xdm:common-policy" ); -_LIT8( KXdmOmaPresRulesNamespace, "urn:oma:xml:prs:pres-rules" ); -_LIT8( KXdmIetfPresRulesNamespace, "urn:ietf:params:xml:ns:pres-rules" ); -_LIT8( KXdmRlsServicesNamespace, "urn:ietf:params:xml:ns:rls-services" ); -_LIT8( KXdmSharedXDMUriUsageNamespace, "urn:oma:params:xml:ns:resource-list:oma-uriusage" ); -_LIT8( KXdmPocUserAccessNamespace, "urn:oma:xml:poc:poc-rules" ); -_LIT8( KXdmPocGroupNamespace, "urn:oma:xml:poc:list-service" ); -// add new namespace definitions here -// PRES-CONTENT starts -_LIT8( KXdmPresContentNamespace, "urn:oma:xml:prs:pres-content" ); -// PRES-CONTENT ends - -// Namespace prefixes -_LIT8( KXdmSharedXDMUriUsageNsPrefix, "ou" ); -_LIT8( KXdmResourceListsNsPrefix, "rl" ); -_LIT8( KXdmIetfCommonPolicyNsPrefix, "cr" ); -_LIT8( KXdmOmaCommonPolicyNsPrefix, "ocp" ); -_LIT8( KXdmIetfPresRulesNsPrefix, "pr" ); -_LIT8( KXdmTestAppUsageDefaultNamespace, "ta" ); -_LIT8( KXdmPocUserAccessNsPrefix, "poc" ); -_LIT8( KXdmOmaPresRulesNsPrefix, "opr" ); -_LIT8( KXdmRlsServicesNsPrefix, "rls" ); -_LIT8( KXdmPocGroupNsPrefix, "ls" ); -// add new namespace prefix definitions here - -// Common literals -_LIT( KXdmAuid, "auid" ); -_LIT( KXdmUri, "uri" ); -_LIT( KXdmEtag, "etag" ); -_LIT( KXdmName, "name" ); -_LIT( KXdmRef, "ref" ); -_LIT( KXdmUse, "use" ); -_LIT( KXdmRuleset, "ruleset" ); -_LIT( KXdmEntry, "entry" ); -_LIT( KXdmEntity, "entity" ); -_LIT( KXdmId, "id" ); -_LIT( KXdmAnyIdentity, "any-identity" ); -_LIT( KXdmIdentity, "identity" ); -_LIT( KXdmDomain, "domain" ); -_LIT( KXdmAnc, "anc" ); -_LIT( KXdmDisplayName, "display-name" ); -_LIT( KXdmAnchor, "anchor" ); -_LIT( KXdmExternal, "external" ); -_LIT( KXdmList, "list" ); -_LIT( KXdmServiceId, "service-id" ); -_LIT8( KXdmZero, "0" ); -_LIT8( KXdmOneNbr, "1" ); -_LIT8( KXdmTrue, "true" ); -_LIT8( KXdmFalse, "false"); -_LIT8( KXdmFull, "full" ); -_LIT8( KXdmAllow, "allow" ); -_LIT8( KXdmBlock, "block" ); - -// Literals for capability -_LIT( KXdmExtensions, "extensions" ); -_LIT( KXdmExtension, "extension" ); -_LIT( KXdmAuids, "auids" ); -_LIT( KXdmNamespaces, "namespaces" ); -_LIT( KXdmNamespace, "namespace"); - -// Literals for directory -_LIT( KXdmXcapDirectory, "xcap-directory" ); -_LIT( KXdmFolder, "folder" ); -_LIT( KXdmErrorCode, "error-code" ); -_LIT( KXdmLastModified, "last-modified" ); -_LIT( KXdmSize, "size" ); - -// Literals for presence -_LIT( KXdmServiceUriScheme, "service-uri-scheme" ); -_LIT( KXdmClass, "class" ); -_LIT( KXdmOccurenceId, "occurence-id" ); -_LIT( KXdmServiceUri, "service-uri" ); -_LIT( KXdmAllServices, "all-services" ); -_LIT( KXdmProvideServices, "provide-services" ); -// pres-rules-03 -_LIT( KXdmDeviceId, "device-id" ); -// pres-rules-05 -_LIT( KXdmDeviceID, "deviceID" ); -_LIT( KXdmAllDevices, "all-devices" ); -_LIT( KXdmProvideDevices, "provide-devices" ); -_LIT( KXdmAllPersons, "all-persons" ); -_LIT( KXdmProvidePersons, "provide-persons" ); -_LIT( KXdmProvideActivities, "provide-activities" ); -_LIT( KXdmProvideClass, "provide-class" ); -_LIT( KXdmProvideDeviceId, "provide-device-id" ); -_LIT( KXdmProvideMood, "provide-mood" ); -_LIT( KXdmProvidePlaceIs, "provide-place-is" ); -_LIT( KXdmProvidePlaceType, "provide-place-type" ); -_LIT( KXdmProvidePrivacy, "provide-privacy" ); -_LIT( KXdmProvideRelationship, "provide-relationship" ); -_LIT( KXdmProvideStatusIcon, "provide-status-icon" ); -_LIT( KXdmProvideSphere, "provide-sphere" ); -_LIT( KXdmProvideTimeOffset, "provide-time-offset" ); -_LIT( KXdmProvideUserInput, "provide-user-input" ); -_LIT( KXdmProvideNote, "provide-note" ); -_LIT( KXdmProvideUnknownAttribute, "provide-unknown-attribute" ); -_LIT( KXdmProvideAllAttributes, "provide-all-attributes" ); -_LIT( KXdmSubHandling, "sub-handling" ); -_LIT( KXdmProvideWillingness, "provide-willingness" ); -_LIT( KXdmProvideNetworkAvailability, "provide-network-availability" ); -_LIT( KXdmProvideSessionParticipation, "provide-session-participation" ); -_LIT( KXdmProvideGeopriv, "provide-geopriv" ); -_LIT( KXdmProvideRegistrationState, "provide-registration-state" ); -_LIT( KXdmProvideBarringState, "provide-barring-state" ); -_LIT8( KXdmBare, "bare" ); -_LIT8( KXdmThresholds, "thresholds" ); -_LIT8( KXdmRandomize, "randomize" ); -_LIT8( KXdmObfuscate, "obfuscate" ); -_LIT8( KXdmConfirm, "confirm" ); -_LIT8( KXdmPoliteBlock, "polite-block" ); - -// Literals for commonpolicy -_LIT( KXdmOtherIdentity, "other-identity" ); -_LIT( KXdmExternalList, "external-list" ); -_LIT( KXdmAnonymousRequest, "anonymous-request" ); -_LIT( KXdmRule, "rule" ); -_LIT( KXdmExceptDomain, "except-domain" ); -_LIT( KXdmExcept, "except" ); -_LIT( KXdmFrom, "from" ); -_LIT( KXdmTo, "to" ); -_LIT( KXdmValue, "value" ); -_LIT( KXdmSphere, "sphere" ); -_LIT( KXdmValidity, "validity" ); -_LIT( KXdmConditions, "conditions" ); -_LIT( KXdmActions, "actions" ); -_LIT( KXdmTransformations, "transformations" ); -_LIT( KXdmMany, "many" ); -_LIT( KXdmUntil, "until" ); -_LIT( KXdmOne, "one" ); -_LIT( KXdmScheme, "scheme" ); - -// Literals for poc -_LIT( KXdmGroup, "group"); -_LIT( KXdmListService, "list-service" ); -_LIT( KXdmInviteMembers, "invite-members" ); -_LIT( KXdmMaxParticipantCount, "max-participant-count" ); -_LIT( KXdmIsListMember, "is-list-member" ); -_LIT( KXdmAllowConfState, "allow-conference-state" ); -_LIT( KXdmAllowInvUsersDyn, "allow-invite-users-dynamically" ); -_LIT( KXdmJoinHandling, "join-handling" ); -_LIT( KXdmAllowInitiateConf, "allow-initiate-conference" ); -_LIT( KXdmAllowAnonymity, "allow-anonymity"); -_LIT( KXdmIsKeyParticipant, "list-service" ); -_LIT( KXdmAllowInvite, "allow-invite" ); -_LIT8( KXdmReject, "reject" ); -_LIT8( KXdmAccept, "accept" ); -_LIT8( KXdmPass, "pass" ); - -// Literals for resource list -_LIT( KXdmEntryRef, "entry-ref"); -_LIT( KXdmResourceLists, "resource-lists"); - -// Literals for shared -_LIT( KXdmUriUsages, "uriusages"); -_LIT( KXdmUriUsage, "uriusage"); - -// Literals for rls -_LIT( KXdmRlsServices, "rls-services" ); -_LIT( KXdmService, "service"); -_LIT( KXdmResourceList, "resource-list" ); -_LIT( KXdmPackages, "packages" ); -_LIT( KXdmPackage, "package" ); -_LIT8( KXdmPresence, "presence" ); - -// PRES-CONTENT starts -_LIT( KXdmMimeType, "mime-type"); -_LIT( KXdmEncoding, "encoding"); -_LIT( KXdmDescription, "description"); -_LIT( KXdmData, "data"); -_LIT( KXdmSvg, "svg"); -_LIT( KXdmRect, "rect"); -// PRES-CONTENT ends - -#endif //__XCAPAPPUSAGEDEF__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/src/10207416.rss --- a/xdmprotocols/XcapProtocol/XcapAppUsage/src/10207416.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,144 +0,0 @@ -/* -* Copyright (c) 1020 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: Part of XCAP Protocol Application Usage API -* -*/ - - - - -#include "registryinfo.rh" - -//Declares the interface implementations provided -RESOURCE REGISTRY_INFO XcapAppUsageInfo - { - dll_uid = 0x10207416; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x10207417; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x10207418; - version_no = 1; - display_name = "XCAP Capability Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x10207419; - version_no = 1; - display_name = "XCAP Directory Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x1020741A; - version_no = 1; - display_name = "XCAP Test Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x1020741B; - version_no = 1; - display_name = "XCAP PocGroup Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x1020741C; - version_no = 1; - display_name = "XCAP PocUserAccessPolicy Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x1020741D; - version_no = 1; - display_name = "XCAP SharedXDM Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x1020741E; - version_no = 1; - display_name = "XCAP RlsServicesApplication Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x10275080; - version_no = 1; - display_name = "XCAP ResourceLists Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x10275081; - version_no = 1; - display_name = "XCAP IetfCommonPolicy Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x10275082; - version_no = 1; - display_name = "XCAP OmaCommonPolicy Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x10275083; - version_no = 1; - display_name = "XCAP IetfPresenceRules Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - }, - IMPLEMENTATION_INFO - { - implementation_uid = 0x102750AB; - version_no = 1; - display_name = "XCAP OmaPresenceRules Application Usage||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data =""; - }, - // PRES-CONTENT STARTS - IMPLEMENTATION_INFO - { - implementation_uid = 0x20028701; - version_no = 1; - display_name = "XCAP Pres-Content Application Usage||Copyright © 2008 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data =""; - } - // PRES-CONTENT ENDS - }; - } - }; - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapAppUsage/src/XcapAppUsage.cpp --- a/xdmprotocols/XcapProtocol/XcapAppUsage/src/XcapAppUsage.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,756 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapAppUsage -* -*/ - - - - - -// INCLUDE FILES -#ifdef _DEBUG -#include -#endif - -#include - -#include "XcapAppUsageDef.h" - -#include "XcapDirectoryUsage.h" -#include "XcapCapabilityUsage.h" -#include "XcapPocGroupUsage.h" -#include "XcapPocUserAccessUsage.h" -#include "XcapSharedXDMUsage.h" -#include "XcapRlsServicesUsage.h" -#include "XcapResourceListsUsage.h" -#include "XcapIetfCommonPolicyUsage.h" -#include "XcapOmaCommonPolicyUsage.h" -#include "XcapIetfPresRulesUsage.h" -#include "XcapOmaPresRulesUsage.h" -// Add the header of the new app usage here -// #include "XcapTestAppUsage.h" -// PRES-CONTENT STARTS -#include "XcapC4.h" -// PRES-CONTENT ENDS - -#include -#include -#include -#include -#include "XcapUriInterface.h" - - - -// CONSTANTS -// Map the interface UIDs to implementation factory functions -const TImplementationProxy ImplementationTable[] = - { -#ifdef __EABI__ - IMPLEMENTATION_PROXY_ENTRY( KXdmCapabilityUsageUid, CXcapCapabilityUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmDirectoryUsageUid, CXcapDirectoryUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmPocGroupUsageUid, CXcapPocGroupUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmPocUserAccessUsageUid, CXcapPocUserAccessUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmSharedXDMUsageUid, CXcapSharedXDMUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmRlsServicesUsageUid, CXcapRlsServicesUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmResourceListsUsageUid, CXcapResourceListsUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmIetfCommonPolicyUsageUid, CXcapIetfCommonPolicyUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmOmaCommonPolicyUsageUid, CXcapOmaCommonPolicyUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmIetfPresRulesUsageUid, CXcapIetfPresRulesUsage::NewL ), - IMPLEMENTATION_PROXY_ENTRY( KXdmOmaPresRulesUsageUid, CXcapOmaPresRulesUsage::NewL ), - // add new usages here - // IMPLEMENTATION_PROXY_ENTRY( KXdmTestAppUsageUid, CXcapTestAppUsage::NewL ), -// PRES-CONTENT STARTS - IMPLEMENTATION_PROXY_ENTRY( KXdmUsageUid, CXcapC4::NewL ) -// PRES-CONTENT ENDS -#else - { { KXdmCapabilityUsageUid }, CXcapCapabilityUsage::NewL }, - { { KXdmDirectoryUsageUid }, CXcapDirectoryUsage::NewL }, - { { KXdmPocGroupUsageUid }, CXcapPocGroupUsage::NewL }, - { { KXdmPocUserAccessUsageUid }, CXcapPocUserAccessUsage::NewL }, - { { KXdmSharedXDMUsageUid }, CXcapSharedXDMUsage::NewL }, - { { KXdmRlsServicesUsageUid }, CXcapRlsServicesUsage::NewL }, - { { KXdmResourceListsUsageUid }, CXcapResourceListsUsage::NewL }, - { { KXdmIetfCommonPolicyUsageUid }, CXcapIetfCommonPolicyUsage::NewL }, - { { KXdmOmaCommonPolicyUsageUid }, CXcapOmaCommonPolicyUsage::NewL }, - { { KXdmIetfPresRulesUsageUid }, CXcapIetfPresRulesUsage::NewL }, - { { KXdmOmaPresRulesUsageUid }, CXcapOmaPresRulesUsage::NewL }, - // add new usages here - // { { KXdmTestAppUsageUid }, CXcapTestAppUsage::NewL }, -// PRES-CONTENT STARTS - { { KXdmUsageUid }, CXcapC4::NewL } -// PRES-CONTENT ENDS -#endif - }; - -// ---------------------------------------------------- -// ImplementationGroupProxy -// -// ---------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - return ImplementationTable; - } - - -// ---------------------------------------------------- -// CXcapAppUsage::CXcapAppUsage -// -// ---------------------------------------------------- -// -CXcapAppUsage::CXcapAppUsage( const CXdmEngine& aXdmEngine ) : -iXdmEngine( CONST_CAST( CXdmEngine&, aXdmEngine ) ), -iAddNamespaces( EFalse ), -iNsToNodeSelector( EFalse ), -iAddNsAttributes( EFalse ), -iIsGetOrDelete( EFalse ) - { -#ifdef _NAMESPACES_TO_NODE_SELECTOR - iNsToNodeSelector = ETrue; -#endif - -#ifdef _ADD_NAMESPACE_ATTRIBUTES - iAddNsAttributes = ETrue; -#endif - } - -// ---------------------------------------------------- -// CXcapAppUsage::~CXcapAppUsage -// -// ---------------------------------------------------- -// -CXcapAppUsage::~CXcapAppUsage() - { - REComSession::DestroyedImplementation( iDestructorKey ); - } - -// ---------------------------------------------------- -// CXcapAppUsage::NewL -// -// ---------------------------------------------------- -// -EXPORT_C CXcapAppUsage* CXcapAppUsage::NewL( const CXdmEngine& aXdmEngine, - const TInt aDocumentType ) - { - TAny* ptr = NULL; - TXcapAppUsageParams params( aXdmEngine ); - switch( aDocumentType ) - { - case KXdmCapabilityUsageUid: - case KXdmDirectoryUsageUid: - case KXdmTestAppUsageUid: - case KXdmPocGroupUsageUid: - case KXdmPocUserAccessUsageUid: - case KXdmSharedXDMUsageUid: - case KXdmRlsServicesUsageUid: - case KXdmResourceListsUsageUid: - case KXdmIetfCommonPolicyUsageUid: - case KXdmOmaCommonPolicyUsageUid: - case KXdmIetfPresRulesUsageUid: - case KXdmOmaPresRulesUsageUid: - case KXdmUsageUid: - { - TUid KImplementationUid = { aDocumentType }; - ptr = REComSession::CreateImplementationL( - KImplementationUid, - _FOFF( CXcapAppUsage, iDestructorKey ), - ( TAny* )¶ms ); - } - break; - - default: - User::Leave( KErrNotSupported ); - } - return reinterpret_cast( ptr ); - } - -// ---------------------------------------------------- -// CXcapAppUsage::Validate -// -// ---------------------------------------------------- -// -EXPORT_C TInt CXcapAppUsage::Validate( CXdmDocument& aXdmDocument, TBool aAddNamespaces ) - { - iAddNamespaces = aAddNamespaces; - iIsGetOrDelete = EFalse; - // catch leaves here and return the error code - TInt error ( KErrNone ); - TRAP( error, DoValidateL( aXdmDocument ) ); - // add namespace information for outgoing document - if ( error == KErrNone && iAddNamespaces ) - { - aXdmDocument.ResetNamespaces(); - TRAP( error, AddNamespaceInformationL( aXdmDocument ) ); - } -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::Validate document returns %d" ), error ); -#endif - return error; - } - -// ---------------------------------------------------- -// CXcapAppUsage::Validate -// -// ---------------------------------------------------- -// -EXPORT_C TInt CXcapAppUsage::Validate( CXdmDocumentNode& aXdmNode, - MXcapUriInterface* aUriInterface, - TBool aIsGetOrDelete ) - { - iAddNamespaces = ETrue; - iIsGetOrDelete = aIsGetOrDelete; - ResetUsedNamespaces(); - // catch leaves here and return the error code - TInt error( KErrNone ); - TRAP( error, DoValidateL( aXdmNode ) ); - - // add namespace if defined - if ( error == KErrNone && iAddNsAttributes ) - { - TRAP( error, CreateNamespaceAttributesL( aXdmNode, aUriInterface ) ); - } - -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::Validate node returns %d" ), error ); -#endif - return error; - } - - -// ---------------------------------------------------- -// CXcapAppUsage::DoValidateL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::DoValidateL( CXdmDocumentNode& aXdmNode ) - { - // call method from derived class - ValidateNodeL( aXdmNode ); - - // go through all attributes - TInt attrCount( aXdmNode.AttributeCount() ); - for ( TInt i( 0 ); i < attrCount; i++ ) - { - CXdmNodeAttribute* attr = aXdmNode.Attribute( i ); - ValidateAttributeL( *attr ); - } - - // go through all descendants - TInt count( aXdmNode.NodeCount( ) ); - for ( TInt i = 0; i < count; i++ ) - { - DoValidateL ( *aXdmNode.ChileNode( i ) ); - } - } - -// ---------------------------------------------------- -// CXcapAppUsage::DoValidateL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::DoValidateL ( CXdmDocument& aXdmDocument ) - { - DoValidateL( *aXdmDocument.DocumentRoot() ); - } - -// ---------------------------------------------------- -// CXcapAppUsage::ValidateDataL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::ValidateDataL ( TDataType aDataType, TDesC8& aData ) - { - if ( iIsGetOrDelete ) - { - return; - } - switch ( aDataType ) - { - case EDataTypeString: - { - // TODO - } - break; - case EDataTypeNonNegativeInteger: - { - TInt value( 0 ); - TLex8 lex( aData ); - lex.Val( value ); - if ( value < 0 ) - { - User::Leave( KXcapErrorIllegalDataValue ); - } - } - break; - case EDataTypeAnyURI: - { - // TODO - } - break; - case EDataTypeDateTime: - { - // TODO - } - break; - case EDataTypeBoolean: - { - if ( aData.CompareF( KXdmTrue ) - && aData.CompareF( KXdmFalse ) - && aData.CompareF( KXdmZero ) - && aData.CompareF( KXdmOneNbr ) ) - { - User::Leave( KXcapErrorIllegalDataValue ); - } - } - break; - case EDataTypeToken: - { - // elements that are using datatype token - // scheme, class, occurence-id - } - break; - case EDataTypeEmpty: - { - if ( aData.Length() > 0 ) - { - User::Leave( KXcapErrorIllegalDataValue ); - } - } - break; - default: - break; - } - } - -// ---------------------------------------------------- -// CXcapAppUsage::ValidateDataL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::ValidateDataL ( TDataType aDataType, CXdmDocumentNode& aXdmNode ) - { - TPtrC8 data = aXdmNode.LeafNodeContent(); - ValidateDataL( aDataType, data ); - } - -// ---------------------------------------------------- -// CXcapAppUsage::ValidateDataL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::ValidateDataL ( TDataType aDataType, const CXdmNodeAttribute& aXdmNodeAttr ) - { - HBufC8* dataBuf = aXdmNodeAttr.EightBitValueLC(); // << dataBuf - TPtrC8 data = dataBuf->Des(); - ValidateDataL( aDataType, data ); - CleanupStack::PopAndDestroy( dataBuf ); // >>> dataBuf - } - -// ---------------------------------------------------- -// CXcapAppUsage::SetPrefixL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::SetPrefixL( CXdmDocumentNode& aXdmNode, const TDesC8& aPrefix ) - { - if ( iAddNamespaces ) - { - aXdmNode.SetPrefixL( aPrefix ); - AddUsedNamespace( aPrefix ); - } - } - -// ---------------------------------------------------- -// CXcapAppUsage::AddUsedNamespace -// -// ---------------------------------------------------- -// -void CXcapAppUsage::AddUsedNamespace( const TDesC8& aPrefix ) - { - // rl - if ( Match( aPrefix, KXdmResourceListsNsPrefix ) ) - { - iRL = ETrue; - } - // cr - else if ( Match( aPrefix, KXdmIetfCommonPolicyNsPrefix ) ) - { - iCR = ETrue; - } - // cp - else if ( Match( aPrefix, KXdmOmaCommonPolicyNsPrefix ) ) - { - iCP = ETrue; - } - // pr - else if ( Match( aPrefix, KXdmIetfPresRulesNsPrefix ) ) - { - iPR = ETrue; - } - // ls - else if ( Match( aPrefix, KXdmPocGroupNsPrefix ) ) - { - iLS = ETrue; - } - // poc - else if ( Match( aPrefix, KXdmPocUserAccessNsPrefix ) ) - { - iPOC = ETrue; - } - // opr - else if ( Match( aPrefix, KXdmOmaPresRulesNsPrefix ) ) - { - iOPR = ETrue; - } - // rls - else if ( Match( aPrefix, KXdmRlsServicesNsPrefix ) ) - { - iRLS = ETrue; - } - // ou - else if ( Match( aPrefix, KXdmSharedXDMUriUsageNsPrefix ) ) - { - iOU = ETrue; - } - // add new prefix definitions here - } - -// ---------------------------------------------------- -// CXcapAppUsage::ResetUsedNamespaces -// -// ---------------------------------------------------- -// -void CXcapAppUsage::ResetUsedNamespaces() - { - iRL = EFalse; - iCR = EFalse; - iCP = EFalse; - iPR = EFalse; - iLS = EFalse; - iPOC = EFalse; - iOPR = EFalse; - iRLS = EFalse; - iOU = EFalse; - // add new prefix definitions here - } - -// ---------------------------------------------------- -// CXcapAppUsage::AppendUsedNamespacesL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::AppendUsedNamespacesL( MXcapUriInterface* aUriInterface ) - { - if( iRL ) - { - aUriInterface->AddNamespaceMappingL( KXdmResourceListsNamespace, KXdmResourceListsNsPrefix ); - } - if( iCR ) - { - aUriInterface->AddNamespaceMappingL( KXdmIetfCommonPolicyNamespace, KXdmIetfCommonPolicyNsPrefix ); - } - if( iCP ) - { - aUriInterface->AddNamespaceMappingL( KXdmOmaCommonPolicyNamespace, KXdmOmaCommonPolicyNsPrefix ); - } - if( iPR ) - { - aUriInterface->AddNamespaceMappingL( KXdmIetfPresRulesNamespace, KXdmIetfPresRulesNsPrefix ); - } - if( iLS ) - { - aUriInterface->AddNamespaceMappingL( KXdmPocGroupNamespace, KXdmPocGroupNsPrefix ); - } - if( iPOC ) - { - aUriInterface->AddNamespaceMappingL( KXdmPocUserAccessNamespace, KXdmPocUserAccessNsPrefix ); - } - if( iOPR ) - { - aUriInterface->AddNamespaceMappingL( KXdmOmaPresRulesNamespace, KXdmOmaPresRulesNsPrefix ); - } - if( iRLS ) - { - aUriInterface->AddNamespaceMappingL( KXdmRlsServicesNamespace, KXdmRlsServicesNsPrefix ); - } - if( iOU ) - { - aUriInterface->AddNamespaceMappingL( KXdmSharedXDMUriUsageNamespace, KXdmSharedXDMUriUsageNsPrefix ); - } - // add new prefix definitions here - } - -// ---------------------------------------------------- -// CXcapAppUsage::CreateNamespaceAttributesL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::CreateNamespaceAttributesL( CXdmDocumentNode& aXdmNode, MXcapUriInterface* aUriInterface ) - { - // First remove all existing xmlns attributes - RemoveNamespaceAttributesL( aXdmNode ); - - TPtrC8 nameSpace; - TPtrC8 prefix = aXdmNode.Prefix(); - - // if the root node belongs to the default namespace, - // it's enough that we add attribute for it and also - // attributes for all other used namespaces - if ( Match( prefix, KNullDesC8 ) ) - { - CXdmNodeAttribute* ns = aXdmNode.CreateAttributeL( KXdmDefaultNsAttrName ); - ns->SetAttributeValueL( DefaultNamespace() ); - AppendNamespaceAttributesL( aXdmNode ); - - if ( iNsToNodeSelector ) - { - //aUriInterface->AddNamespaceMappingL( DefaultNamespace(), KNullDesC8 ); - CXdmDocumentNode* parent = aXdmNode.Parent(); - while ( parent ) - { - AddUsedNamespace ( parent->Prefix() ); - parent = parent->Parent(); - } - AppendUsedNamespacesL( aUriInterface ); - } - // we are done -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::CreateNamespaceAttributesL root belongs to default" ) ); -#endif - return; - } -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::CreateNamespaceAttributesL root doesn't belong to default" ) ); -#endif - // if the default namespace is used in fragment, - // the attribute for it has to be added - if ( DefaultNamespaceUsed( aXdmNode ) ) - { - CXdmNodeAttribute* ns = aXdmNode.CreateAttributeL( KXdmDefaultNsAttrName ); - ns->SetAttributeValueL( DefaultNamespace() ); - } - // finally, create new xmlns attributes - AppendNamespaceAttributesL( aXdmNode ); - if ( iNsToNodeSelector ) - { - //aUriInterface->AddNamespaceMappingL( DefaultNamespace(), KNullDesC8 ); - CXdmDocumentNode* parent = aXdmNode.Parent(); - while ( parent ) - { - AddUsedNamespace ( parent->Prefix() ); - parent = parent->Parent(); - } - AppendUsedNamespacesL( aUriInterface ); - } - } - -// ---------------------------------------------------- -// CXcapAppUsage::RemoveNamespaceAttributesL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::RemoveNamespaceAttributesL( CXdmDocumentNode& aXdmNode ) - { -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::RemoveNamespaceAttributesL begin" ) ); -#endif - // go through all attributes - for ( TInt i( aXdmNode.AttributeCount() - 1 ); i > KErrNotFound; i-- ) - { - CXdmNodeAttribute* attr = aXdmNode.Attribute( i ); - if ( attr->NodeName().FindF( KXdmDefaultNsAttrName ) != KErrNotFound ) - { -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::RemoveNamespaceAttributesL AttrCount=%d i=%d" ), aXdmNode.AttributeCount(), i ); -#endif - aXdmNode.RemoveChileNodeL( attr ); - } - } - - // go through all descendants - TInt count( aXdmNode.NodeCount( ) ); - for ( TInt i(0); i < count; i++ ) - { - RemoveNamespaceAttributesL ( *aXdmNode.ChileNode( i ) ); - } -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::RemoveNamespaceAttributesL done" ) ); -#endif - } - -// ---------------------------------------------------- -// CXcapAppUsage::DefaultNamespaceUsed -// -// ---------------------------------------------------- -// -TBool CXcapAppUsage::DefaultNamespaceUsed( CXdmDocumentNode& aXdmNode ) - { - if ( Match( aXdmNode.Prefix(), KNullDesC8 ) ) - { -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::DefaultNamespaceUsed returns true" ) ); -#endif - return ETrue; - } - // go through all descendants - TInt count( aXdmNode.NodeCount( ) ); - for ( TInt i = 0; i < count; i++ ) - { - if ( DefaultNamespaceUsed ( *aXdmNode.ChileNode( i ) ) ) - { -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::DefaultNamespaceUsed returns true" ) ); -#endif - return ETrue; - } - } -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::DefaultNamespaceUsed returns false" ) ); -#endif - return EFalse; - } -// ---------------------------------------------------- -// CXcapAppUsage::AppendNamespaceAttributesL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::AppendNamespaceAttributesL( CXdmDocumentNode& aXdmNode ) - { - if( iRL ) - { - CreateNamespaceAttributeL( aXdmNode, KXdmResourceListsNsPrefix, KXdmResourceListsNamespace ); - } - if( iCR ) - { - CreateNamespaceAttributeL( aXdmNode, KXdmIetfCommonPolicyNsPrefix, KXdmIetfCommonPolicyNamespace ); - } - if( iCP ) - { - CreateNamespaceAttributeL( aXdmNode, KXdmOmaCommonPolicyNsPrefix, KXdmOmaCommonPolicyNamespace ); - } - if( iPR ) - { - CreateNamespaceAttributeL( aXdmNode, KXdmIetfPresRulesNsPrefix, KXdmIetfPresRulesNamespace ); - } - if( iLS ) - { - CreateNamespaceAttributeL( aXdmNode, KXdmPocGroupNsPrefix, KXdmPocGroupNamespace ); - } - if( iPOC ) - { - CreateNamespaceAttributeL( aXdmNode, KXdmPocUserAccessNsPrefix, KXdmPocUserAccessNamespace ); - } - if( iOPR ) - { - CreateNamespaceAttributeL( aXdmNode, KXdmOmaPresRulesNsPrefix, KXdmOmaPresRulesNamespace ); - } - if( iRLS ) - { - CreateNamespaceAttributeL( aXdmNode, KXdmRlsServicesNsPrefix, KXdmRlsServicesNamespace ); - } - if( iOU ) - { - CreateNamespaceAttributeL( aXdmNode, KXdmSharedXDMUriUsageNsPrefix, KXdmSharedXDMUriUsageNamespace ); - } - // add new prefix definitions here -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::AppendNamespaceAttributesL done" ) ); -#endif - } - -// ---------------------------------------------------- -// CXcapAppUsage::CreateNamespaceAttributeL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::CreateNamespaceAttributeL( CXdmDocumentNode& aXdmNode, const TDesC8& aPrefix, const TDesC8& aNamespace ) - { - TBuf8 name; - name.Copy( KXdmNonDefaultNsAttrName ); - name.Append( aPrefix ); - HBufC8* attrName = name.AllocLC(); // << attrName - CXdmNodeAttribute* ns = aXdmNode.CreateAttributeL( ); - CleanupStack::PushL( ns ); // << ns - ns->SetNameL( *attrName ); - ns->SetAttributeValueL( aNamespace ); - CleanupStack::Pop( ns ); // >> ns - CleanupStack::PopAndDestroy(); // >>> attrName -#ifdef _DEBUG - WriteToLog( _L8( "CXcapAppUsage::CreateNamespaceAttributeL done" ) ); -#endif - } - -// ---------------------------------------------------- -// CXcapAppUsage::Match -// -// ---------------------------------------------------- -// -TBool CXcapAppUsage::Match( const TDesC& aLeft, const TDesC& aRight ) - { - if ( !aLeft.CompareF( aRight ) ) - { - return ETrue; - } - return EFalse; - } - -// ---------------------------------------------------- -// CXcapAppUsage::Match -// -// ---------------------------------------------------- -// -TBool CXcapAppUsage::Match( const TDesC8& aLeft, const TDesC8& aRight ) - { - if ( !aLeft.CompareF( aRight ) ) - { - return ETrue; - } - return EFalse; - } - -// ---------------------------------------------------- -// CXcapAppUsage::LeaveWithErrorL -// -// ---------------------------------------------------- -// -void CXcapAppUsage::LeaveWithErrorL( TInt aErrorCode ) - { - if ( !iIsGetOrDelete ) - { - User::Leave( aErrorCode ); - } - } - - -// ---------------------------------------------------- -// CXcapAppUsage::WriteToLog -// _DEBUG only -// ---------------------------------------------------- -// -#ifdef _DEBUG -void CXcapAppUsage::WriteToLog( TRefByValue aFmt,... ) - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - RFileLogger::Write( KXdmAppUsageLogDir, KXdmAppUsageLogFile, EFileLoggingModeAppend, buf ); - } -#endif - -// End of File - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Client/BWINSCW/XcapCacheClientU.DEF --- a/xdmprotocols/XcapProtocol/XcapCache/Client/BWINSCW/XcapCacheClientU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -EXPORTS - ??0RXcapCache@@QAE@XZ @ 1 NONAME ; RXcapCache::RXcapCache(void) - ??1RXcapCache@@QAE@XZ @ 2 NONAME ; RXcapCache::~RXcapCache(void) - ?Connect@RXcapCache@@QAEHXZ @ 3 NONAME ; int RXcapCache::Connect(void) - ?Delete@RXcapCache@@QAEHABVTDesC16@@ABVTDesC8@@@Z @ 4 NONAME ; int RXcapCache::Delete(class TDesC16 const &, class TDesC8 const &) - ?FetchDocumentContent@RXcapCache@@QAEXAAVTDes8@@ABVTDesC16@@ABVTDesC8@@@Z @ 5 NONAME ; void RXcapCache::FetchDocumentContent(class TDes8 &, class TDesC16 const &, class TDesC8 const &) - ?FetchDocumentInfo@RXcapCache@@QAEHAAVTDes8@@ABVTDesC16@@ABVTDesC8@@AAVTCacheEntryInfo@@@Z @ 6 NONAME ; int RXcapCache::FetchDocumentInfo(class TDes8 &, class TDesC16 const &, class TDesC8 const &, class TCacheEntryInfo &) - ?Flush@RXcapCache@@QAEXXZ @ 7 NONAME ; void RXcapCache::Flush(void) - ?IsCurrent@RXcapCache@@QAEHABVTDesC8@@ABVTDesC16@@0@Z @ 8 NONAME ; int RXcapCache::IsCurrent(class TDesC8 const &, class TDesC16 const &, class TDesC8 const &) - ?Store@RXcapCache@@QAEXABVTDesC8@@ABVTDesC16@@00@Z @ 9 NONAME ; void RXcapCache::Store(class TDesC8 const &, class TDesC16 const &, class TDesC8 const &, class TDesC8 const &) - ?Version@RXcapCache@@QBE?AVTVersion@@XZ @ 10 NONAME ; class TVersion RXcapCache::Version(void) const - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Client/eabi/XcapCacheClientU.DEF --- a/xdmprotocols/XcapProtocol/XcapCache/Client/eabi/XcapCacheClientU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -EXPORTS - _ZN10RXcapCache17FetchDocumentInfoER5TDes8RK7TDesC16RK6TDesC8R15TCacheEntryInfo @ 1 NONAME - _ZN10RXcapCache20FetchDocumentContentER5TDes8RK7TDesC16RK6TDesC8 @ 2 NONAME - _ZN10RXcapCache5FlushEv @ 3 NONAME - _ZN10RXcapCache5StoreERK6TDesC8RK7TDesC16S2_S2_ @ 4 NONAME - _ZN10RXcapCache6DeleteERK7TDesC16RK6TDesC8 @ 5 NONAME - _ZN10RXcapCache7ConnectEv @ 6 NONAME - _ZN10RXcapCache9IsCurrentERK6TDesC8RK7TDesC16S2_ @ 7 NONAME - _ZN10RXcapCacheC1Ev @ 8 NONAME - _ZN10RXcapCacheC2Ev @ 9 NONAME - _ZN10RXcapCacheD1Ev @ 10 NONAME - _ZN10RXcapCacheD2Ev @ 11 NONAME - _ZNK10RXcapCache7VersionEv @ 12 NONAME - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Client/group/XcapCacheClient.mmp --- a/xdmprotocols/XcapProtocol/XcapCache/Client/group/XcapCacheClient.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapCacheClient.mmp -* -*/ - - - -#include - -TARGET xcapcacheclient.dll -TARGETTYPE dll -UID 0x1000008d 0x10207413 -VENDORID VID_DEFAULT -CAPABILITY CAP_CLIENT_DLL - -SOURCEPATH ../src -USERINCLUDE ../../inc - -SOURCE XcapCache.cpp - -MW_LAYER_SYSTEMINCLUDE - -LIBRARY euser.lib -LIBRARY efsrv.lib -DEBUGLIBRARY flogger.lib - -#if defined( ARMCC ) - DEFFILE ../eabi/ -#elif defined ( WINSCW ) -deffile ../BWINSCW/ -#elif defined (WINS ) - deffile ../bwins/ -#endif - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Client/group/bld.inf --- a/xdmprotocols/XcapProtocol/XcapCache/Client/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapCacheClient bld.inf -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- -XcapCacheClient.mmp - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Client/src/XcapCache.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Client/src/XcapCache.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,188 +0,0 @@ -/* -* Copyright (c) 2005 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: RXcapCache -* -*/ - - - -#include "XcapCache.h" -#include "CommonDefines.h" - - -//CLASS DECLARATION -EXPORT_C RXcapCache::RXcapCache() : iConnected( EFalse ) - { - } - -// ---------------------------------------------------- -// RXcapCache::Store -// -// ---------------------------------------------------- -// -EXPORT_C void RXcapCache::Store( const TDesC8& aETag, - const TDesC& aDocumentName, - const TDesC8& aRootLocation, - const TDesC8& aResponseData ) - { - SendReceive( EXcapCacheStore, TIpcArgs( &aDocumentName, &aRootLocation, &aETag, &aResponseData ) ); - } - -// ---------------------------------------------------- -// RXcapCache::Delete -// -// ---------------------------------------------------- -// -EXPORT_C TInt RXcapCache::Delete( const TDesC& aDocumentName, - const TDesC8& aRootLocation ) - { - TCacheEntryInfo entryInfo; - entryInfo.iRootUri = CONST_CAST( TDesC8*, &aRootLocation ); - entryInfo.iDocumentUri = CONST_CAST( TDesC*, &aDocumentName ); - TPckgC package( entryInfo ); - return SendReceive( EXcapCacheDelete, TIpcArgs( &package ) ); - } - -// ---------------------------------------------------- -// RXcapCache::FetchDocumentInfo -// -// ---------------------------------------------------- -// -EXPORT_C TInt RXcapCache::FetchDocumentInfo( TDes8& aETagDescriptor, - const TDesC& aDocumentName, - const TDesC8& aRootLocation, - TCacheEntryInfo& aEntryInfo ) - { - TPckg package( aEntryInfo ); - return SendReceive( EXcapCacheFetchInfo, TIpcArgs( &package, &aETagDescriptor, - &aDocumentName, &aRootLocation ) ); - } - -// ---------------------------------------------------- -// RXcapCache::FetchDocumentContent -// -// ---------------------------------------------------- -// -EXPORT_C void RXcapCache::FetchDocumentContent( TDes8& aContentDescriptor, - const TDesC& aDocumentName, - const TDesC8& aRootLocation ) - { - SendReceive( EXcapCacheFetchData, TIpcArgs( - &aDocumentName, &aRootLocation, &aContentDescriptor ) ); - } - -// ---------------------------------------------------- -// RXcapCache::IsCurrent -// -// ---------------------------------------------------- -// -EXPORT_C TInt RXcapCache::IsCurrent( const TDesC8& aETag, - const TDesC& aDocumentName, - const TDesC8& aRootLocation ) - { - return SendReceive( EXcapCacheCheckValidity, TIpcArgs( - &aETag, &aDocumentName, &aRootLocation ) ); - } - -// ---------------------------------------------------- -// RXcapCache::Flush -// -// ---------------------------------------------------- -// -EXPORT_C void RXcapCache::Flush() - { - SendReceive( EXcapCacheFlush ); - } - -// ---------------------------------------------------- -// RXcapCache::Version -// -// ---------------------------------------------------- -// -EXPORT_C TVersion RXcapCache::Version() const - { - return TVersion( KCacheServerMajorVersionNumber, - KCacheServerMinorVersionNumber, - KCacheServerBuildVersionNumber ); - } - -// ---------------------------------------------------- -// RXcapCache::~RXcapCache -// -// ---------------------------------------------------- -// -EXPORT_C RXcapCache::~RXcapCache() - { - } - -// ---------------------------------------------------- -// RXcapCache::Connect() -// -// ---------------------------------------------------- -// -EXPORT_C TInt RXcapCache::Connect() - { - TInt ret = KErrNone; - if( !iConnected ) - { - ret = StartServer(); - if( ret == KErrNone || ret == KErrAlreadyExists ) - { - ret = CreateSession( KXcapCacheServerLib, Version(), KTTDefaultMessageSlots ); - iConnected = ( ret == KErrNone ); - } - } - return ret; - } - -// ---------------------------------------------------- -// RXcapCache::StartServer -// -// ---------------------------------------------------- -// -TInt RXcapCache::StartServer() - { - TInt ret = KErrNone; - TRequestStatus status = KRequestPending; - if ( !IsRunning() ) - { - RProcess server; - ret = server.Create( KXcapCacheServerExe, KNullDesC ); - if( ret != KErrNone ) - return ret; - server.Rendezvous( status ); - status != KRequestPending ? server.Kill( 0 ) : server.Resume(); - //Wait for start or death - User::WaitForRequest( status ); - ret = server.ExitType() == EExitPanic ? KErrGeneral : status.Int(); - server.Close(); - } - return ret; - } - -// ---------------------------------------------------- -// RXcapCache::IsRunning -// -// ---------------------------------------------------- -// -TBool RXcapCache::IsRunning() - { - TFindServer findServer( KXcapCacheServerName ); - TFullName name; - return ( findServer.Next( name ) == KErrNone ); - } - -// End of File - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Client/src/XcapCacheClient.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Client/src/XcapCacheClient.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheClient -* -*/ - - - -#include -#include "XcapCache.h" -#include "CommonDefines.h" -#include "XcapCacheClient.h" - -//CLASS DECLARATION -CXcapCacheClient::CXcapCacheClient( RXcapCache& aCacheMain ) : - CActive( EPriorityStandard ), - iClientMain( aCacheMain ) - { - CActiveScheduler::Add( this ); - } - -// ---------------------------------------------------- -// CXcapCacheClient::Store -// -// ---------------------------------------------------- -// -void CXcapCacheClient::Reset() - { - #ifdef _DEBUG - RXcapCache::WriteToLog( _L8( "CXcapCacheClient::Reset()" ) ); - #endif - } - -// ---------------------------------------------------- -// CXcapCacheClient::SendMessageL -// -// ---------------------------------------------------- -// -void CXcapCacheClient::ReceiveAsync( TRequestStatus& aStatus ) - { - iClientStatus = &aStatus; - aStatus = KRequestPending; - SetActive(); - } - -// ---------------------------------------------------- -// CXcapCacheClient::RunL -// -// ---------------------------------------------------- -// -void CXcapCacheClient::RunL() - { - - } - -// ---------------------------------------------------- -// CXcapCacheClient::DoCancel -// -// ---------------------------------------------------- -// -void CXcapCacheClient::DoCancel() - { - - } - -// End of File - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/BWINSCW/XcapCacheServerU.DEF --- a/xdmprotocols/XcapProtocol/XcapCache/Server/BWINSCW/XcapCacheServerU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -EXPORTS - ?StartThread@CXcapCacheServer@@SAHXZ @ 1 NONAME ; int CXcapCacheServer::StartThread(void) - ?WriteToLog@CXcapCacheServer@@SAXV?$TRefByValue@$$CBVTDesC8@@@@ZZ @ 2 NONAME ; void CXcapCacheServer::WriteToLog(class TRefByValue, ...) - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/eabi/XcapCacheServerU.DEF --- a/xdmprotocols/XcapProtocol/XcapCache/Server/eabi/XcapCacheServerU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -EXPORTS - _ZN16CXcapCacheServer10WriteToLogE11TRefByValueIK6TDesC8Ez @ 1 NONAME - _ZN16CXcapCacheServer11StartThreadEv @ 2 NONAME - _ZTI16CXcapCacheServer @ 3 NONAME ; ## - _ZTV16CXcapCacheServer @ 4 NONAME ; ## - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/group/XcapCache.mmp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/group/XcapCache.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapCache.mmp -* XcapCache.exe from XcapCache.mmp -* -*/ - - - -#include - -TARGET xcapcache.exe -TARGETTYPE exe -UID 0 0x10207421 -CAPABILITY CAP_SERVER -VENDORID VID_DEFAULT - -SOURCEPATH ../src - -SOURCE XcapCacheIndex.cpp -SOURCE XcapCacheServer.cpp -SOURCE XcapCacheSession.cpp -SOURCE XcapShutdownTimer.cpp -SOURCE XcapCacheIndexAdmin.cpp -SOURCE XcapCacheIndexEntry.cpp -SOURCE XcapCacheServerMain.cpp -SOURCE XcapCacheEntryProperty.cpp -SOURCE XcapCacheIndexTableEntry.cpp - -USERINCLUDE ../inc -USERINCLUDE ../../inc - -MW_LAYER_SYSTEMINCLUDE - -LIBRARY bafl.lib -LIBRARY euser.lib -LIBRARY efsrv.lib -LIBRARY flogger.lib -LIBRARY centralrepository.lib - -EPOCSTACKSIZE 0x8000 diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/group/bld.inf --- a/xdmprotocols/XcapProtocol/XcapCache/Server/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapCache bld.inf -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- -XcapCache.mmp - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/ServerDefines.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/ServerDefines.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2005 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: XCapServerDefines -* -*/ - - - - -#ifndef __SERVERDEFINES_H__ -#define __SERVERDEFINES_H__ - -#include - -const TInt KPageFilePosSeparator = 32; -_LIT8( KPageFileSeparator, " " ); -_LIT8( KIndexFileEndOfLine, "\r\n" ); -_LIT8( KIndexFileEndOfEntry, "\r\n\r\n" ); -_LIT8( KValuePropertySeparator, "=" ); -_LIT8( KValueFieldSeparator, ";" ); - -//Array of characters available for random string creation -const TInt KRandomStringCharArray[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, - 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, - 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, - 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x30, 0x31, - 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, - 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, - 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, - 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A }; - -const TReal KDefaultCompression = 0.75; -const TInt KRandStringLength = 20; -const TInt KDateMaxSize = 100; -const TInt KDateTimeMaxSize = 200; -_LIT( KDateFormatFileName, "%1%2%3"); -_LIT( KTimeFormatFileName, "%H%T%S"); -_LIT( KCacheDateFormat, "%1-%2-%3"); -_LIT( KCacheTimeFormat, "%H:%T:%S"); -_LIT( KDateTimeFormat, "%D%M%Y%/0%1%/1%2%/2%3%/3 %:0%H%:1%T%:2%S"); - - - -#endif // #ifndef __SERVERDEFINES_H__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheEntryProperty.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheEntryProperty.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheEntryProperty -* -*/ - - - - -#ifndef __XCAPCACHEINDEXPROPERTY_H__ -#define __XCAPCACHEINDEXPROPERTY_H__ - -// INCLUDES -#include -#include "CommonDefines.h" - -//FORWARD DECLARATIONs - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapCacheEntryProperty ) : public CBase - { - public: // Constructors and destructor - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - static CXcapCacheEntryProperty* NewL( TInt aPropertyName, - const TDesC8& aPropertyValue ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt IntValue() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TTime TimeValue() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TPtrC DesValue16() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TPtrC8 DesValue8() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt Name() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - ~CXcapCacheEntryProperty(); - - private: - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ConstructL( const TDesC8& aPropertyValue ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheEntryProperty( TInt aPropertyName ); - - private: // Data - - HBufC* iPropertyValue16; - HBufC8* iPropertyValue8; - const TInt iPropertyName; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheIndex.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheIndex.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheIndex -* -*/ - - - - -#ifndef __XCAPCACHEINDEX_H__ -#define __XCAPCACHEINDEX_H__ - -// INCLUDES -#include -#include -#include "CommonDefines.h" - -//FORWARD DECLARATIONs -class CXcapCacheIndexEntry; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapCacheIndex ) : public CBase - { - public: // Constructors and destructor - - /** - * Returns Cache Index - * @return Created Cache Index - */ - static CXcapCacheIndex* NewL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - static TInt Compare( const CXcapCacheIndexEntry& aFirst, - const CXcapCacheIndexEntry& aSecond ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt UpdateIndexL( const CXcapCacheIndexEntry* aEntry ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheIndexEntry* Entry( TInt aIndex ) const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt EntryCount() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void SortEntriesL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void RemoveEntry( TInt aIndex ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void StoreCacheDataL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - ~CXcapCacheIndex(); - - private: - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheIndex(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ConstructL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - RFile InitialiseIndexL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ReadEntriesL( TPtr8& aIndexData ); - - private: // Data - - RPointerArray iEntryList; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheIndexAdmin.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheIndexAdmin.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheIndexAdmin -* -*/ - - - - -#ifndef __XCAPCACHEINDEXADMIN_H__ -#define __XCAPCACHEINDEXADMIN_H__ - -// INCLUDES -#include -#include -#include "CommonDefines.h" - -//CONSTANTS - -//FORWARD DECLARATIONs -class CXcapCacheIndexTableEntry; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapCacheIndexAdmin ) : public CBase - { - public: // Constructors and destructor - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - static CXcapCacheIndexAdmin* NewL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void UpdateIndexTableL( TInt aIndex, const TCacheEntryInfo* aStorageHeader ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheIndexTableEntry* FindL( TInt& aTableIndex, - const TDesC8& aRootUri, - const TDesC& aDocumentUri ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt ReadIndexL( const CXcapCacheIndexTableEntry& aEntry ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void RemoveTableIndex( TInt aIndex ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void StoreIndexTableL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - ~CXcapCacheIndexAdmin(); - - private: - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ConstructL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheIndexAdmin(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - RFile InitialisePageFileL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ReadEntriesL( TPtr8& aDataDesc ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheIndexTableEntry* ParseOneEntryL( const TDesC8& aEntryData ); - - private: // Data - - RPointerArray iEntryList; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheIndexEntry.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheIndexEntry.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,197 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheIndexEntry -* -*/ - - - - -#ifndef __XCAPCACHEINDEXENTRY_H__ -#define __XCAPCACHEINDEXENTRY_H__ - -// INCLUDES -#include -#include -//#include "XcapCacheClient.h" - -//CONSTANTS -const TUint KCacheEntryETag = 0; -const TUint KCacheXmlSize = 1; -const TUint KCacheXmlFile = 2; -const TUint KCacheLastAccess = 3; -const TUint KCacheLastModified = 4; - -//ENUMS -enum TCacheIndexEntry - { - EEntryETag = KCacheEntryETag, - EEntryXmlSize = KCacheXmlSize, - EEntryXmlFile = KCacheXmlFile, - EEntryLastAccess = KCacheLastAccess, - EEntryLastModified = KCacheLastModified - }; - -//Specifies the cache file "protocol" -const TText8* const KCacheEntryArray[] = { _S8( "etag" ), - _S8( "size" ), - _S8( "file" ), - _S8( "access" ), - _S8( "modify" ) - }; - -//FORWARD DECLARATIONs -class CXcapCacheEntryProperty; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapCacheIndexEntry ) : public CBase - { - public: // Constructors and destructor - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - static CXcapCacheIndexEntry* NewL( const TCacheEntryInfo* aHeader ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - static CXcapCacheIndexEntry* NewL( TPtr8& aEntryData ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void UpdateEntryL( const TCacheEntryInfo* aHeader ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TTime LastAccess() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TTime LastModified() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt XmlSize() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TPtrC8 ETag() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TPtrC8 FileNameL() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TPtrC FileName16L() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - HBufC8* PrintLC() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - ~CXcapCacheIndexEntry(); - - private: - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ConstructL( const TCacheEntryInfo* aHeader ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ConstructL( TPtr8& aEntryData ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheIndexEntry(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheEntryProperty* CreatePropertyL( const TInt aPropertyName, - const TDesC8& aPropertyValue ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void CreateFromHeaderL( const TCacheEntryInfo* aHeader ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - const CXcapCacheEntryProperty& FindProperty( const TInt aPropId ) const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt FindPropNameId( const TDesC8& aNameString ) const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - HBufC8* HourStringLC(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void DeleteFileL( const TDesC8& aFileName ); - - /** - * Second-phase constructor. - */ - HBufC8* StoreXmlFileLC( const TDesC8& aXmlData ); - - private: // Data - - RPointerArray iPropertyList; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheIndexTableEntry.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheIndexTableEntry.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,139 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheIndexTableEntry -* -*/ - - - - -#ifndef __XCAPCACHEINDEXTABLEENTRY_H__ -#define __XCAPCACHEINDEXTABLEENTRY_H__ - -// INCLUDES -#include -#include "CommonDefines.h" - -//CONSTANTS - -//FORWARD DECLARATIONs - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapCacheIndexTableEntry ) : public CBase - { - public: // Constructors and destructor - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - static CXcapCacheIndexTableEntry* NewL( const TInt aEntryIndex, - const TDesC8& aRootUri, - const TDesC& aDocumentUri ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - static CXcapCacheIndexTableEntry* NewL( const TInt aEntryIndex, - const TDesC8& aRootUri, - const TDesC8& aDocumentUri ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - static CXcapCacheIndexTableEntry* NewL( const TDesC8& aRootUri, - const TDesC& aDocumentUri ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TPtrC8 RootUri() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TPtrC8 DocumentUri() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void Increase(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void Decrease(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TBool operator==( const CXcapCacheIndexTableEntry& aEntry ) const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt Index() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - ~CXcapCacheIndexTableEntry(); - - private: - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheIndexTableEntry(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ConstructL( const TDesC8& aRootUri, - const TDesC& aDocumentUri ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ConstructL( const TDesC8& aRootUri, - const TDesC8& aDocumentUri ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheIndexTableEntry( const TInt aEntryIndex ); - - private: // Data - - TInt iEntryIndex; - HBufC8* iRootUri; - HBufC8* iDocumentUri; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheServer.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheServer.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheServer -* -*/ - - - - -#ifndef __XCAPCACHESERVER_H__ -#define __XCAPCACHESERVER_H__ - -// INCLUDES -#include -#include -#include "ServerDefines.h" -#include "CommonDefines.h" -#include "XcapShutdownTimer.h" - -//CONSTANTS -_LIT( KCacheServerRoot, "C:\\private\\10207421\\" ); -_LIT( KCacheServerIndex, "C:\\private\\10207421\\index.ch" ); -_LIT( KCacheServerPageFile, "C:\\private\\10207421\\pagefile.ch" ); -_LIT( KCacheServerIndexF, "index.ch" ); -_LIT( KCacheServerPageFileF, "pagefile.ch" ); - -_LIT( KCacheServerLogDir, "XDM" ); -_LIT( KCacheServerLogFile, "CacheServer.txt" ); -const TUint KAppDefaultHeapSize = 0x10000; - -//FORWARD DECLARATIONs -class CXcapCacheIndex; -class CXcapCacheIndexAdmin; - -// CLASS DECLARATION -class CXcapCacheServer : public CServer2 - { - public: // Constructors and destructor - - /** - * Returns KErrNone - * @return TInt System wide error code - */ - IMPORT_C static TInt StartThreadL(); - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - IMPORT_C static void WriteToLog( TRefByValue aFmt,... ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - static CServer2* NewLC( void ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - virtual CSession2* NewSessionL( const TVersion& aVersion, - const RMessage2& /*aMessage*/ ) const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - RFs* Session(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt CacheSize( TInt& aEntryCount ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - TInt MaxCacheSize() const; - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - ~CXcapCacheServer(); - - public: //static - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - static RFs& FileSession(); - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - static CXcapCacheIndex* Index(); - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - static CXcapCacheIndexAdmin* IndexAdmin(); - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - static TInt ConvertDesc( const TDesC8& aNumberDesc ); - - /** - * A function to handle descriptor data. - * @return Date in heap descriptor - */ - static HBufC* DateL(); - - /** - * A function to handle descriptor data. - * @return Time in heap descriptor - */ - static HBufC* TimeL(); - - /** - * A function to handle descriptor data. - * @return Random string heap descriptor - */ - static HBufC* RandomStringL(); - - /** - * A function to handle descriptor data. - * @return Date and time heap descriptor - */ - static HBufC* DateTimeL(); - - /** - * A function to handle descriptor data. - * @return Date and time heap descriptor - */ - static HBufC* DateTimeL( const TTime& aTime ); - - /** - * A function to handle descriptor data. - * @param aCommand command to be handled - */ - static TPtr8 DescriptorCast( const TDesC8& aConstData ); - - private: - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapCacheServer( TInt aPriority ); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ConstructL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ReadMaxCacheSizeL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void AddSession(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void DropSession(); - - private: // Data - - RFs iFileSession; - TInt iMaxCacheSize; - TUint iSessionCount; - CDir* iCacheDirectory; - CXcapShutdownTimer iShutdownTimer; - friend class CXcapCacheSession; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheServerMain.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheServerMain.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapCacheServerMain -* -*/ - - - - -#ifndef __XCAPCACHESERVERMAIN_H__ -#define __XCAPCACHESERVERMAIN_H__ - -// INCLUDES -#include -#include - -class CXcapCacheIndex; -class CXcapCacheIndexAdmin; - -RFs FsSession; -CXcapCacheIndex* CacheIndex = NULL; -CXcapCacheIndexAdmin* CacheIndexAdmin = NULL; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheSession.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapCacheSession.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,227 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheSession -* -*/ - - - - -#ifndef __XCAPCACHESESSION_H__ -#define __XCAPCACHESESSION_H__ - -// INCLUDES -#include -#include -#include -#include -#include "XcapCacheServer.h" - -class MDesC16Array; -class CXcapCacheIndex; -class CXcapCacheIndexAdmin; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapCacheSession ) : public CSession2 - { - public: // Constructors and destructor - - /** - * Symbian OS default constructor - * - * @param CXcapCacheServer Pointer to the server object - * @return CXcapCacheSession* New session object - */ - static CXcapCacheSession* NewL( CXcapCacheServer* aServer ); - - /** - * Service a request - * - * @param RMessage& Kernel message - * @return void - */ - virtual void ServiceL ( const RMessage2& aMessage ); - - /** - * Destructor. - */ - virtual ~CXcapCacheSession(); - - private: - - /** - * Second-phase constructor - * - * @return void - */ - void ConstructL(); - - /** - * C++ default constructor is private. - * - * @param CXcapCacheServer Pointer to the server object - * @return CXcapCacheSession New session object - */ - CXcapCacheSession( CXcapCacheServer* aServer ); - - /** - * Check the capabilities of the connecting client - * - * @param RMessage2& Kernel message - * @return TBool Does the client have proper capabilities - */ - TBool Capabilities( const RMessage2& aMessage ); - - /** - * Panic the client - * - * @param TInt Panic code - * @return void - */ - void PanicClient( TInt aPanic ); - - /** - * Dispatch the client's request - * - * @param RMessage2& Kernel message - * @return void - */ - void DispatchMessageL( const RMessage2& aMessage ); - - /** - * Fetch the meta information for a document - * - * @param RMessage2& Kernel message - * @return void - */ - void FetchDocumentInfoL( const RMessage2& aMessage ); - - /** - * Fetch the contents of a document - * - * @param RMessage2& Kernel message - * @return void - */ - void FetchDocumentContentsL( const RMessage2& aMessage ); - - /** - * Store a document - * - * @param RMessage2& Kernel message - * @return void - */ - void CacheXcapDataL( const RMessage2& aMessage ); - - /** - * Delete a document from the cache - * - * @param RMessage2& Kernel message - * @return void - */ - void DeleteCacheDataL( const RMessage2& aMessage ); - - /** - * Check the currency of a document - * - * @param RMessage2& Kernel message - * @return void - */ - void CheckValidityL( const RMessage2& aMessage ); - - /** - * Externalize the meta information - * - * @return void - */ - void FlushCacheDataL(); - - /** - * Delete unindexed documents from the cache - * - * @param MDesC16Array Indexed documents - * @return void - */ - void DeleteExcessL( const MDesC16Array& aIndexedEntries ); - - /** - * Check for unindexed entries in the cache - * - * @param TInt Total number of documents in the cache - * @return void - */ - void CheckUnindexedEntriesL( TInt aTotalCount ); - - /** - * Check whether the "aFileName" document is indexed - * - * @param MDesC16Array& The indexed entries - * @param TDesC& Name of the dile to be checked - * @return TBool Is the document indexed - */ - TBool IsIndexed( const MDesC16Array& aIndexedEntries, const TDesC& aFileName ); - - /** - * Read the specified parameter from the kernel message - * - * @param TInt The parameter to be read - * @param RMessage2& Kernel message - * @return HBufC* The parameter data (16-bit) - */ - HBufC* ReadMsgParam16LC( TInt aMsgIndex, const RMessage2& aMessage ); - - /** - * Read the specified parameter from the kernel message - * - * @param TInt The parameter to be read - * @param RMessage2& Kernel message - * @return HBufC8* The parameter data (8-bit) - */ - HBufC8* ReadMsgParam8LC( TInt aMsgIndex, const RMessage2& aMessage ); - - /** - * Check the temporary buffer for data - * - * @return void - */ - void CheckTempBuffer(); - - /** - * Delete a named document from the store - * - * @param TDesC& Name of the document to be deleted - * @return TInt Error code - */ - TInt DeleteFromStorageL( const TDesC& aFileName ); - - /** - * Read a named document from the store - * - * @param TDesC& Name of the document to be deleted - * @return HBufC* The contents of the document - */ - HBufC8* ReadFromStorageL( const TDesC& aFileName ); - - private: //Data - - HBufC8* iTempBuffer; - CFileMan* iFileManager; - CXcapCacheServer* iCacheServer; - CXcapCacheIndex& iCacheIndex; - CXcapCacheIndexAdmin& iCacheIndexAdmin; - }; - - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapShutdownTimer.h --- a/xdmprotocols/XcapProtocol/XcapCache/Server/inc/XcapShutdownTimer.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapShutdownTimer -* -*/ - - - - -#ifndef __XCAPSHUTDOWNTIMER__ -#define __XCAPSHUTDOWNTIMER__ - -NONSHARABLE_CLASS( CXcapShutdownTimer ) : public CTimer - { - public: - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - CXcapShutdownTimer(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void ConstructL(); - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void Start(); - - private: - - /** - * Returns the MIME type of the messages - * @return TPtrC8 The MIME type of the messages - */ - void RunL(); - - private: - - enum { KXcapCacheShutdownDelay = 0x200000 }; - }; - -#endif diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheEntryProperty.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheEntryProperty.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheEntryPropertyProperty from XcapCacheIndexProperty.cpp -* -*/ - - - - -// INCLUDE FILES -#include "XcapCacheServer.h" -#include "XcapCacheEntryProperty.h" - -// ---------------------------------------------------------- -// CXcapCacheEntryProperty::CXcapCacheEntryProperty -// -// ---------------------------------------------------------- -// -CXcapCacheEntryProperty::CXcapCacheEntryProperty( TInt aPropertyName ) : - iPropertyName( aPropertyName ) - { - } - -// ---------------------------------------------------------- -// CXcapCacheEntryProperty::NewL -// -// ---------------------------------------------------------- -// -CXcapCacheEntryProperty* CXcapCacheEntryProperty::NewL( TInt aPropertyName, - const TDesC8& aPropertyValue ) - { - CXcapCacheEntryProperty* self = new( ELeave ) CXcapCacheEntryProperty( aPropertyName ); - CleanupStack::PushL( self ); - self->ConstructL( aPropertyValue ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheEntryProperty::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapCacheEntryProperty::ConstructL( const TDesC8& aPropertyValue ) - { - iPropertyValue8 = aPropertyValue.AllocL(); - iPropertyValue16 = HBufC::NewL( aPropertyValue.Length() ); - iPropertyValue16->Des().Copy( aPropertyValue ); - } - -// ---------------------------------------------------------- -// CXcapCacheEntryProperty::~CXcapCacheEntryProperty -// -// ---------------------------------------------------------- -// -CXcapCacheEntryProperty::~CXcapCacheEntryProperty() - { - delete iPropertyValue8; - delete iPropertyValue16; - } - -// ---------------------------------------------------------- -// CXcapCacheEntryProperty::ConstructL -// -// ---------------------------------------------------------- -// -TInt CXcapCacheEntryProperty::Name() const - { - return iPropertyName; - } - -// ---------------------------------------------------------- -// CXcapCacheEntryProperty::ConstructL -// -// ---------------------------------------------------------- -// -TInt CXcapCacheEntryProperty::IntValue() const - { - return CXcapCacheServer::ConvertDesc( iPropertyValue8->Des() ); - } - -// ---------------------------------------------------------- -// CXcapCacheEntryProperty::ConstructL -// -// ---------------------------------------------------------- -// -TTime CXcapCacheEntryProperty::TimeValue() const - { - TTime ret; - ret.Parse( iPropertyValue16->Des() ); - return ret; - } - -// ---------------------------------------------------------- -// CXcapCacheEntryProperty::ConstructL -// -// ---------------------------------------------------------- -// -TPtrC CXcapCacheEntryProperty::DesValue16() const - { - return iPropertyValue16 != NULL ? iPropertyValue16->Des() : TPtrC(); - } - -// ---------------------------------------------------------- -// CXcapCacheEntryProperty::ConstructL -// -// ---------------------------------------------------------- -// -TPtrC8 CXcapCacheEntryProperty::DesValue8() const - { - return iPropertyValue8 != NULL ? iPropertyValue8->Des() : TPtrC8(); - } - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndex.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndex.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,268 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheIndex -* -*/ - - - - -// INCLUDE FILES -#include "ServerDefines.h" -#include "XcapCacheIndex.h" -#include "XcapCacheServer.h" -#include "XcapCacheIndexEntry.h" - -// ---------------------------------------------------------- -// CXcapCacheIndex::CXcapCacheIndex -// -// ---------------------------------------------------------- -// -CXcapCacheIndex::CXcapCacheIndex() - { - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::NewL -// -// ---------------------------------------------------------- -// -CXcapCacheIndex* CXcapCacheIndex::NewL() - { - CXcapCacheIndex* self = new( ELeave ) CXcapCacheIndex(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndex::ConstructL() - { - TInt length = 0; - RFile index = InitialiseIndexL(); - CleanupClosePushL( index ); - User::LeaveIfError( index.Size( length ) ); - if( length > 0 ) - { - HBufC8* data = HBufC8::NewLC( length ); - TPtr8 pointer( data->Des() ); - User::LeaveIfError( index.Read( pointer ) ); - ReadEntriesL( pointer ); - CleanupStack::PopAndDestroy(); //data - } - CleanupStack::PopAndDestroy(); //index - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::InitialiseIndexL -// -// ---------------------------------------------------------- -// -RFile CXcapCacheIndex::InitialiseIndexL() - { - RFile ret; - TUid process = RProcess().Identity(); - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheIndex::InitialiseIndexL() - Process: %x" ), process ) ; - #endif - TInt error = ret.Open( CXcapCacheServer::FileSession(), KCacheServerIndex, - EFileShareExclusive | EFileRead | EFileWrite ); - if( error != KErrNone ) - { - if( error == KErrPathNotFound ) - User::LeaveIfError( CXcapCacheServer::FileSession().MkDirAll( KCacheServerRoot ) ); - User::LeaveIfError( ret.Create( CXcapCacheServer::FileSession(), KCacheServerIndex, - EFileShareExclusive | EFileRead | EFileWrite ) ); - } - return ret; - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::~CXcapCacheIndex -// -// ---------------------------------------------------------- -// -CXcapCacheIndex::~CXcapCacheIndex() - { - iEntryList.ResetAndDestroy(); - iEntryList.Close(); - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::ConstructL -// -// ---------------------------------------------------------- -// -TInt CXcapCacheIndex::UpdateIndexL( const CXcapCacheIndexEntry* aEntry ) - { - if( aEntry != NULL ) - { - User::LeaveIfError( iEntryList.Append( aEntry ) ); - return iEntryList.Find( aEntry ); - } - else return KErrNotFound; - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::Entry -// -// ---------------------------------------------------------- -// -CXcapCacheIndexEntry* CXcapCacheIndex::Entry( TInt aIndex ) const - { - TInt count = iEntryList.Count(); - CXcapCacheIndexEntry* entry = NULL; - if( count > 0 && aIndex >= 0 && aIndex < count ) - entry = iEntryList[aIndex]; - return entry; - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::EntryCount -// -// ---------------------------------------------------------- -// -TInt CXcapCacheIndex::EntryCount() const - { - return iEntryList.Count(); - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::Compare -// -// ---------------------------------------------------------- -// -TInt CXcapCacheIndex::Compare( const CXcapCacheIndexEntry& aFirst, - const CXcapCacheIndexEntry& aSecond ) - { - if( aFirst.LastModified() == aSecond.LastModified() ) - return 0; - else if( aFirst.LastModified() > aSecond.LastModified() ) - return 1; - else return -1; - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::SortEntries -// -// ---------------------------------------------------------- -// -void CXcapCacheIndex::SortEntriesL() - { - TLinearOrder order( CXcapCacheIndex::Compare ); - iEntryList.Sort( order ); - #ifdef _DEBUG - TPtrC8 entryDesc; - TInt count = iEntryList.Count(); - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheIndex::SortEntriesL()" ) ); - CXcapCacheServer::WriteToLog( _L8( "------------------------------------------" ) ); - CXcapCacheServer::WriteToLog( _L8( " Sorted list:" ) ); - for( TInt i = 0;i < count;i++ ) - { - HBufC* buffer = NULL; - buffer = CXcapCacheServer::DateTimeL( iEntryList[i]->LastModified() ); - TBuf8 printBuffer( _L8( " " ) ); - printBuffer.AppendFormat( _L8( "%d: " ), i ); - printBuffer.Append( *buffer ); - CXcapCacheServer::WriteToLog( printBuffer ); - } - CXcapCacheServer::WriteToLog( _L8( "------------------------------------------" ) ); - #endif - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::RemoveEntry -// -// ---------------------------------------------------------- -// -void CXcapCacheIndex::RemoveEntry( TInt aIndex ) - { - TInt count = iEntryList.Count(); - if( count > 0 && aIndex >= 0 && aIndex < count ) - { - CXcapCacheIndexEntry* entry = iEntryList[aIndex]; - iEntryList.Remove( aIndex ); - delete entry; - entry = NULL; - } - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::ReadEntriesL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndex::ReadEntriesL( TPtr8& aIndexData ) - { - TBool finished = EFalse; - while( !finished && aIndexData.Length() > 0 ) - { - //If we find that there is still more data, but no \r\n - //to denote the end of an entry, simply quit. The data - //format has most probably been corrupted at some point. - TInt entryIndex = aIndexData.FindF( KIndexFileEndOfLine ); - if( entryIndex > 0 ) - { - TPtr8 entryData = CXcapCacheServer::DescriptorCast( - aIndexData.Left( entryIndex ) ); - CXcapCacheIndexEntry* entry = CXcapCacheIndexEntry::NewL( entryData ); - CleanupStack::PushL( entry ); - User::LeaveIfError( iEntryList.Append( entry ) ); - CleanupStack::Pop(); - aIndexData.Delete( 0, entryIndex + 2 ); - } - else finished = ETrue; - } - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndex::StoreCacheDataL() - { - RFile index; - TInt count = iEntryList.Count(); - if( count > 0 ) - { - User::LeaveIfError( index.Replace( CXcapCacheServer::FileSession(), - KCacheServerIndex, EFileWrite ) ); - CleanupClosePushL( index ); - for( TInt i = 0;i < count;i++ ) - { - CXcapCacheIndexEntry* entry = iEntryList[i]; - HBufC8* entryData = entry->PrintLC(); - if( entryData ) - { - User::LeaveIfError( index.Write( entryData->Des() ) ); - CleanupStack::PopAndDestroy(); //entryData - } - } - CleanupStack::PopAndDestroy(); //index - } - else - { - CFileMan* manager = CFileMan::NewL( CXcapCacheServer::FileSession() ); - manager->Delete( KCacheServerIndex ); - delete manager; - manager = NULL; - } - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndexAdmin.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndexAdmin.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheIndexAdmin -* -*/ - - - - -// INCLUDE FILES -#include "ServerDefines.h" -#include "XcapCacheServer.h" -#include "XcapCacheIndexAdmin.h" -#include "XcapCacheIndexTableEntry.h" - -// ---------------------------------------------------------- -// CXcapCacheIndexAdmin::CXcapCacheIndexAdmin -// -// ---------------------------------------------------------- -// -CXcapCacheIndexAdmin::CXcapCacheIndexAdmin() - { - } - -// ---------------------------------------------------------- -// CXcapCacheIndexAdmin::NewL -// -// ---------------------------------------------------------- -// -CXcapCacheIndexAdmin* CXcapCacheIndexAdmin::NewL() - { - CXcapCacheIndexAdmin* self = new( ELeave ) CXcapCacheIndexAdmin(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexAdmin::~CXcapCacheIndexAdmin -// -// ---------------------------------------------------------- -// -CXcapCacheIndexAdmin::~CXcapCacheIndexAdmin() - { - iEntryList.ResetAndDestroy(); - iEntryList.Close(); - } - -// ---------------------------------------------------------- -// CXcapCacheIndexAdmin::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexAdmin::ConstructL() - { - TInt length = 0; - RFile indexTable = InitialisePageFileL(); - CleanupClosePushL( indexTable ); - User::LeaveIfError( indexTable.Size( length ) ); - if( length > 0 ) - { - HBufC8* data = HBufC8::NewLC( length ); - TPtr8 pointer( data->Des() ); - User::LeaveIfError( indexTable.Read( pointer ) ); - ReadEntriesL( pointer ); - CleanupStack::PopAndDestroy(); //data - } - CleanupStack::PopAndDestroy(); //index - } - -// ---------------------------------------------------------- -// CXcapCacheIndex::InitialisePageFileL -// -// ---------------------------------------------------------- -// -RFile CXcapCacheIndexAdmin::InitialisePageFileL() - { - RFile ret; - TInt error = ret.Open( CXcapCacheServer::FileSession(), KCacheServerPageFile, - EFileShareExclusive | EFileRead | EFileWrite ); - //No need to check the path at this time, because needed - //directories have already been created by the CacheIndex - //object if they didn't exist before the server was launched - if( error != KErrNone ) - User::LeaveIfError( ret.Create( CXcapCacheServer::FileSession(), KCacheServerPageFile, - EFileShareExclusive | EFileRead | EFileWrite ) ); - return ret; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexAdmin::UpdateIndexTableL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexAdmin::UpdateIndexTableL( TInt aIndex, const TCacheEntryInfo* aHeader ) - { - CXcapCacheIndexTableEntry* entry = - CXcapCacheIndexTableEntry::NewL( aIndex, *aHeader->iRootUri, - *aHeader->iDocumentUri ); - CleanupStack::PushL( entry ); - User::LeaveIfError( iEntryList.Append( entry ) ); - CleanupStack::Pop(); //entry - } - -// ---------------------------------------------------------- -// CXcapCacheSession::ReadIndexL -// -// ---------------------------------------------------------- -// -TInt CXcapCacheIndexAdmin::ReadIndexL( const CXcapCacheIndexTableEntry& aEntry ) - { - TBool found = EFalse; - TInt ret = KErrNotFound; - TInt count = iEntryList.Count(); - CXcapCacheIndexTableEntry* entry = NULL; - for( TInt i = 0;!found && i < count;i++ ) - { - entry = iEntryList[i]; - if( *entry == aEntry ) - { - ret = entry->Index(); - found = ETrue; - } - } - return ret; - } - -// ---------------------------------------------------------- -// CXcapCacheSession::FindL -// -// ---------------------------------------------------------- -// -CXcapCacheIndexTableEntry* CXcapCacheIndexAdmin::FindL( TInt& aTableIndex, - const TDesC8& aRootUri, - const TDesC& aDocumentUri ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheIndexAdmin::FindL()" ) ); - #endif - TBool found = EFalse; - TInt count = iEntryList.Count(); - CXcapCacheIndexTableEntry* entry = NULL; - if( count > 0 ) - { - CXcapCacheIndexTableEntry* newEntry = CXcapCacheIndexTableEntry::NewL( - aRootUri, aDocumentUri ); - for( TInt i = 0;!found && i < count;i++ ) - { - CXcapCacheIndexTableEntry* listEntry = iEntryList[i]; - if( *newEntry == *listEntry ) - { - aTableIndex = i; - entry = iEntryList[i]; - found = ETrue; - } - } - delete newEntry; - newEntry = NULL; - } - return entry; - } - -// ---------------------------------------------------------- -// CXcapCacheSession::RemoveTableIndexL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexAdmin::RemoveTableIndex( TInt aIndex ) - { - TInt count = iEntryList.Count(); - if( count > 0 && aIndex >= 0 && aIndex < count ) - { - CXcapCacheIndexTableEntry* entry = iEntryList[aIndex]; - iEntryList.Remove( aIndex ); - delete entry; - entry = NULL; - for( TInt i = aIndex;i < count - 1;i++ ) - { - CXcapCacheIndexTableEntry* z = iEntryList[i]; - z->Decrease(); - } - } - } - -// ---------------------------------------------------------- -// CXcapCacheSession::StoreIndexTableL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexAdmin::StoreIndexTableL() - { - RFile indexTable; - TInt count = iEntryList.Count(); - if( count > 0 ) - { - TBuf8<7> numBuf; - User::LeaveIfError( indexTable.Replace( CXcapCacheServer::FileSession(), - KCacheServerPageFile, EFileWrite ) ); - CleanupClosePushL( indexTable ); - for( TInt i = 0;i < count;i++ ) - { - numBuf.AppendNum( iEntryList[i]->Index() ); - indexTable.Write( iEntryList[i]->RootUri() ); - indexTable.Write( KValueFieldSeparator ); - indexTable.Write( iEntryList[i]->DocumentUri() ); - indexTable.Write( KPageFileSeparator ); - indexTable.Write( numBuf ); - indexTable.Write( KIndexFileEndOfLine ); - numBuf.Zero(); - } - CleanupStack::PopAndDestroy(); //indexTable - } - else - { - CFileMan* manager = CFileMan::NewL( CXcapCacheServer::FileSession() ); - manager->Delete( KCacheServerPageFile ); - delete manager; - manager = NULL; - } - } - -// ---------------------------------------------------------- -// CXcapCacheSession::UpdatePageFileL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexAdmin::ReadEntriesL( TPtr8& aDataDesc ) - { - TBool finished = EFalse; - while( !finished && aDataDesc.Length() > 0 ) - { - //If we find that there is still more data, but no \r\n - //to denote the end of an entry, simply quit. The data - //format has most probably been corrupted at some point. - TInt entryIndex = aDataDesc.FindF( KIndexFileEndOfLine ); - if( entryIndex > 0 ) - { - TPtrC8 one = aDataDesc.Left( entryIndex ); - CXcapCacheIndexTableEntry* entry = ParseOneEntryL( one ); - CleanupStack::PushL( entry ); - User::LeaveIfError( iEntryList.Append( entry ) ); - CleanupStack::Pop(); - aDataDesc.Delete( 0, entryIndex + 2 ); - } - else finished = ETrue; - } - } - -// ---------------------------------------------------------- -// CXcapCacheSession::ParseOneEntryL -// -// ---------------------------------------------------------- -// -CXcapCacheIndexTableEntry* CXcapCacheIndexAdmin::ParseOneEntryL( const TDesC8& aEntryData ) - { - CXcapCacheIndexTableEntry* ret = NULL; - TInt rootIndex = aEntryData.FindF( KValueFieldSeparator ); - if( rootIndex > 0 ) - { - TPtrC8 root( aEntryData.Left( rootIndex ) ); - TInt docIndex = aEntryData.FindF( KPageFileSeparator ); - TPtrC8 doc( aEntryData.Mid( rootIndex + 1, docIndex - ( rootIndex + 1 ) ) ); - TPtrC8 pos( aEntryData.Mid( docIndex + 1, aEntryData.Length() - ( docIndex + 1 ) ) ); - TInt index( CXcapCacheServer::ConvertDesc( pos ) ); - ret = CXcapCacheIndexTableEntry::NewL( index, root, doc ); - } - return ret; - } - - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndexEntry.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndexEntry.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,410 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheIndexEntry -* -*/ - - - - -// INCLUDE FILES -#include "ServerDefines.h" -#include "XcapCacheServer.h" -#include "XcapCacheIndexEntry.h" -#include "XcapCacheEntryProperty.h" - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::CXcapCacheIndexEntry -// -// ---------------------------------------------------------- -// -CXcapCacheIndexEntry::CXcapCacheIndexEntry() - { - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::NewL -// -// ---------------------------------------------------------- -// -CXcapCacheIndexEntry* CXcapCacheIndexEntry::NewL( const TCacheEntryInfo* aHeader ) - { - CXcapCacheIndexEntry* self = new( ELeave ) CXcapCacheIndexEntry(); - CleanupStack::PushL( self ); - self->ConstructL( aHeader ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::NewL -// -// ---------------------------------------------------------- -// -CXcapCacheIndexEntry* CXcapCacheIndexEntry::NewL( TPtr8& aEntryData ) - { - CXcapCacheIndexEntry* self = new( ELeave ) CXcapCacheIndexEntry(); - CleanupStack::PushL( self ); - self->ConstructL( aEntryData ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::~CXcapCacheIndexEntry -// -// ---------------------------------------------------------- -// -CXcapCacheIndexEntry::~CXcapCacheIndexEntry() - { - iPropertyList.ResetAndDestroy(); - iPropertyList.Close(); - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexEntry::ConstructL( TPtr8& aEntryData ) - { - while( aEntryData.Length() > 0 ) - { - CXcapCacheEntryProperty* prop = NULL; - TInt index = aEntryData.FindF( KValueFieldSeparator ); - if( index > 0 ) - { - TPtrC8 propData = aEntryData.Left( index ); - TInt separator = propData.FindF( KValuePropertySeparator ); - if( separator > 0 ) - { - TPtrC8 name = propData.Left( separator ); - TPtrC8 value = propData.Right( propData.Length() - separator - 1 ); - const TInt nameId = FindPropNameId( name ); - __ASSERT_DEBUG( nameId != KErrNotFound, User::Leave( KErrCorrupt ) ); - prop = CreatePropertyL( nameId, value ); - CleanupStack::PushL( prop ); - User::LeaveIfError( iPropertyList.Append( prop ) ); - CleanupStack::Pop(); //prop - } - aEntryData.Delete( 0, index + 1 ); - } - } - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexEntry::ConstructL( const TCacheEntryInfo* aHeader ) - { - CreateFromHeaderL( aHeader ); - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::FindPropNameId -// -// ---------------------------------------------------------- -// -TInt CXcapCacheIndexEntry::FindPropNameId( const TDesC8& aNameString ) const - { - TBool found = EFalse; - TInt ret = KErrNotFound; - TInt arrayLength = sizeof( KCacheEntryArray ) / - sizeof( KCacheEntryArray[0] ); - for( TInt i = 0;!found && i < arrayLength;i++ ) - { - if( aNameString.CompareF( TPtrC8( KCacheEntryArray[i] ) ) == 0 ) - { - ret = i; - found = ETrue; - } - } - return ret; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::UpdateEntryL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexEntry::UpdateEntryL( const TCacheEntryInfo* aHeader ) - { - TTime access = LastAccess(); - DeleteFileL( FileNameL() ); - iPropertyList.ResetAndDestroy(); - CreateFromHeaderL( aHeader ); - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::DeleteFileL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexEntry::DeleteFileL( const TDesC8& aFileName ) - { - HBufC* buf = HBufC::NewLC( aFileName.Length() ); - buf->Des().Copy( aFileName ); - CFileMan* manager = CFileMan::NewL( CXcapCacheServer::FileSession() ); - CleanupStack::PushL( manager ); - TInt error = manager->Delete( buf->Des() ); - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::DeleteFileL() - Error: %d" ), error ); - #endif - CleanupStack::PopAndDestroy( 2 ); //manager, buf - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::CreatePropertyL -// -// ---------------------------------------------------------- -// -CXcapCacheEntryProperty* CXcapCacheIndexEntry::CreatePropertyL( const TInt aPropertyName, - const TDesC8& aPropertyValue ) - { - return CXcapCacheEntryProperty::NewL( aPropertyName, aPropertyValue ); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::FindProperty -// -// --------------------------------------------------------- -// -const CXcapCacheEntryProperty& CXcapCacheIndexEntry::FindProperty( const TInt aPropId ) const - { - TBool found = EFalse; - TInt count = iPropertyList.Count(); - CXcapCacheEntryProperty* property = NULL; - for( TInt i = 0;!found && i < count;i++ ) - { - property = iPropertyList[i]; - if( property->Name() == aPropId ) - found = ETrue; - } - return *property; - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::LastAccess -// -// --------------------------------------------------------- -// -TTime CXcapCacheIndexEntry::LastAccess() const - { - const CXcapCacheEntryProperty& property = FindProperty( KCacheLastAccess ); - return property.TimeValue(); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::LastModified -// -// --------------------------------------------------------- -// -TTime CXcapCacheIndexEntry::LastModified() const - { - const CXcapCacheEntryProperty& property = FindProperty( KCacheLastModified ); - return property.TimeValue(); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::XmlSize -// -// --------------------------------------------------------- -// -TInt CXcapCacheIndexEntry::XmlSize() const - { - const CXcapCacheEntryProperty& property = FindProperty( KCacheXmlSize ); - return property.IntValue(); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::FileNameL -// -// --------------------------------------------------------- -// -TPtrC8 CXcapCacheIndexEntry::FileNameL() const - { - const CXcapCacheEntryProperty& property = FindProperty( KCacheXmlFile ); - return property.DesValue8(); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::FileName16L -// -// --------------------------------------------------------- -// -TPtrC CXcapCacheIndexEntry::FileName16L() const - { - const CXcapCacheEntryProperty& property = FindProperty( KCacheXmlFile ); - return property.DesValue16(); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::ETag -// -// --------------------------------------------------------- -// -TPtrC8 CXcapCacheIndexEntry::ETag() const - { - const CXcapCacheEntryProperty& property = FindProperty( KCacheEntryETag ); - return property.DesValue8(); - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::CreateFromHeaderL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexEntry::CreateFromHeaderL( const TCacheEntryInfo* aHeader ) - { - TInt arrayLength = sizeof( KCacheEntryArray ) / - sizeof( KCacheEntryArray[0] ); - HBufC8* hour = HourStringLC(); - for( TInt i = 0;i < arrayLength;i++ ) - { - CXcapCacheEntryProperty* prop = NULL; - switch( i ) - { - case KCacheEntryETag: - prop = CreatePropertyL( KCacheEntryETag, *aHeader->iEtag ); - break; - case KCacheXmlSize: - { - TBuf8<10> sizeBuf; - sizeBuf.AppendNum( aHeader->iDataLength ); - prop = CreatePropertyL( KCacheXmlSize, sizeBuf ); - } - break; - case KCacheXmlFile: - { - HBufC8* fileName = StoreXmlFileLC( *aHeader->iRespData ); - prop = CreatePropertyL( KCacheXmlFile, fileName->Des() ); - CleanupStack::PopAndDestroy(); //fileName - } - break; - case KCacheLastAccess: - prop = CreatePropertyL( KCacheLastAccess, hour->Des() ); - break; - case KCacheLastModified: - prop = CreatePropertyL( KCacheLastModified, hour->Des() ); - break; - default: - break; - } - if( prop != NULL ) - User::LeaveIfError( iPropertyList.Append( prop ) ); - } - CleanupStack::PopAndDestroy(); //hour - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::HourStringLC -// -// ---------------------------------------------------------- -// -HBufC8* CXcapCacheIndexEntry::HourStringLC() - { - HBufC8* hourString = NULL; - HBufC* date = CXcapCacheServer::DateL(); - HBufC* time = CXcapCacheServer::TimeL(); - hourString = HBufC8::NewLC( date->Length() + time->Length() + 1 ); - TPtr8 pointer( hourString->Des() ); - pointer.Copy( *date ); - pointer.Append( KPageFileSeparator ); - pointer.Append( *time ); - delete date; - date = NULL; - delete time; - time = NULL; - return hourString; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::StoreXmlFileLC -// -// ---------------------------------------------------------- -// -HBufC8* CXcapCacheIndexEntry::StoreXmlFileLC( const TDesC8& aXmlData ) - { - RFile file; - HBufC* nameBuf = NULL; - HBufC* randomString = NULL; - TPtrC randomName( _L( "" ) ); - TInt error = KErrAlreadyExists; - //It is extremely unlikely that the random string generator - //creates two exact same patterns, but let's check for it, anyway. - while( error == KErrAlreadyExists ) - { - randomString = CXcapCacheServer::RandomStringL(); - randomName.Set( *randomString ); - nameBuf = HBufC::NewLC( KCacheServerRoot().Length() + randomName.Length() ); - nameBuf->Des().Copy( KCacheServerRoot ); - nameBuf->Des().Append( randomName ); - error = file.Create( CXcapCacheServer::FileSession(), - nameBuf->Des(), EFileWrite ); - if( error != KErrNone ) - CleanupStack::PopAndDestroy(); //nameBuf - } - file.Write( aXmlData ); - file.Close(); - __ASSERT_ALWAYS( nameBuf != NULL, User::Leave( KErrCorrupt ) ); - HBufC8* ret = HBufC8::NewLC( nameBuf->Des().Length() ); - ret->Des().Copy( nameBuf->Des() ); - CleanupStack::Pop(); //ret - CleanupStack::PopAndDestroy(); //nameBuf - CleanupStack::PushL( ret ); - return ret; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexEntry::PrintLC -// -// ---------------------------------------------------------- -// -HBufC8* CXcapCacheIndexEntry::PrintLC() const - { - TInt position = 0; - CBufFlat* buffer = NULL; - HBufC8* entryString = NULL; - TInt count = iPropertyList.Count(); - if( count > 0 ) - { - buffer = CBufFlat::NewL( 50 ); - CleanupStack::PushL( buffer ); - for( TInt i = 0;i < count;i++ ) - { - TPtrC8 name = TPtrC8( KCacheEntryArray[iPropertyList[i]->Name()] ); - TPtrC8 value = iPropertyList[i]->DesValue8(); - buffer->InsertL( position, name ); - position = position + name.Length(); - buffer->InsertL( position, KValuePropertySeparator ); - position = position + KValuePropertySeparator().Length(); - buffer->InsertL( position, value ); - position = position + value.Length(); - buffer->InsertL( position, KValueFieldSeparator ); - position = position + KValueFieldSeparator().Length(); - } - buffer->InsertL( position, KIndexFileEndOfLine ); - TPtr8 pointer( buffer->Ptr( 0 ) ); - entryString = HBufC8::NewL( pointer.Length() ); - entryString->Des().Copy( pointer ); - CleanupStack::PopAndDestroy(); //buffer - CleanupStack::PushL( entryString ); - } - return entryString; - } - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndexTableEntry.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndexTableEntry.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheIndexTableEntry -* -*/ - - - - -// INCLUDE FILES -#include "ServerDefines.h" -#include "XcapCacheServer.h" -#include "XcapCacheIndexTableEntry.h" - -// ---------------------------------------------------------- -// CXcapCacheIndexTableEntry::CXcapCacheIndexTableEntry -// -// ---------------------------------------------------------- -// -CXcapCacheIndexTableEntry::CXcapCacheIndexTableEntry() : iEntryIndex( KErrNotFound ) - { - } - -// ---------------------------------------------------------- -// CXcapCacheIndexTableEntry::CXcapCacheIndexTableEntry -// -// ---------------------------------------------------------- -// -CXcapCacheIndexTableEntry::CXcapCacheIndexTableEntry( const TInt aEntryIndex ) : - iEntryIndex( aEntryIndex ) - { - } - -// ---------------------------------------------------------- -// CXcapCacheIndexTableEntry::NewL -// -// ---------------------------------------------------------- -// -CXcapCacheIndexTableEntry* CXcapCacheIndexTableEntry::NewL( const TInt aEntryIndex, - const TDesC8& aRootUri, - const TDesC& aDocumentUri ) - { - CXcapCacheIndexTableEntry* self = new( ELeave ) CXcapCacheIndexTableEntry( aEntryIndex ); - CleanupStack::PushL( self ); - self->ConstructL( aRootUri, aDocumentUri ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexTableEntry::NewL -// -// ---------------------------------------------------------- -// -CXcapCacheIndexTableEntry* CXcapCacheIndexTableEntry::NewL( const TInt aEntryIndex, - const TDesC8& aRootUri, - const TDesC8& aDocumentUri ) - { - CXcapCacheIndexTableEntry* self = new( ELeave ) CXcapCacheIndexTableEntry( aEntryIndex ); - CleanupStack::PushL( self ); - self->ConstructL( aRootUri, aDocumentUri ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexTableEntry::NewL -// -// ---------------------------------------------------------- -// -CXcapCacheIndexTableEntry* CXcapCacheIndexTableEntry::NewL( const TDesC8& aRootUri, - const TDesC& aDocumentUri ) - { - CXcapCacheIndexTableEntry* self = new( ELeave ) CXcapCacheIndexTableEntry(); - CleanupStack::PushL( self ); - self->ConstructL( aRootUri, aDocumentUri ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexTableEntry::~CXcapCacheIndexTableEntry -// -// ---------------------------------------------------------- -// -CXcapCacheIndexTableEntry::~CXcapCacheIndexTableEntry() - { - delete iRootUri; - delete iDocumentUri; - } - -// ---------------------------------------------------------- -// CXcapCacheIndexTableEntry::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexTableEntry::ConstructL( const TDesC8& aRootUri, - const TDesC& aDocumentUri ) - { - #ifdef _DEBUG - HBufC8* eightBuffer = HBufC8::NewLC( aDocumentUri.Length() ); - TPtr8 desc( eightBuffer->Des() ); - desc.Copy( aDocumentUri ); - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheIndexTableEntry::ConstructL" ) ); - CXcapCacheServer::WriteToLog( _L8( " Root: %S" ), &aRootUri ); - CXcapCacheServer::WriteToLog( _L8( " Document: %S" ), &desc ); - CleanupStack::PopAndDestroy(); //eightBuffer - #endif - iRootUri = aRootUri.AllocL(); - iDocumentUri = HBufC8::NewL( aDocumentUri.Length() ); - iDocumentUri->Des().Copy( aDocumentUri ); - } - -// ---------------------------------------------------------- -// CXcapCacheIndexTableEntry::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapCacheIndexTableEntry::ConstructL( const TDesC8& aRootUri, - const TDesC8& aDocumentUri ) - { - #ifdef _DEBUG - HBufC8* eightBuffer = HBufC8::NewLC( aDocumentUri.Length() ); - TPtr8 desc( eightBuffer->Des() ); - desc.Copy( aDocumentUri ); - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheIndexTableEntry::ConstructL" ) ); - CXcapCacheServer::WriteToLog( _L8( " Root: %S" ), &aRootUri ); - CXcapCacheServer::WriteToLog( _L8( " Document: %S" ), &desc ); - CleanupStack::PopAndDestroy(); //eightBuffer - #endif - iRootUri = aRootUri.AllocL(); - iDocumentUri = HBufC8::NewL( aDocumentUri.Length() ); - iDocumentUri->Des().Copy( aDocumentUri ); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::EntryData -// -// --------------------------------------------------------- -// -TPtrC8 CXcapCacheIndexTableEntry::RootUri() const - { - return iRootUri != NULL ? iRootUri->Des() : TPtrC8(); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::EntryData -// -// --------------------------------------------------------- -// -TPtrC8 CXcapCacheIndexTableEntry::DocumentUri() const - { - return iDocumentUri != NULL ? iDocumentUri->Des() : TPtrC8(); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::EntryData -// -// --------------------------------------------------------- -// -void CXcapCacheIndexTableEntry::Increase() - { - iEntryIndex++; - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::EntryData -// -// --------------------------------------------------------- -// -void CXcapCacheIndexTableEntry::Decrease() - { - iEntryIndex--; - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::operator++ -// -// --------------------------------------------------------- -// -TBool CXcapCacheIndexTableEntry::operator==( const CXcapCacheIndexTableEntry& aEntry ) const - { - return ( iRootUri != NULL && iDocumentUri != NULL ) && - ( iRootUri->Des().CompareF( aEntry.RootUri() ) == 0 ) && - ( iDocumentUri->Des().CompareF( aEntry.DocumentUri() ) == 0 ); - } - -// --------------------------------------------------------- -// CXcapCacheIndexTableEntry::operator++ -// -// --------------------------------------------------------- -// -TInt CXcapCacheIndexTableEntry::Index() const - { - return iEntryIndex; - } - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheServer.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheServer.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,387 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheServer -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include "XcapCacheIndex.h" -#include "XcapCacheServer.h" -#include "XcapCacheSession.h" -#include "XcapCacheIndexAdmin.h" -#include "XcapCacheServerMain.h" - -GLDEF_C void PanicServer( TXcapCacheServerPanic aPanic ) - { - _LIT( KCacheServerPanic, "XcapCacheServer"); - User::Panic( KCacheServerPanic, aPanic ); - } - -// ---------------------------------------------------------- -// CXcapCacheServer::New -// -// ---------------------------------------------------------- -// -CServer2* CXcapCacheServer::NewLC() - { - CXcapCacheServer* self = new CXcapCacheServer( EPriorityHigh ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheServer::New -// -// ---------------------------------------------------------- -// -void CXcapCacheServer::ConstructL() - { - ReadMaxCacheSizeL(); - User::LeaveIfError( iFileSession.Connect() ); - StartL( KXcapCacheServerLib ); - iShutdownTimer.ConstructL(); - iShutdownTimer.Start(); - } - -// ---------------------------------------------------------- -// CXcapCacheServer::NewSessionL -// -// ---------------------------------------------------------- -// -CSession2* CXcapCacheServer::NewSessionL( const TVersion& aVersion, - const RMessage2& /*aMessage*/ ) const - { - // Check version number of API against our known version number. - TVersion thisVersion( KCacheServerMajorVersionNumber, - KCacheServerMinorVersionNumber, - KCacheServerBuildVersionNumber ); - if( !User::QueryVersionSupported( thisVersion, aVersion ) ) - User::Leave( KErrNotSupported ); - return CXcapCacheSession::NewL( ( CXcapCacheServer* )this ); - } - -// ---------------------------------------------------------- -// CXcapCacheServer::CXcapCacheServer -// -// ---------------------------------------------------------- -// -CXcapCacheServer::~CXcapCacheServer() - { - iFileSession.Close(); - } - -// ---------------------------------------------------------- -// CXcapCacheServer::ReadMaxCacheSizeL -// -// ---------------------------------------------------------- -// -void CXcapCacheServer::ReadMaxCacheSizeL() - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::ReadMaxCacheSizeL()" ) ); - #endif - CRepository* repository = CRepository::NewL( KCRUIDXDMEngineXcapLocal ); - CleanupStack::PushL( repository ); - TInt error = repository->Get( KXDMXcapCacheSize, iMaxCacheSize ); - //If something went wrong, just use 30 KB as a default value - if( error != KErrNone ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "Reading from CenRep failed: %d => Default to 30 KB" ), error ); - #endif - iMaxCacheSize = 30000; - } - else - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( " Max cache size is %d KB" ), iMaxCacheSize ); - #endif - iMaxCacheSize = iMaxCacheSize * 1000; - } - CleanupStack::PopAndDestroy(); //repository - } - -// ---------------------------------------------------------- -// CXcapCacheServer::CXcapCacheServer -// -// ---------------------------------------------------------- -// -CXcapCacheServer::CXcapCacheServer( TInt aPriority ) : CServer2( aPriority ) - { - } - -// ---------------------------------------------------------- -// CXcapCacheServer::AddSession -// -// ---------------------------------------------------------- -// -void CXcapCacheServer::AddSession() - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::AddSession()" ) ); - #endif - ++iSessionCount; - iShutdownTimer.Cancel(); - } - -// ---------------------------------------------------------- -// CXcapCacheServer::DropSession -// -// ---------------------------------------------------------- -// -void CXcapCacheServer::DropSession() - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::DropSession()" ) ); - #endif - if( --iSessionCount == 0 ) - CActiveScheduler::Stop(); - } - -// ---------------------------------------------------------- -// CXcapCacheServer::ConvertDesc -// -// ---------------------------------------------------------- -// -TInt CXcapCacheServer::ConvertDesc( const TDesC8& aNumberDesc ) - { - TInt ret = 0; - TLex8 lex( aNumberDesc ); - TInt error = lex.Val( ret ); - return error == KErrNone ? ret : error; - } - -// --------------------------------------------------------- -// CXcapCacheServer::DateL -// -// --------------------------------------------------------- -// -HBufC* CXcapCacheServer::DateL() - { - TTime time; - TBuf dateBuffer; - dateBuffer.SetLength( 0 ); - time.HomeTime(); - time.FormatL( dateBuffer, KCacheDateFormat ); - HBufC* heapDate = dateBuffer.AllocL(); - return heapDate; - } - -// --------------------------------------------------------- -// CXcapCacheServer::DateTimeL -// -// --------------------------------------------------------- -// -HBufC* CXcapCacheServer::DateTimeL() - { - TTime time; - TBuf dateBuffer; - time.HomeTime(); - time.FormatL( dateBuffer, KDateFormatFileName ); - TBuf timeBuffer; - time.HomeTime(); - time.FormatL( timeBuffer, KTimeFormatFileName ); - TBuf buffer; - buffer.SetLength( 0 ); - buffer.Copy( dateBuffer ); - buffer.Append( timeBuffer ); - HBufC* ret = HBufC::NewL( buffer.Length() ); - ret->Des().Copy( buffer ); - return ret; - } - -// --------------------------------------------------------- -// CXcapCacheServer::DateTimeL -// -// --------------------------------------------------------- -// -HBufC* CXcapCacheServer::DateTimeL( const TTime& aTime ) - { - TBuf dateTimeBuffer; - aTime.FormatL( dateTimeBuffer, KDateTimeFormat ); - HBufC* heapDateTime = dateTimeBuffer.AllocL(); - return heapDateTime; - } - -// ---------------------------------------------------------- -// CXcapCacheServer::MaxCacheSize -// -// ---------------------------------------------------------- -// -TInt CXcapCacheServer::MaxCacheSize() const - { - return iMaxCacheSize; - } - -// --------------------------------------------------------- -// CXcapCacheServer::CacheSize -// -// --------------------------------------------------------- -// -TInt CXcapCacheServer::CacheSize( TInt& aEntryCount ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::CacheSize()" ) ); - #endif - TInt total = 0; - TInt entryCount = 0; - CDir* directory = NULL; - User::LeaveIfError( iFileSession.GetDir( KCacheServerRoot, KEntryAttNormal, - ESortNone, directory ) ); - CleanupStack::PushL( directory ); - entryCount = directory->Count(); - for( TInt i = 0;i < entryCount;i++ ) - total = total + ( *directory )[i].iSize; - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( " Entries: %d " ), entryCount ); - CXcapCacheServer::WriteToLog( _L8( " Total size: %d bytes" ), total ); - #endif - CleanupStack::PopAndDestroy(); - aEntryCount = entryCount; - return total; - } - -// --------------------------------------------------------- -// CXcapCacheServer::RandomStringL -// -// --------------------------------------------------------- -// -HBufC* CXcapCacheServer::RandomStringL() - { - const TInt charCount( sizeof( KRandomStringCharArray ) / sizeof( TInt ) ); - TBuf buffer; - buffer.Zero(); - for( TInt i = 0; i < KRandStringLength;i++ ) - { - TInt index = Math::Random() % charCount; - buffer.Append( ( TChar )KRandomStringCharArray[index] ); - } - HBufC* randomHeapBuffer = buffer.AllocL(); - return randomHeapBuffer; - } - -// --------------------------------------------------------- -// CXcapCacheServer::TimeL -// -// --------------------------------------------------------- -// -HBufC* CXcapCacheServer::TimeL() - { - TTime time; - TBuf timeBuffer; - timeBuffer.SetLength( 0 ); - time.HomeTime(); - time.FormatL( timeBuffer, KCacheTimeFormat ); - HBufC* heapTime = timeBuffer.AllocL(); - return heapTime; - } - -// --------------------------------------------------------- -// CXcapCacheServer::DescriptorCast -// -// --------------------------------------------------------- -// -TPtr8 CXcapCacheServer::DescriptorCast( const TDesC8& aConstData ) - { - TInt length = aConstData.Length(); - TPtr8 constCast( CONST_CAST( TUint8*, aConstData.Ptr() ), length, length ); - constCast.TrimAll(); - return constCast; - } - -// ---------------------------------------------------- -// CXcapCacheServer::FileSession -// -// ---------------------------------------------------- -// -RFs& CXcapCacheServer::FileSession() - { - return FsSession; - } - -// ---------------------------------------------------- -// CXcapCacheServer::FileSession -// -// ---------------------------------------------------- -// -CXcapCacheIndex* CXcapCacheServer::Index() - { - return CacheIndex; - } - -// ---------------------------------------------------- -// CXcapCacheServer::FileSession -// -// ---------------------------------------------------- -// -CXcapCacheIndexAdmin* CXcapCacheServer::IndexAdmin() - { - return CacheIndexAdmin; - } - -// ---------------------------------------------------- -// CXcapCacheServer::StartThreadL -// -// ---------------------------------------------------- -// -EXPORT_C TInt CXcapCacheServer::StartThreadL() - { - User::LeaveIfError( User::RenameThread( KXcapCacheServerName ) ); - CActiveScheduler* scheduler = new ( ELeave ) CActiveScheduler; - CleanupStack::PushL( scheduler ); - CActiveScheduler::Install( scheduler ); - User::LeaveIfError( FsSession.Connect() ); - CleanupClosePushL( FsSession ); - CXcapCacheServer::NewLC(); - CacheIndex = CXcapCacheIndex::NewL(); - CleanupStack::PushL( CacheIndex ); - CacheIndexAdmin = CXcapCacheIndexAdmin::NewL(); - CleanupStack::PushL( CacheIndexAdmin ); - RProcess::Rendezvous( KErrNone ); - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "XcapCacheServer fully running" ) ); - #endif - CActiveScheduler::Start(); - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "XcapCacheServer closing..." ) ); - #endif - CleanupStack::PopAndDestroy( 5 ); //CacheIndexAdmin, CacheIndex, server, FsSession, scheduler - return KErrNone; - } - -// ---------------------------------------------------- -// CXcapCacheServer::WriteToLog -// -// ---------------------------------------------------- -// -EXPORT_C void CXcapCacheServer::WriteToLog( TRefByValue aFmt,... ) - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - RFileLogger::Write( KCacheServerLogDir, KCacheServerLogFile, EFileLoggingModeAppend, buf ); - RDebug::RawPrint( buf ); - } - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheServerMain.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheServerMain.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapCacheServerMain.cpp -* -*/ - - - -#include "XcapCacheServer.h" - -// ---------------------------------------------------------- -// DeleteLogFiles -// -// ---------------------------------------------------------- -// -TInt DeleteLogFileL() - { - RFs session; - TInt error = session.Connect(); - if( error == KErrNone ) - { - CFileMan* manager = CFileMan::NewL( session ); - error = manager->Delete( _L( "C:\\logs\\XDM\\CacheServer.txt" ) ); - session.Close(); - delete manager; - manager = NULL; - } - return error; - } - -// ---------------------------------------------------------- -// E32Main -// -// ---------------------------------------------------------- -// -GLDEF_C TInt E32Main() - { - __UHEAP_MARK; - TInt error = KErrNoMemory; - CTrapCleanup* cleanup = CTrapCleanup::New(); - #ifdef _DEBUG - TRAPD( logErr, DeleteLogFileL() ); - TBuf8 exe; - TFileName name( RProcess().FileName() ); - exe.Copy( name ); - CXcapCacheServer::WriteToLog( _L8( "*** E32Main(): Exe loaded from %S - Log deletion: %d"), - &exe, logErr ); - #endif - if( cleanup ) - { - TRAP( error, CXcapCacheServer::StartThreadL() ); - delete cleanup; - } - __UHEAP_MARKEND; - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "*** E32Main() completes: %d" ), error ); - #endif - return error; - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheSession.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheSession.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,588 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapCacheSession -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include "XcapCacheIndex.h" -#include "XcapCacheSession.h" -#include "XcapCacheIndexAdmin.h" -#include "XcapCacheIndexEntry.h" -#include "XcapCacheIndexTableEntry.h" - -// ================= MEMBER FUNCTIONS ======================= -// - -// ---------------------------------------------------------- -// CXcapCacheSession::NewL -// -// ---------------------------------------------------------- -// -CXcapCacheSession* CXcapCacheSession::NewL( CXcapCacheServer* aServer ) - { - CXcapCacheSession* self = new( ELeave ) CXcapCacheSession( aServer ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapCacheSession::~CXcapCacheSession -// -// ---------------------------------------------------------- -// -CXcapCacheSession::~CXcapCacheSession() - { - delete iFileManager; - //Reduce number of active clients within server - if( iCacheServer ) - iCacheServer->DropSession(); - } - -// ---------------------------------------------------------- -// CXcapCacheSession::ServiceL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::ServiceL( const RMessage2& aMessage ) - { - TInt ret = KErrNone; - if( Capabilities( aMessage ) ) - { - CheckTempBuffer(); - TRAPD( err, DispatchMessageL( aMessage ) ); - if( err != KErrNone ) - ret = err; - } - else ret = KErrPermissionDenied; - aMessage.Complete( ret ); - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "** Message completed - Error: %d" ), ret ); - #endif - } - -// ---------------------------------------------------------- -// CXcapCacheSession::Capabilities -// -// ---------------------------------------------------------- -// -TBool CXcapCacheSession::Capabilities( const RMessage2& aMessage ) - { - return aMessage.HasCapability( ECapabilityReadUserData ) && - aMessage.HasCapability( ECapabilityWriteUserData ); - } - -// ---------------------------------------------------------- -// CXcapCacheSession::CheckTempBuffer -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::CheckTempBuffer() - { - if( iTempBuffer ) - { - delete iTempBuffer; - iTempBuffer = NULL; - } - } - -// ---------------------------------------------------------- -// CXcapCacheSession::CXcapCacheSession -// -// ---------------------------------------------------------- -// -CXcapCacheSession::CXcapCacheSession( CXcapCacheServer* aServer ) : - iCacheServer( aServer ), - iCacheIndex( *CXcapCacheServer::Index() ), - iCacheIndexAdmin( *CXcapCacheServer::IndexAdmin() ) - { - } - -// ---------------------------------------------------------- -// CXcapCacheSession::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::ConstructL() - { - iCacheServer->AddSession(); - iFileManager = CFileMan::NewL( iCacheServer->FileSession() ); - #ifdef _DEBUG - TInt count = 0; - iCacheServer->CacheSize( count ); - #endif - } - -// ---------------------------------------------------------- -// CXcapCacheSession::PanicClient -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::PanicClient( TInt aPanic ) - { - _LIT( KTxtSessionPanic,"Test Server Session panic"); - User::Panic( KTxtSessionPanic, aPanic ); - } - -// ---------------------------------------------------------- -// CXcapCacheSession::DispatchMessageL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::DispatchMessageL( const RMessage2& aMessage ) - { - switch( aMessage.Function() ) - { - case EXcapCacheFetchInfo: - FetchDocumentInfoL( aMessage ); - break; - case EXcapCacheFetchData: - FetchDocumentContentsL( aMessage ); - break; - case EXcapCacheStore: - { - TInt entryCount = 0; - CacheXcapDataL( aMessage ); - TInt size = iCacheServer->CacheSize( entryCount ); - CheckUnindexedEntriesL( entryCount ); - //Recheck the size - size = iCacheServer->CacheSize( entryCount ); - const TInt maxSize = iCacheServer->MaxCacheSize(); - //If there's only one document filling the - //whole data area, there's not much to be done - //NOTE: Index & pagefile are always there => 3 - if( size >= maxSize && entryCount > 3 ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( " Cache too large: %d bytes" ), size ); - #endif - iCacheIndex.SortEntriesL(); - const TInt compression( iCacheServer->MaxCacheSize() * KDefaultCompression ); - //NOTE: Index & pagefile are always there -> 3 - TBool ready = EFalse; - while( entryCount > 3 && size > compression && !ready ) - { - //The entries have been sorted => FIFO - CXcapCacheIndexEntry* entry = iCacheIndex.Entry( 0 ); - if( entry ) - { - DeleteFromStorageL( entry->FileName16L() ); - iCacheIndex.RemoveEntry( 0 ); - iCacheIndexAdmin.RemoveTableIndex( 0 ); - FlushCacheDataL(); - size = iCacheServer->CacheSize( entryCount ); - } - else ready = ETrue; - } - } - } - break; - case EXcapCacheDelete: - DeleteCacheDataL( aMessage ); - break; - case EXcapCacheCheckValidity: - CheckValidityL( aMessage ); - break; - case EXcapCacheFlush: - FlushCacheDataL(); - break; - default: - PanicClient( EBadRequest ); - } - } - -// ---------------------------------------------------------- -// CXcapCacheSession::CheckUnindexedEntriesL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::CheckUnindexedEntriesL( TInt aTotalCount ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheSession::CheckUnindexedEntriesL()" ) ); - CXcapCacheServer::WriteToLog( _L8( " Total count: %d" ), aTotalCount ); - #endif - const TInt indexed = iCacheIndex.EntryCount(); - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( " Indexed entries: %d" ), indexed ); - #endif - if( aTotalCount > indexed + 2 ) //index + pagefile = 2 - { - CDesC16ArraySeg* array = new ( ELeave ) CDesC16ArraySeg( indexed ); - CleanupStack::PushL( array ); - array->AppendL( KCacheServerIndexF() ); - array->AppendL( KCacheServerPageFileF() ); - for( TInt i = 0;i < indexed;i++ ) - { - const TChar delimiter = 92; - TPtrC temp( iCacheIndex.Entry( i )->FileName16L() ); - TPtrC entry( temp.Right( temp.LocateReverse( delimiter ) + 1 ) ); - array->AppendL( entry ); - } - DeleteExcessL( *array ); - array->Reset(); - CleanupStack::PopAndDestroy(); //array - } - } - -// ---------------------------------------------------------- -// CXcapCacheSession::DeleteExcessL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::DeleteExcessL( const MDesC16Array& aIndexedEntries ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheSession::DeleteExcessL()" ) ); - #endif - CDir* directory = NULL; - RFs& session = CXcapCacheServer::FileSession(); - User::LeaveIfError( session.GetDir( KCacheServerRoot, KEntryAttNormal, - ESortNone, directory ) ); - CleanupStack::PushL( directory ); - const TInt count = directory->Count(); - for( TInt i = 0;i < count;i++ ) - { - TPtrC targetName( ( *directory )[i].iName ); - if( !IsIndexed( aIndexedEntries, targetName ) ) - { - HBufC* fileName = HBufC::NewLC( targetName.Length() + - KCacheServerRoot().Length() ); - fileName->Des().Copy( KCacheServerRoot ); - fileName->Des().Append( targetName ); - TPtrC name( fileName->Des() ); - User::LeaveIfError( iFileManager->Delete( name ) ); - CleanupStack::PopAndDestroy(); //fileName - } - } - CleanupStack::PopAndDestroy(); //directory - } - -// ---------------------------------------------------------- -// CXcapCacheSession::IsIndexed -// -// ---------------------------------------------------------- -// -TBool CXcapCacheSession::IsIndexed( const MDesC16Array& aIndexedEntries, const TDesC& aFileName ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheSession::IsIndexed()" ) ); - #endif - TBool indexed = EFalse; - const TInt count = aIndexedEntries.MdcaCount(); - for( TInt i = 0;!indexed && i < count;i++ ) - { - if( aIndexedEntries.MdcaPoint( i ).Compare( aFileName ) == 0 ) - { - indexed = ETrue; - } - } - return indexed; - } - -// ---------------------------------------------------------- -// CXcapCacheSession::ReadMsgParamLC -// -// ---------------------------------------------------------- -// -HBufC* CXcapCacheSession::ReadMsgParam16LC( TInt aMsgIndex, const RMessage2& aMessage ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::ReadMsgParam16LC()" ) ); - #endif - TInt length = aMessage.GetDesLength( aMsgIndex ); - HBufC* buffer = HBufC::NewLC( length ); - TPtr descriptor( buffer->Des() ); - aMessage.ReadL( aMsgIndex, descriptor ); - return buffer; - } - -// ---------------------------------------------------------- -// CXcapCacheSession::ReadMsgParam8LC -// -// ---------------------------------------------------------- -// -HBufC8* CXcapCacheSession::ReadMsgParam8LC( TInt aMsgIndex, const RMessage2& aMessage ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::ReadMsgParam8LC()" ) ); - #endif - TInt length = aMessage.GetDesLength( aMsgIndex ); - HBufC8* buffer = HBufC8::NewLC( length ); - TPtr8 descriptor( buffer->Des() ); - aMessage.ReadL( aMsgIndex, descriptor ); - return buffer; - } - -// ---------------------------------------------------------- -// CXcapCacheSession::CheckValidityL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::CheckValidityL( const RMessage2& aMessage ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "** CXcapCacheServer::CheckValidityL()" ) ); - #endif - TPtrC8 etag( ReadMsgParam8LC( 0, aMessage )->Des() ); - TPtrC name( ReadMsgParam16LC( 1, aMessage )->Des() ); - TPtrC8 root( ReadMsgParam8LC( 2, aMessage )->Des() ); - TInt tableIndex = KErrNotFound; - CXcapCacheIndexTableEntry* tableEntry = iCacheIndexAdmin.FindL( tableIndex, root, name ); - if( tableEntry != NULL ) - { - CXcapCacheIndexEntry* entry = iCacheIndex.Entry( tableEntry->Index() ); - User::Leave( entry->ETag().Compare( etag ) == 0 ? KErrNone : KErrGeneral ); - } - else User::Leave( KErrNotFound ); - CleanupStack::PopAndDestroy( 3 ); //root, name, etag - } - -// ---------------------------------------------------------- -// CXcapCacheSession::DeleteCacheDataL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::DeleteCacheDataL( const RMessage2& aMessage ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "** CXcapCacheServer::DeleteCacheDataL()" ) ); - #endif - TCacheEntryInfo header; - TPckg pack( header ); - aMessage.ReadL( 0, pack ); - TInt tableIndex = KErrNotFound; - CXcapCacheIndexTableEntry* tableEntry = - iCacheIndexAdmin.FindL( tableIndex, *header.iRootUri, *header.iDocumentUri ); - if( tableEntry ) - { - TInt error = KErrNone; - TInt index( tableEntry->Index() ); - CXcapCacheIndexEntry* entry = iCacheIndex.Entry( index ); - error = DeleteFromStorageL( entry->FileName16L() ); - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( - _L8( "CXcapCacheSession::DeleteCacheDataL() - error: %d"), error ); - #endif - iCacheIndex.RemoveEntry( index ); - iCacheIndexAdmin.RemoveTableIndex( tableIndex ); - FlushCacheDataL(); - } - else User::Leave( KErrNotFound ); - } - -// ---------------------------------------------------------- -// CXcapCacheSession::FetchDocumentInfoL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::FetchDocumentInfoL( const RMessage2& aMessage ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "** CXcapCacheServer::FetchDocumentInfoL()" ) ); - #endif - TInt error = KErrNone; - //Read info header - TCacheEntryInfo header; - TPckg pack( header ); - aMessage.ReadL( 0, pack ); - TPtrC name( ReadMsgParam16LC( 2, aMessage )->Des() ); - TPtrC8 root( ReadMsgParam8LC( 3, aMessage )->Des() ); - TInt tableIndex = KErrNotFound; - #ifdef _DEBUG - HBufC8* temp = HBufC8::NewLC( name.Length() ); - TPtr8 tempDesc( temp->Des() ); - tempDesc.Copy( name ); - CXcapCacheServer::WriteToLog( _L8( " Root: %S" ), &root ); - CXcapCacheServer::WriteToLog( _L8( " Document: %S" ), &tempDesc ); - CleanupStack::PopAndDestroy(); //temp - #endif - CXcapCacheIndexTableEntry* tableEntry = iCacheIndexAdmin.FindL( tableIndex, root, name ); - if( tableEntry != NULL ) - { - TInt index = tableEntry->Index(); - CXcapCacheIndexEntry* entry = iCacheIndex.Entry( index ); - TPtrC8 eTag = entry->ETag(); - header.iDataLength = entry->XmlSize(); - header.iLastAccess = entry->LastAccess(); - header.iLastUpdate = entry->LastModified(); - TPckgC package( header ); - TRAP( error, aMessage.WriteL( 0, package ) ); - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( " Write header: %d" ), error ); - #endif - TRAP( error, aMessage.WriteL( 1, eTag ) ); - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( " Write ETag: %d" ), error ); - #endif - } - else User::Leave( KErrNotFound ); - CleanupStack::PopAndDestroy( 2 ); //root, name - } - -// ---------------------------------------------------------- -// CXcapCacheSession::FetchDocumentContentsL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::FetchDocumentContentsL( const RMessage2& aMessage ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "** CXcapCacheServer::FetchDocumentContentsL()" ) ); - #endif - TPtrC name( ReadMsgParam16LC( 0, aMessage )->Des() ); - TPtrC8 root( ReadMsgParam8LC( 1, aMessage )->Des() ); - #ifdef _DEBUG - HBufC8* document = HBufC8::NewLC( name.Length() ); - TPtr8 docDesc( document->Des() ); - docDesc.Copy( name ); - CXcapCacheServer::WriteToLog( _L8( " Document: %S" ), &docDesc ); - CXcapCacheServer::WriteToLog( _L8( " Root URI: %S" ), &root ); - CleanupStack::PopAndDestroy(); //document - #endif - TInt tableIndex = KErrNotFound; - CXcapCacheIndexTableEntry* tableEntry = iCacheIndexAdmin.FindL( tableIndex, root, name ); - if( tableEntry != NULL ) - { - CXcapCacheIndexEntry* entry = iCacheIndex.Entry( tableEntry->Index() ); - iTempBuffer = ReadFromStorageL( entry->FileName16L() ); - TPtrC8 dataDesc = iTempBuffer->Des(); - aMessage.Write( 2, dataDesc ); - } - else User::Leave( KErrNotFound ); - CleanupStack::PopAndDestroy( 2 ); //name, root - } - -// ---------------------------------------------------------- -// CXcapCacheSession::CacheXcapData -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::CacheXcapDataL( const RMessage2& aMessage ) - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "** CXcapCacheServer::CacheXcapDataL()" ) ); - #endif - TPtrC doc( ReadMsgParam16LC( 0, aMessage )->Des() ); - TPtrC8 root( ReadMsgParam8LC( 1, aMessage )->Des() ); - TPtrC8 etag( ReadMsgParam8LC( 2, aMessage )->Des() ); - TPtrC8 data( ReadMsgParam8LC( 3, aMessage )->Des() ); - #ifdef _DEBUG - HBufC8* document = HBufC8::NewLC( doc.Length() ); - TPtr8 docDesc( document->Des() ); - docDesc.Copy( doc ); - CXcapCacheServer::WriteToLog( _L8( " Document: %S" ), &docDesc ); - CXcapCacheServer::WriteToLog( _L8( " ETag: %S" ), &etag ); - CXcapCacheServer::WriteToLog( _L8( " Root URI: %S" ), &root ); - CXcapCacheServer::WriteToLog( _L8( " Data: %d bytes" ), data.Length() ); - CleanupStack::PopAndDestroy(); //document - #endif - TInt tableIndex = KErrNotFound; - TCacheEntryInfo header; - header.iEtag = &etag; - header.iRootUri = &root; - header.iRespData = &data; - header.iDocumentUri = &doc; - header.iDataLength = data.Length(); - CXcapCacheIndexTableEntry* tableEntry = iCacheIndexAdmin.FindL( tableIndex, root, doc ); - CXcapCacheIndexEntry* entry = NULL; - if( tableEntry != NULL ) - { - entry = iCacheIndex.Entry( tableEntry->Index() ); - entry->UpdateEntryL( &header ); - } - else - { - entry = CXcapCacheIndexEntry::NewL( &header ); - CleanupStack::PushL( entry ); - TInt index = iCacheIndex.UpdateIndexL( entry ); - CleanupStack::Pop(); //entry - iCacheIndexAdmin.UpdateIndexTableL( index, &header ); - } - CleanupStack::PopAndDestroy( 4 ); //data, etag, root, name - FlushCacheDataL(); - } - -// ---------------------------------------------------------- -// CXcapCacheSession::FlushCacheDataL -// -// ---------------------------------------------------------- -// -void CXcapCacheSession::FlushCacheDataL() - { - #ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::FlushCacheDataL()" ) ); - #endif - iCacheIndex.StoreCacheDataL(); - iCacheIndexAdmin.StoreIndexTableL(); - } - -// ---------------------------------------------------------- -// CXcapCacheSession::DeleteFromStorageL -// -// ---------------------------------------------------------- -// -TInt CXcapCacheSession::DeleteFromStorageL( const TDesC& aFileName ) - { - #ifdef _DEBUG - HBufC8* name = HBufC8::NewLC( aFileName.Length() ); - TPtr8 nameDesc( name->Des() ); - nameDesc.Copy( aFileName ); - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::DeleteFromStorageL() - Filename: %S" ), &nameDesc ); - CleanupStack::PopAndDestroy(); //name - #endif - TInt error = iFileManager->Delete( aFileName ); - return error; - } - -// ---------------------------------------------------------- -// CXcapCacheSession::FlushCacheDataL -// -// ---------------------------------------------------------- -// -HBufC8* CXcapCacheSession::ReadFromStorageL( const TDesC& aFileName ) - { - #ifdef _DEBUG - HBufC8* name = HBufC8::NewLC( aFileName.Length() ); - TPtr8 nameDesc( name->Des() ); - nameDesc.Copy( aFileName ); - CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::ReadFromStorageL() - Filename: %S" ), &nameDesc ); - CleanupStack::PopAndDestroy(); //name - #endif - RFile file; - HBufC8* data = NULL; - User::LeaveIfError( file.Open( CXcapCacheServer::FileSession(), aFileName, EFileRead ) ); - CleanupClosePushL( file ); - TInt size = 0; - User::LeaveIfError( file.Size( size ) ); - data = HBufC8::NewL( size ); - TPtr8 pointer( data->Des() ); - file.Read( pointer ); - CleanupStack::PopAndDestroy(); //file - return data; - } - - - - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapShutdownTimer.cpp --- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapShutdownTimer.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapShutdownTimer -* -*/ - - - -#include "XcapCacheServer.h" -#include "XcapShutdownTimer.h" - -// ---------------------------------------------------- -// CXcapShutdownTimer::CXcapShutdownTimer -// -// ---------------------------------------------------- -// -CXcapShutdownTimer::CXcapShutdownTimer() : CTimer( -1 ) - { - /*#ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapShutdownTimer::CXcapShutdownTimer()" ) ); - #endif*/ - CActiveScheduler::Add(this); - } - -// ---------------------------------------------------- -// CXcapShutdownTimer::ConstructL -// -// ---------------------------------------------------- -// -void CXcapShutdownTimer::ConstructL() - { - /*#ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapShutdownTimer::ConstructL()" ) ); - #endif*/ - CTimer::ConstructL(); - } - -// ---------------------------------------------------- -// CXcapShutdownTimer::Start -// -// ---------------------------------------------------- -// -void CXcapShutdownTimer::Start() - { - /*#ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapShutdownTimer::Start()" ) ); - #endif*/ - After( KXcapCacheShutdownDelay ); - } - -// ---------------------------------------------------- -// CXcapShutdownTimer::RunL -// -// ---------------------------------------------------- -// -void CXcapShutdownTimer::RunL() - { - /*#ifdef _DEBUG - CXcapCacheServer::WriteToLog( _L8( "CXcapShutdownTimer::RunL() - Closing down server" ) ); - #endif*/ - CActiveScheduler::Stop(); - } - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/inc/CommonDefines.h --- a/xdmprotocols/XcapProtocol/XcapCache/inc/CommonDefines.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapCache common defines -* -*/ - - - - -#ifndef __COMMONDEFINES_H__ -#define __COMMONDEFINES_H__ - -#include - -//Information about the data in the cache -class TCacheEntryInfo - { - public: - - TTime iLastUpdate; - TTime iLastAccess; - TInt32 iDataLength; - const TDesC* iDocumentUri; - const TDesC8* iEtag; - const TDesC8* iRootUri; - const TDesC8* iRespData; - }; - -// server name -_LIT( KXcapCacheServerName, "!CXcapCacheServer" ); -_LIT( KXcapCacheServerLib, "XcapCacheServer" ); -_LIT( KXcapCacheServerExe, "XcapCache.exe"); - -// A version must be specifyed when creating a session with the server -const TUint KCacheServerMajorVersionNumber = 0; -const TUint KCacheServerMinorVersionNumber = 1; -const TUint KCacheServerBuildVersionNumber = 1; - -// Server panic codes -enum TXcapCacheServerPanic - { - ECacheCreateServer = 0, - ECacheStartServer, - ECacheFileServerConnect, - ECacheIndexFileOpen, - ECachePageFileOpen, - EMainSchedulerError, - EBadRequest - }; - -//Opcodes used in message passing between client and server -enum TTransportServerRequest - { - EXcapCacheFetchInfo = 0, - EXcapCacheFetchData, - EXcapCacheStore, - EXcapCacheDelete, - EXcapCacheCheckValidity, - EXcapCacheFlush - }; - -//Number of asynchronous requests -const TUint KTTMaxAsyncRequests = 4; - -//Number of data transfer requests -const TUint KTTDataTransferRequests = 3; - -//Default number of message slots per session -const TUint KTTDefaultMessageSlots = KTTMaxAsyncRequests + 2; - -const TInt KServerLogBufferMaxSize = 2000; - -const TInt KMaxCacheSize = 30000; - -#endif // #ifndef __COMMONDEFINES_H__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapCache/inc/XcapCache.h --- a/xdmprotocols/XcapProtocol/XcapCache/inc/XcapCache.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,159 +0,0 @@ -/* -* Copyright (c) 2005 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: RXcapCache -* -*/ - - - - -#ifndef __XCAPCACHE_H__ -#define __XCAPCACHE_H__ - -// INCLUDES -#include -#include - -//Constants -#ifdef _DEBUG - _LIT( KCacheClientLogDir, "XDM" ); - _LIT( KCacheClientLogFile, "CacheClient.txt" ); -#endif - -//FORWARD DECLARATIONS -class TCacheEntryInfo; -class CXcapCacheClient; - -//CLASS DECLARATION -class RXcapCache : public RSessionBase - { - public: // New functions - - /** - * C++ Constructor. - */ - IMPORT_C RXcapCache(); - - /** - * Return the version of this component - * - * @return TVersion The version number - */ - IMPORT_C TVersion Version() const; - - /** - * Connect to the server side session object - * - * @return TInt Error code - */ - IMPORT_C TInt Connect(); - - /** - * Destructor - */ - IMPORT_C ~RXcapCache(); - - /** - * Store a new document - * - * @param TDesC8& ETag of the new document - * @param TDesC& Name of the document - * @param TDesC8& Root location of the document - * @param TDesC8& The document content - * @return void - */ - IMPORT_C void Store( const TDesC8& aETag, - const TDesC& aDocumentName, - const TDesC8& aRootLocation, - const TDesC8& aResponseData ); - - /** - * Remove a named document from the cache - * - * @param TDesC& Name of the document - * @param TDesC8& Root location of the document - * @return TInt Error code - */ - IMPORT_C TInt Delete( const TDesC& aDocumentName, - const TDesC8& aRootLocation ); - - /** - * Fetch information on a named document - * - * @param TDes8& Contains the ETag string on completion - * @param TCacheEntryInfo& Encapsulates root & name - * @return TInt Error code - */ - IMPORT_C TInt FetchDocumentInfo( TDes8& aETagDescriptor, - const TDesC& aDocumentName, - const TDesC8& aRootLocation, - TCacheEntryInfo& aEntryInfo ); - - /** - * Fetch content for the named document - * - * @param TRequestStatus& Request status of the client - * @param TDes8& Contains the document contents on completion - * @param TCacheEntryInfo& Encapsulates root & name - * @return TInt Error code - */ - IMPORT_C void FetchDocumentContent( TDes8& aContentDescriptor, - const TDesC& aDocumentName, - const TDesC8& aRootLocation ); - - /** - * Check validity of the named document - * - * @param TDesC8& ETag of the document - * @param TDesC& Name of the document - * @param TDesC8& Root location of the document - * @return TInt Error code - */ - IMPORT_C TInt IsCurrent( const TDesC8& aETag, - const TDesC& aDocumentName, - const TDesC8& aRootLocation ); - - /** - * Flush (externalise) cache metadata to disk - * - * @return void - */ - IMPORT_C void Flush(); - - public: //Not exported - - /** - * Start the server - * - * @return TInt Error code - */ - TInt StartServer(); - - /** - * Check whether the server is already running - * - * @return TBool Is the server running - */ - TBool IsRunning(); - - - private: //Data - - TBool iConnected; - }; - -#endif //__XCAPCACHE_H__ - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/BWINSCW/XcapHttpTransportU.DEF --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/BWINSCW/XcapHttpTransportU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -EXPORTS - ??1CXcapHttpRequest@@UAE@XZ @ 1 NONAME ; CXcapHttpRequest::~CXcapHttpRequest(void) - ??1CXcapHttpTransport@@UAE@XZ @ 2 NONAME ; CXcapHttpTransport::~CXcapHttpTransport(void) - ?CancelRequest@CXcapHttpRequest@@QAEXXZ @ 3 NONAME ; void CXcapHttpRequest::CancelRequest(void) - ?DeleteL@CXcapHttpTransport@@QAEPAVCXcapHttpReqDelete@@ABVTDesC16@@@Z @ 4 NONAME ; class CXcapHttpReqDelete * CXcapHttpTransport::DeleteL(class TDesC16 const &) - ?DispatchRequestL@CXcapHttpRequest@@QAEXAAVTRequestStatus@@@Z @ 5 NONAME ; void CXcapHttpRequest::DispatchRequestL(class TRequestStatus &) - ?GetL@CXcapHttpTransport@@QAEPAVCXcapHttpReqGet@@ABVTDesC16@@@Z @ 6 NONAME ; class CXcapHttpReqGet * CXcapHttpTransport::GetL(class TDesC16 const &) - ?HeadL@CXcapHttpTransport@@QAEPAVCXcapHttpReqHead@@ABVTDesC16@@@Z @ 7 NONAME ; class CXcapHttpReqHead * CXcapHttpTransport::HeadL(class TDesC16 const &) - ?HeaderValue@CXcapHttpRequest@@QBE?AVTPtrC8@@W4TStrings@HTTP@@@Z @ 8 NONAME ; class TPtrC8 CXcapHttpRequest::HeaderValue(enum HTTP::TStrings) const - ?MkcolL@CXcapHttpTransport@@QAEPAVCXcapHttpReqMkcol@@ABVTDesC16@@@Z @ 9 NONAME ; class CXcapHttpReqMkcol * CXcapHttpTransport::MkcolL(class TDesC16 const &) - ?NewL@CXcapHttpTransport@@SAPAV1@ABVTDesC16@@AAVMMsgConnManager@@ABVTXdmCredentials@@@Z @ 10 NONAME ; class CXcapHttpTransport * CXcapHttpTransport::NewL(class TDesC16 const &, class MMsgConnManager &, class TXdmCredentials const &) - ?PutL@CXcapHttpTransport@@QAEPAVCXcapHttpReqPut@@ABVTDesC16@@@Z @ 11 NONAME ; class CXcapHttpReqPut * CXcapHttpTransport::PutL(class TDesC16 const &) - ?ReleaseResponseData@CXcapHttpRequest@@QAEXXZ @ 12 NONAME ; void CXcapHttpRequest::ReleaseResponseData(void) - ?RequestBody@CXcapHttpContSupplier@@QBE?AVTPtrC8@@XZ @ 13 NONAME ; class TPtrC8 CXcapHttpContSupplier::RequestBody(void) const - ?RequestUriL@CXcapHttpRequest@@QBE?AVTPtrC8@@XZ @ 14 NONAME ; class TPtrC8 CXcapHttpRequest::RequestUriL(void) const - ?ResetUriL@CXcapHttpRequest@@QAEXABVTDesC16@@@Z @ 15 NONAME ; void CXcapHttpRequest::ResetUriL(class TDesC16 const &) - ?ResponseData@CXcapHttpRequest@@QAEPAVTXdmCompletionData@@XZ @ 16 NONAME ; class TXdmCompletionData * CXcapHttpRequest::ResponseData(void) - ?RootUri@CXcapHttpTransport@@QAE?AVTPtrC8@@XZ @ 17 NONAME ; class TPtrC8 CXcapHttpTransport::RootUri(void) - ?SetExpiryTimeL@CXcapHttpRequest@@QAEXPAVMXcapHttpRequestTimerCallback@@VTTimeIntervalMicroSeconds32@@@Z @ 18 NONAME ; void CXcapHttpRequest::SetExpiryTimeL(class MXcapHttpRequestTimerCallback *, class TTimeIntervalMicroSeconds32) - ?SetHeaderL@CXcapHttpRequest@@QAEXABVTDesC8@@0@Z @ 19 NONAME ; void CXcapHttpRequest::SetHeaderL(class TDesC8 const &, class TDesC8 const &) - ?SetRequestBodyL@CXcapHttpContSupplier@@QAEXABVTDesC8@@@Z @ 20 NONAME ; void CXcapHttpContSupplier::SetRequestBodyL(class TDesC8 const &) - ?SetRootUriL@CXcapHttpTransport@@QAEXABVTDesC16@@@Z @ 21 NONAME ; void CXcapHttpTransport::SetRootUriL(class TDesC16 const &) - ?UpdateRequestUriL@CXcapHttpRequest@@QAEXABVTDesC8@@@Z @ 22 NONAME ; void CXcapHttpRequest::UpdateRequestUriL(class TDesC8 const &) - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/eabi/XcapHttpTransportU.DEF --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/eabi/XcapHttpTransportU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -EXPORTS - _ZN16CXcapHttpRequest10SetHeaderLERK6TDesC8S2_ @ 1 NONAME - _ZN16CXcapHttpRequest12ResponseDataEv @ 2 NONAME - _ZN16CXcapHttpRequest13CancelRequestEv @ 3 NONAME - _ZN16CXcapHttpRequest14SetExpiryTimeLEP29MXcapHttpRequestTimerCallback27TTimeIntervalMicroSeconds32 @ 4 NONAME - _ZN16CXcapHttpRequest16DispatchRequestLER14TRequestStatus @ 5 NONAME - _ZN16CXcapHttpRequest17UpdateRequestUriLERK6TDesC8 @ 6 NONAME - _ZN16CXcapHttpRequest19ReleaseResponseDataEv @ 7 NONAME - _ZN16CXcapHttpRequest9ResetUriLERK7TDesC16 @ 8 NONAME - _ZN18CXcapHttpTransport11SetRootUriLERK7TDesC16 @ 9 NONAME - _ZN18CXcapHttpTransport4GetLERK7TDesC16 @ 10 NONAME - _ZN18CXcapHttpTransport4NewLERK7TDesC16R15MMsgConnManagerRK15TXdmCredentials @ 11 NONAME - _ZN18CXcapHttpTransport4PutLERK7TDesC16 @ 12 NONAME - _ZN18CXcapHttpTransport5HeadLERK7TDesC16 @ 13 NONAME - _ZN18CXcapHttpTransport6MkcolLERK7TDesC16 @ 14 NONAME - _ZN18CXcapHttpTransport7DeleteLERK7TDesC16 @ 15 NONAME - _ZN18CXcapHttpTransport7RootUriEv @ 16 NONAME - _ZN21CXcapHttpContSupplier15SetRequestBodyLERK6TDesC8 @ 17 NONAME - _ZNK16CXcapHttpRequest11HeaderValueEN4HTTP8TStringsE @ 18 NONAME - _ZNK16CXcapHttpRequest11RequestUriLEv @ 19 NONAME - _ZNK21CXcapHttpContSupplier11RequestBodyEv @ 20 NONAME - _ZTI16CXcapHttpRequest @ 21 NONAME ; ## - _ZTI18CXcapHttpTransport @ 22 NONAME ; ## - _ZTI20CXcapHttpAuthManager @ 23 NONAME ; ## - _ZTI21CXcapHttpContSupplier @ 24 NONAME ; ## - _ZTV16CXcapHttpRequest @ 25 NONAME ; ## - _ZTV18CXcapHttpTransport @ 26 NONAME ; ## - _ZTV20CXcapHttpAuthManager @ 27 NONAME ; ## - _ZTV21CXcapHttpContSupplier @ 28 NONAME ; ## - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/group/XcapHttpTransport.mmp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/group/XcapHttpTransport.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* -* Copyright (c) 2004 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: XcapHttpTransport.dll from XcapHttpTransport.mmp -* -*/ - - - -#include - -TARGET xcaphttptransport.dll -TARGETTYPE dll -UID 0x1000008d 0x10207411 -CAPABILITY CAP_GENERAL_DLL -VENDORID VID_DEFAULT - -SOURCEPATH ../src - -SOURCE XcapHttpTransport.cpp -SOURCE XcapHttpReqGet.cpp -SOURCE XcapHttpReqPut.cpp -SOURCE XcapHttpRequest.cpp -SOURCE XcapHttpResponse.cpp -SOURCE XcapHttpReqDelete.cpp -SOURCE XcapHttpHeaderModel.cpp -SOURCE XcapHttpAuthManager.cpp -SOURCE XcapHttpContSupplier.cpp -SOURCE XcapHttpRequestTimer.cpp -// SONERA SOLUTION -SOURCE XcapHttpReqHead.cpp -SOURCE XcapHttpReqMkcol.cpp - -//Internal -USERINCLUDE ../inc -USERINCLUDE ../../inc -USERINCLUDE ../../../inc -USERINCLUDE ../../XcapOperations/inc - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/http -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../../inc - - -LIBRARY hal.lib -LIBRARY bafl.lib -LIBRARY http.lib -LIBRARY ecom.lib -LIBRARY hash.lib -LIBRARY efsrv.lib -LIBRARY euser.lib -LIBRARY xdmengine.lib -LIBRARY inetprotutil.lib -DEBUGLIBRARY flogger.lib - - - -#if defined( ARMCC ) - deffile ../eabi/ -#elif defined ( WINSCW ) - deffile ../BWINSCW/ -#elif defined ( WINS ) - deffile ../bwins/ -#endif - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/group/bld.inf --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapHttpTransport bld.inf -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- - -XcapHttpTransport.mmp - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpAuthManager.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpAuthManager.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,163 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapHttpAuthManager -* -*/ - - - - -#ifndef __XCAPHTTPTAUTHMANAGER__ -#define __XCAPHTTPTAUTHMANAGER__ - -// INCLUDES -#include -#include -#include "XcapHttpConsts.h" - -//FORWARD DECLARATION -class CMD5; - -//CLASS DECLARATION -class CXcapHttpAuthManager : public CBase - - { - public: // Constructors and destructor - - /** - * Symbian OS default constructor. - */ - static CXcapHttpAuthManager* NewL( RHTTPSession& iHttpSession, - CXcapHttpTransport& aTransportMain, - const TXdmCredentials& aDigestCredentials ); - - /** - * Symbian OS default constructor. - */ - void SetAuthorized( TBool aAuthorized ); - - /** - * Symbian OS default constructor. - */ - TBool IsAuthorized() const; - - /** - * Symbian OS default constructor. - */ - TBool ParseHeaderL( RHTTPTransaction& aTransaction, TInt aAuthType ); - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - HBufC8* AuthorizationL( CXcapHttpRequest& aHttpRequest ); - - /** - * Symbian OS default constructor. - */ - TBool ConsumeAuthInfoParamL( TAuthInfoParam aName, const TDesC8& aValue ); - - /** - * Destructor. - */ - virtual ~CXcapHttpAuthManager(); - - private: - - /** - * C++ default constructor. - */ - CXcapHttpAuthManager( RHTTPSession& iHttpSession, - CXcapHttpTransport& aTransportMain ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - void ConstructL( const TXdmCredentials& aDigestCredentials ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - void Unquote( TPtr8& aParamValue ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - void ConstructHA1L( TDes8& aResult ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - void ConstructHA2L( TDes8& aResult, CXcapHttpRequest& aHttpRequest ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - void Hash( const TDesC8& aMessage, TDes8& aHash ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - HBufC8* RequestDigestLC( CXcapHttpRequest& aHttpRequest ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - void SetNextNonceL( const TDesC8& aNextnonce ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - void GenerateClientNonce(); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - void ParseQopL( const TDesC8& aQopString ); - - private: //Data - - TInt iNonceCount; - TBool iAuthorized; - TBool iUnauthReceived; - TBool iNextnonce; - CMD5* iMD5; - TInt64 iSeed; - HBufC8* iOpaque; - HBufC8* iServerNonce; - HBufC8* iRealm; - HBufC8* iDomain; - HBufC8* iAlgorithm; - HBufC8* iQopString; - TXcapAuthQop iQop; - RHTTPSession iHttpSession; - CXcapHttpTransport& iTransportMain; - TBuf8 iClientNonce; - TBuf8 iUserName; - TBuf8 iPassword; - RStringPool iStringPool; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpConsts.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpConsts.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapHttpConsts -* -*/ - - - - -#ifndef __XCAPHTTPCONSTS__ -#define __XCAPHTTPCONSTS__ - -#include - -const TInt KXcapHashLength = 32; -const TInt KXcapRawHashLength = 16; - -_LIT8( KAuthHeaderParamEnd, "," ); -_LIT8( KAuthHeaderParamEndQ, "\"," ); -_LIT8( KAuthHeaderParamQuote, "\"" ); -_LIT8( KAuthHeaderStart, "Digest username=\"" ); -_LIT8( KAuthHeaderRealm, "realm=\"" ); -_LIT8( KAuthHeaderNonce, "nonce=\"" ); -_LIT8( KAuthHeaderUri, "uri=\"" ); -_LIT8( KAuthHeaderResponse, "response=\"" ); -_LIT8( KAuthHeaderCNonce, "cnonce=\"" ); -_LIT8( KAuthHeaderOpaque, "opaque=\"" ); -_LIT8( KAuthHeaderNonceCount, "nc=" ); -_LIT8( KAuthHeaderQop, "qop=" ); - -const TText8* const KAuthInfoParamArray[] = - { - _S8( "Authentication-Info" ), - _S8( "Proxy-Authentication-Info" ), - _S8( "nextnonce" ), - _S8( "rspauth" ), - _S8( "cnonce" ), - _S8( "nc" ), - _S8( "qop" ), - }; - -enum TAuthInfoParam - { - ENfoAuthInfo = 0, - ENfoPrxAuthInfo, - ENfoNextnonce, - ENfoRspauth, - ENfoCnonce, - ENfoNc, - ENfoQop, - }; -enum TXcapAuthQop - { - EXcapAuth = 0, - EXcapAuthInt, - EXcapAuthNone - }; - -#endif //__XCAPHTTPCONSTS__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpContSupplier.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpContSupplier.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpContSupplier -* -*/ - - - - -#ifndef __XCAPHTTPCONTSUPPLIER__ -#define __XCAPHTTPCONTSUPPLIER__ - -// INCLUDES -#include "XcapHttpRequest.h" - -//FORWARD DECLARATIONS -class CXdmHttpResponse; - -// CLASS DECLARATION -class CXcapHttpContSupplier : public CXcapHttpRequest, - public MHTTPDataSupplier - { - public: - - /** - * C++ default constructor is private. - */ - IMPORT_C void SetRequestBodyL( const TDesC8& aRequestBody ); - - /** - * C++ default constructor is private. - */ - IMPORT_C TPtrC8 RequestBody() const; - - protected: - - /** - * C++ default constructor is private. - */ - CXcapHttpContSupplier( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Destructor. - */ - virtual ~CXcapHttpContSupplier(); - - private: - - /** - * Second-phase constructor. - */ - TBool GetNextDataPart( TPtrC8& aDataPart ); - - /** - * Second-phase constructor. - */ - void ReleaseData(); - - /** - * Second-phase constructor. - */ - TInt Reset(); - - /** - * Second-phase constructor. - */ - TInt OverallDataSize(); - - protected: //Data - - private: //Data - - HBufC8* iRequestBody; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpHeaderModel.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpHeaderModel.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpHeaderModel -* -*/ - - - - -#ifndef __XCAPHTTPHEADERMODEL__ -#define __XCAPHTTPHEADERMODEL__ - -// INCLUDES -#include "XcapHttpRequest.h" - -//FORWARD DECLARATIONS -class CXcapHttpResponse; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapHttpHeaderModel ) : public CBase - { - public: - - /** - * C++ default constructor is private. - */ - static CXcapHttpHeaderModel* NewL( const TDesC8& aHeaderName, - const TDesC8& aHeaderValue, - CXcapHttpTransport& aTransportMain ); - - /** - * C++ default constructor is private. - */ - TPtrC8 HeaderValue() const; - - /** - * C++ default constructor is private. - */ - TPtrC8 HeaderName() const; - - /** - * Destructor. - */ - virtual ~CXcapHttpHeaderModel(); - - private: - - /** - * C++ default constructor is private. - */ - CXcapHttpHeaderModel( CXcapHttpTransport& aTransportMain ); - - /** - * C++ default constructor is private. - */ - void ConstructL( const TDesC8& aHeaderName, - const TDesC8& aHeaderValue ); - - protected: //Data - - private: //Data - - HBufC8* iHeaderName; - HBufC8* iHeaderValue; - CXcapHttpTransport& iTransportMain; - - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqDelete.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqDelete.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpReqDelete -* -*/ - - - - -#ifndef __XCAPHTTPREQDELETE__ -#define __XCAPHTTPREQDELETE__ - -// INCLUDES -#include "http.h" -#include "XcapHttpRequest.h" - -//CONSTANTS - -//FORWARD DECLARATIONS -class CXcapHttpResponse; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapHttpReqDelete ) : public CXcapHttpRequest - { - public: - - /** - * C++ default constructor is private. - */ - static CXcapHttpReqDelete* NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Destructor. - */ - virtual ~CXcapHttpReqDelete(); - - private: // Constructors and destructor - - /** - * C++ default constructor is private. - */ - CXcapHttpReqDelete( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - virtual void ConstructRequestL(); - - /** - * Append data to the response buffer. - */ - virtual RStringF ConstructMethodStringL(); - - private: - - /** - * Second-phase constructor. - */ - void ConstructL(); - - private: //Data - - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqGet.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqGet.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpReqGet -* -*/ - - - - -#ifndef __XCAPHTTPREQGET__ -#define __XCAPHTTPREQGET__ - -// INCLUDES -#include "http.h" -#include "XcapHttpRequest.h" - -//CONSTANTS - -//FORWARD DECLARATIONS -class CXdmHttpResponse; -class CXcapHttpAuthManager; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapHttpReqGet ) : public CXcapHttpRequest - { - public: - - /** - * C++ default constructor is private. - */ - static CXcapHttpReqGet* NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Destructor. - */ - virtual ~CXcapHttpReqGet(); - - private: // Constructors and destructor - - /** - * C++ default constructor is private. - */ - CXcapHttpReqGet( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - virtual void ConstructRequestL(); - - /** - * Append data to the response buffer. - */ - virtual RStringF ConstructMethodStringL(); - - private: - - /** - * Second-phase constructor. - */ - void ConstructL(); - - private: //Data - - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqHead.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqHead.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -/* -* Copyright (c) 2008 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: CXcapHttpReqHead -* -*/ - -#ifndef __XCAPHTTPREQHEAD__ -#define __XCAPHTTPREQHEAD__ - -// INCLUDES -#include "http.h" -#include "XcapHttpRequest.h" - -//CONSTANTS -_LIT8( KXcapRequestHead, "HEAD" ); - -//FORWARD DECLARATIONS -class CXdmHttpResponse; -class CXcapHttpAuthManager; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapHttpReqHead ) : public CXcapHttpRequest - { - public: - - /** - * C++ default constructor is private. - */ - static CXcapHttpReqHead* NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Destructor. - */ - virtual ~CXcapHttpReqHead(); - - private: // Constructors and destructor - - /** - * C++ default constructor is private. - */ - CXcapHttpReqHead( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - virtual void ConstructRequestL(); - - /** - * Append data to the response buffer. - */ - virtual RStringF ConstructMethodStringL(); - - private: - - /** - * Second-phase constructor. - */ - void ConstructL(); - - private: //Data - - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqMkcol.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqMkcol.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpReqMkcol -* -*/ - -#ifndef __XCAPHTTPREQMKCOL__ -#define __XCAPHTTPREQMKCOL__ - -// INCLUDES -#include "http.h" -#include "XcapHttpContSupplier.h" - -//CONSTANTS -_LIT8( KXcapRequestMkcol, "MKCOL" ); - -//FORWARD DECLARATIONS -class CXcapHttpResponse; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapHttpReqMkcol ) : public CXcapHttpContSupplier - { - public: - - /** - * C++ default constructor is private. - */ - static CXcapHttpReqMkcol* NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Destructor. - */ - virtual ~CXcapHttpReqMkcol(); - - private: // Constructors and destructor - - /** - * C++ default constructor is private. - */ - CXcapHttpReqMkcol( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - virtual void ConstructRequestL(); - - /** - * Append data to the response buffer. - */ - virtual RStringF ConstructMethodStringL(); - - private: - - /** - * Second-phase constructor. - */ - void ConstructL(); - - private: //Data - - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqPut.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpReqPut.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpReqPut -* -*/ - - - - -#ifndef __XCAPHTTPREQPUT__ -#define __XCAPHTTPREQPUT__ - -// INCLUDES -#include "http.h" -#include "XcapHttpContSupplier.h" - -//CONSTANTS - -//FORWARD DECLARATIONS -class CXcapHttpResponse; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapHttpReqPut ) : public CXcapHttpContSupplier - { - public: - - /** - * C++ default constructor is private. - */ - static CXcapHttpReqPut* NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Destructor. - */ - virtual ~CXcapHttpReqPut(); - - private: // Constructors and destructor - - /** - * C++ default constructor is private. - */ - CXcapHttpReqPut( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - virtual void ConstructRequestL(); - - /** - * Append data to the response buffer. - */ - virtual RStringF ConstructMethodStringL(); - - private: - - /** - * Second-phase constructor. - */ - void ConstructL(); - - private: //Data - - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpRequest.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpRequest.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,312 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpRequest -* -*/ - - - - -#ifndef __XCAPHTTPREQUEST__ -#define __XCAPHTTPREQUEST__ - -// INCLUDES -#include -#include "XdmOperation.h" -#include "XcapHttpRequestTimerCallback.h" - -//CONSTANTS -//const TInt KMaxNumberOfRetries = 3; -const TInt KAuthTypeProxy = 407; -const TInt KAuthTypeNormal = 401; - -_LIT8( KXcapRequestPost, "POST" ); -_LIT8( KXcapRequestGet, "GET" ); -_LIT8( KXcapRequestPut, "PUT" ); -_LIT8( KXcapRequestDelete, "DELETE" ); - -_LIT8( KHttpHeaderAccept, "Accept" ); -_LIT8( KHttpHeaderIfMatch, "If-Match" ); -_LIT8( KHttpHeaderIfNoneMatch, "If-None-Match" ); -_LIT8( KHttpHeaderContentType, "Content-Type" ); -_LIT8( KHttpHeaderIntIdentity, "X-3GPP-Intended-Identity" ); - -//FORWARD DECLARATIONS -class TXdmCredentials; -class CXcapHttpResponse; -class CXcapHttpTransport; -class CXcapHttpHeaderModel; -class CXcapHttpAuthManager; -class CXcapHttpRequestTimer; - -// CLASS DECLARATION -class CXcapHttpRequest : public CBase, - public MXcapHttpRequestTimerCallback - - { - public: - - /** - * C++ default constructor is private. - */ - IMPORT_C void SetHeaderL( const TDesC8& aHeaderName, - const TDesC8& aHeaderValue ); - - /** - * Sets the expiry time of this transaction - * @param aExpiryTime Time period after which this transaction expires - * @param aCallback Handle to the receiver of the expiry event - */ - IMPORT_C void SetExpiryTimeL( MXcapHttpRequestTimerCallback* aCallback, - const TTimeIntervalMicroSeconds32 aExpiryTime ); - - /** - * Cancel this transaction - */ - IMPORT_C void CancelRequest(); - - /** - * C++ default constructor is private. - */ - IMPORT_C void DispatchRequestL( TRequestStatus& aClientStatus ); - - /** - * Sets the expiry time of this transaction - * @param aExpiryTime Time period after which this transaction expires - * @param aCallback Handle to the receiver of the expiry event - */ - IMPORT_C void ResetUriL( const TDesC& aNewUri ); - - /** - * Sets the expiry time of this transaction - * @param aExpiryTime Time period after which this transaction expires - * @param aCallback Handle to the receiver of the expiry event - */ - IMPORT_C void UpdateRequestUriL( const TDesC8& aUpdatedUri ); - - /** - * Sets the expiry time of this transaction - * @param aExpiryTime Time period after which this transaction expires - * @param aCallback Handle to the receiver of the expiry event - */ - IMPORT_C TPtrC8 RequestUriL() const; - - /** - * Sets the expiry time of this transaction - * @param aExpiryTime Time period after which this transaction expires - * @param aCallback Handle to the receiver of the expiry event - */ - IMPORT_C TPtrC8 HeaderValue( const HTTP::TStrings aHeaderName ) const; - - /** - * C++ default constructor is private. - */ - IMPORT_C TXdmCompletionData* ResponseData(); - - /** - * C++ default constructor is private. - */ - IMPORT_C void ReleaseResponseData(); - - /** - * Destructor. - */ - IMPORT_C virtual ~CXcapHttpRequest(); - - public: - - /** - * Try to resend this request - * @return TBool Resent or not - */ - TPtrC8 RelativeUri() const; - - /** - * Try to resend this request - * @return TBool Resent or not - */ - void ResendWithAuthL( TInt aAuthtype ); - - /** - * Has this transaction been cancelled. - * @return TBool - */ - CXcapHttpAuthManager& AuthManager(); - - /** - * C++ default constructor is private. - */ - RHTTPSession& Session(); - - /** - * Return the HTTP transaction associated with this transaction - * @return RHTTPTransaction - */ - RHTTPTransaction& Transaction(); - - /** - * C++ default constructor is private. - */ - void AppendDataL( const TPtrC8& aBodyPart ); - - /** - * Complete this request - * @param aErrorCode The completion code - */ - void FinaliseRequestL( TInt aErrorCode ); - - - protected: // Constructors and destructor - - /** - * C++ default constructor is private. - */ - CXcapHttpRequest( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - void BaseConstructL( const TDesC& aRequestUri ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - virtual void ConstructRequestL(); - - /** - * Append data to the response buffer. - */ - virtual RStringF ConstructMethodStringL() = 0; - - /** - * Sets the status of this transaction - * @param aSent Has this transaction been sent or not - */ - void SetStatus( const TBool aSent ); - - /** - * Has this transaction been cancelled. - * @return TBool - */ - TBool IsCancelled(); - - /** - * Has this transaction been sent - * @return TBool - */ - TBool Status() const; - - /** - * Return the time stamp of this transaction - * @return TInt - */ - const TInt SendTime() const; - - /** - * Get the current time (System tick count) - */ - TInt TimeL() const; - - private: - - /** - * Second-phase constructor. - */ - void ConstructL( const TDesC8& aRequestBody ); - - /** - * Second-phase constructor. - */ - void DoSetHeadersL(); - - /** - * Second-phase constructor. - */ - void RemoveDuplicateAuth(); - - /** - * Append authorization header - */ - void AppendAuthorizationHeaderL( RHTTPHeaders& aHeaderCollection, TInt aAuthType ); - - /** - * Second-phase constructor. - */ - void SetRequestUriL( const TDesC& aRequestUri ); - - /** - * Second-phase constructor. - */ - void PrepareResponseBodyL(); - - #ifdef _DEBUG - - /** - * Second-phase constructor. - */ - void DumpResponseL( const TDesC8& aRespData, const TDesC& aDumpName ); - - #endif - - /** - * Second-phase constructor. - */ - void CompileResponseDataL( TInt aErrorCode ); - - /** - * Second-phase constructor. - */ - TInt ReinterpretErrorCode( const TInt aHttpStatus ) const; - - /** - * Second-phase constructor. - */ - virtual void HandleTimerEventL(); - - protected: //Data - - RHTTPSession& iHttpSession; - RHTTPTransaction iHttpTransaction; - CXcapHttpTransport& iTransportMain; - - private: //Data - - HBufC8* iFlatResponse; - HBufC8* iRequestUriBuf; - HBufC8* iWholeUri; - CXcapHttpResponse* iHttpResponse; - CBufSeg* iResponseBuffer; - TRequestStatus* iClientStatus; - CXcapHttpRequestTimer* iExpiryTimer; - TUriParser8 iRequestUri; - TInt iCurrentDataLength; - TInt iNumberOfRetries; - TInt iSendTime; - TBool iSent; - TBool iActive; - TBool iCancelled; - TBool iConstructed; - TXdmCompletionData iRespData; - CXcapHttpAuthManager& iAuthManager; - TTimeIntervalMicroSeconds32 iExpiryTime; - RPointerArray iHeaderCollection; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpRequestTimer.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpRequestTimer.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpRequestTimer -* -*/ - - - - -#ifndef __XCAPHTTPREQUESTTIMER__ -#define __XCAPHTTPREQUESTTIMER__ - -// INCLUDES -#include -#include "XcapHttpRequestTimerCallback.h" - -class CXcapHttpTransport; - -NONSHARABLE_CLASS( CXcapHttpRequestTimer ) : public CActive - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - * @param aCallback A pointer to MMmsViewerTimerCallback class - */ - static CXcapHttpRequestTimer* NewL( CXcapHttpTransport& aTransportMain, - MXcapHttpRequestTimerCallback* aCallback ); - - /** - * Destructor. - */ - virtual ~CXcapHttpRequestTimer(); - - public: // New functions - - /** - * Request to activate timer - * @param aDelay Time in microsecoXcap after which - * the callback function is called. - */ - void ActivateTimer( TTimeIntervalMicroSeconds32 aDelay ); - - private: - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL(); - - /** - * C++ constructor. - * @param aCallback A pointer to MImpsTransportTimerCallback class - * @param aRequester Who constructed and/or activated the timer - * @param aLogging Trace or not - */ - CXcapHttpRequestTimer( CXcapHttpTransport& aTransportMain, - MXcapHttpRequestTimerCallback* aCallback ); - - /** - * From CActive. - * @return void - */ - void RunL(); - - /** - * From CActive. - * @return void - */ - void DoCancel(); - - private: // Data - - RTimer iTimer; - CXcapHttpTransport& iTransportMain; - MXcapHttpRequestTimerCallback* iCallback; - }; - -#endif //__XcapHTTPREQUESTTIMER__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpRequestTimerCallback.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpRequestTimerCallback.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2003 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: MXcapHttpRequestTimerCallback -* -*/ - - - - -#ifndef __XCAPHTTPREQUESTTIMERCALLBACK__ -#define __XCAPHTTPREQUESTTIMERCALLBACK__ - -// CLASS DECLARATION - -/** -* A callback class for the timer class of IMPS Transport layer -*/ -NONSHARABLE_CLASS( MXcapHttpRequestTimerCallback ) - { - public: - - /** - * Pure virtual callback function to be implemented in the - * derived class. This function is called when timer has - * compeleted. - * @param aStatus The integer value of iStatus of the timer class - */ - virtual void HandleTimerEventL() = 0; - }; - -#endif //__XCAPHTTPREQUESTTIMERCALLBACK__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpResponse.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpResponse.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,150 +0,0 @@ -/* -* Copyright (c) 2004 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: CXcapHttpResponse -* -*/ - - - - -#ifndef __XCAPHTTPRESPONSE__ -#define __XCAPHTTPRESPONSE__ - -// INCLUDES -#include -#include "XcapHttpConsts.h" - -//FORWARD DECLARATIONs -class CXcapHttpRequest; -class CXcapHttpAuthManager; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXcapHttpResponse ) : public CBase, - public MHTTPTransactionCallback - { - public: // Constructors and destructor - - /** - * A global logging function for 16 bit data. - * @param aCommand command to be handled - */ - static CXcapHttpResponse* CXcapHttpResponse::NewL( CXcapHttpRequest* aHttpRequest, - CXcapHttpTransport& aTransportMain ); - - /** - * Destructor. - */ - virtual ~CXcapHttpResponse(); - - public: //New functions - - /** - * Stores the address of the proxy currently in use - * @param aProxy Address of the HTTP proxy server - */ - TInt ContentLengthL() const; - - private: - - /** - * A global logging function for 16 bit data. - * @param aCommand command to be handled - */ - CXcapHttpResponse( CXcapHttpRequest* aHttpRequest, - CXcapHttpTransport& aTransportMain ); - - /** - * A global logging function for 16 bit data. - * @param aCommand command to be handled - */ - void ConstructL(); - - /** - * Stores the address of the proxy currently in use - * @param aProxy Address of the HTTP proxy server - */ - RHTTPHeaders ResponseHeaderCollection() const; - - /** - * Stores the address of the proxy currently in use - * @param aProxy Address of the HTTP proxy server - */ - RHTTPHeaders RequestHeaderCollection() const; - - /** - * Stores the address of the proxy currently in use - * @param aProxy Address of the HTTP proxy server - */ - TBool HandleReceivedBodyDataL( const RHTTPTransaction aTransaction ); - - /** - * Stores the address of the proxy currently in use - * @param aProxy Address of the HTTP proxy server - */ - TBool IsUnauthRequest( RHTTPTransaction aTransaction, TInt& aAuthType ); - - /** - * Stores the address of the proxy currently in use - * @param aProxy Address of the HTTP proxy server - */ - TBool ParseAuthInfoParam( TInt& aLength, TAuthInfoParam& aName, - TPtrC8& aValue, TPtr8& aParam ); - - /** - * Stores the address of the proxy currently in use - * @param aProxy Address of the HTTP proxy server - */ - TBool CheckAuthInfoHeaderL( RHTTPHeaders aHeaders ); - - #ifdef _DEBUG - - /** - * Convert undefined HTTP stack errors - */ - void DumpHeadersL( RHTTPHeaders aHeaders, TInt aId ); - - #endif - - private: //From MHTTPTransactionCallback - - /** - * Handles all responses - * coming from the remote host - * @param aTransaction The finished transaction - * @param aEvent Type of the event - */ - void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent ); - - /** - * From MHTTPTransactionCallback, called when the RunL() of a transaction leaves - * @param aInt The error the HTTP framework left with - * @param aTransaction The failed transaction - * @param aEvent The event that was being processed - * @return KErrNone (HTTP framework panics if client returns any other error) - */ - TInt MHFRunError( TInt aInt, RHTTPTransaction aTransaction, const THTTPEvent& aEvent ); - - private: //Data - - TBool iAuthPending; - CXcapHttpRequest* iHttpRequest; - CXcapHttpTransport& iTransportMain; - CXcapHttpAuthManager& iAuthManager; - TInt iUnauthRequestCounter; - }; - - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpTransport.h --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/inc/XcapHttpTransport.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapHttpTransport -* -*/ - - - - -#ifndef __XCAPHTTPTRANSPORT__ -#define __XCAPHTTPTRANSPORT__ - -// INCLUDES -#include -#include - -//COMMON CONSTANTS -_LIT( KTransportLogFile, "HttpTransport" ); -const TInt KTransportLogBufMaxSize = 2000; -_LIT( KTransportDateFormat, "%D%M%Y%/0%1%/1%2%/2%3%/3 %:0%H%:1%T%:2%S.%C%:3"); -const TInt KMaxSubmitSize = 1024; -const TInt KMaxHeaderNameLen = 32; -const TInt KMaxHeaderValueLen = 128; -const TInt KBufferMaxSize = 2048; - -//FORWARD DECLARATIONS -class CXdmLogWriter; -class MMsgConnManager; -class CXcapHttpReqGet; -class CXcapHttpReqPut; -class CXcapHttpReqDelete; -class CXcapHttpAuthManager; -class CXcapHttpReqMkcol; -class CXcapHttpReqHead; - -// CLASS DECLARATION -class CXcapHttpTransport : public CBase - - { - public: // Constructors and destructor - - /** - * Symbian OS default constructor. - */ - IMPORT_C static CXcapHttpTransport* NewL( const TDesC& aRootUri, - MMsgConnManager& aConnManager, - const TXdmCredentials& aDigestCredentials ); - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - IMPORT_C TPtrC8 RootUri(); - - /** - * Send one IMPS message. - */ - IMPORT_C CXcapHttpReqGet* GetL( const TDesC& aUri ); - - /** - * Send one IMPS message. - */ - IMPORT_C CXcapHttpReqPut* PutL( const TDesC& aUri ); - - /** - * Send one IMPS message. - */ - IMPORT_C CXcapHttpReqMkcol* MkcolL( const TDesC& aUri ); - - /** - * Send one IMPS message. - */ - IMPORT_C CXcapHttpReqHead* HeadL( const TDesC& aUri ); - - /** - * Send one IMPS message. - */ - IMPORT_C CXcapHttpReqDelete* DeleteL( const TDesC& aUri ); - - /** - * Stores the address of the proxy currently in use - * @param aProxy Address of the HTTP proxy server - */ - IMPORT_C void SetRootUriL( const TDesC& aRootUri ); - - /** - * Destructor. - */ - IMPORT_C virtual ~CXcapHttpTransport(); - - public: //New functions - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - static TXdmCredentials& Credentials(); - - #ifdef _DEBUG - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - void WriteToLog( TRefByValue aFmt,... ) const; - - /** - * A global logging function for 16 bit data. - * @param aCommand command to be handled - */ - void WriteToLog( TRefByValue aFmt,... ) const; - - #endif //_DEBUG - - private: - - /** - * C++ default constructor. - */ - CXcapHttpTransport( MMsgConnManager& aConnManager ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - void ConstructL( const TDesC& aRootUri, const TXdmCredentials& aDigestCredentials ); - - /** - * Symbian OS default constructor. - * @param aMimeType MIME type of the messages - */ - HBufC8* ConstructRequestUriLC( const TDesC& aDocumentSelector ); - - /** - * Initialises an HTTP session - */ - void InitialiseSessionL(); - - private: //Data - - TBool iCredValidity; - TBool iSessionClosed; - HBufC8* iRootUri; - HBufC8* iProxyBuffer; - RHTTPSession iHttpSession; - CXdmLogWriter* iLogWriter; - MMsgConnManager& iConnManager; - CXcapHttpAuthManager* iAuthManager; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpAuthManager.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpAuthManager.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,578 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpAuthManager -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include "XcapHttpRequest.h" -#include "XcapHttpTransport.h" -#include "XcapHttpAuthManager.h" - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::CXcapHttpAuthManager -// -// ---------------------------------------------------------- -// -CXcapHttpAuthManager::CXcapHttpAuthManager( RHTTPSession& aHttpSession, - CXcapHttpTransport& aTransportMain ) : - iNonceCount( 1 ), - iAuthorized( EFalse ), - iHttpSession( aHttpSession ), - iTransportMain( aTransportMain ), - iStringPool( aHttpSession.StringPool() ) - { - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::NewL -// -// ---------------------------------------------------------- -// -CXcapHttpAuthManager* CXcapHttpAuthManager::NewL( RHTTPSession& aHttpSession, - CXcapHttpTransport& aTransportMain, - const TXdmCredentials& aDigestCredentials ) - { - CXcapHttpAuthManager* self = new ( ELeave ) CXcapHttpAuthManager( aHttpSession, aTransportMain ); - CleanupStack::PushL( self ); - self->ConstructL( aDigestCredentials ); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------- -// CXcapHttpAuthManager::~CXcapHttpAuthManager -// -// ---------------------------------------------------- -// -CXcapHttpAuthManager::~CXcapHttpAuthManager() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpAuthManager::~CXcapHttpAuthManager()" ) ); - #endif - delete iMD5; - delete iRealm; - delete iOpaque; - delete iDomain; - delete iQopString; - delete iAlgorithm; - delete iServerNonce; - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapHttpAuthManager::ConstructL( const TXdmCredentials& aDigestCredentials ) - { - iMD5 = CMD5::NewL(); - iUserName.Copy( aDigestCredentials.iUserName ); - iPassword.Copy( aDigestCredentials.iPassword ); - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::SetAuthorized -// -// ---------------------------------------------------------- -// -void CXcapHttpAuthManager::SetAuthorized( TBool aAuthorized ) - { - iAuthorized = aAuthorized; - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::IsAuthorized -// -// ---------------------------------------------------------- -// -TBool CXcapHttpAuthManager::IsAuthorized() const - { - return iAuthorized; - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::AuthorizationL -// -// ---------------------------------------------------------- -// -HBufC8* CXcapHttpAuthManager::AuthorizationL( CXcapHttpRequest& aHttpRequest ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpAuthManager::AuthorizationL()" ) ); - #endif - if( !iUnauthReceived ) - return NULL; - TInt bufPtr = 0; - HBufC8* ret = NULL; - THTTPHdrVal requestUri; - //All these strings should have been defined - except for - //"opaque", maybe - in the WWW-Authentication header that - //the server sent. In case some of them were not, let's just - //keep going as if they were there, but were empty. The request - //will then fail & be completed in the next MHFRunL() call. - TPtrC8 realm( iRealm ? iRealm->Des() : TPtrC8() ); - TPtrC8 qop( iQopString ? iQopString->Des() : TPtrC8() ); - TPtrC8 opaque( iOpaque ? iOpaque->Des() : TPtrC8() ); - TPtrC8 nonce( iServerNonce ? iServerNonce->Des() : TPtrC8() ); - TPtrC8 uri( aHttpRequest.RelativeUri() ); - TBuf8<8> nonceCount; - nonceCount.AppendFormat( _L8( "%08x" ), iNonceCount ); - CBufFlat* buffer = CBufFlat::NewL( 128 ); - CleanupStack::PushL( buffer ); - buffer->InsertL( bufPtr, KAuthHeaderStart ); - bufPtr = bufPtr + KAuthHeaderStart().Length(); - buffer->InsertL( bufPtr, iUserName ); - bufPtr = bufPtr + iUserName.Length(); - buffer->InsertL( bufPtr, KAuthHeaderParamEndQ ); - bufPtr = bufPtr + KAuthHeaderParamEndQ().Length(); - buffer->InsertL( bufPtr, KAuthHeaderRealm ); - bufPtr = bufPtr + KAuthHeaderRealm().Length(); - buffer->InsertL( bufPtr, realm ); - bufPtr = bufPtr + realm.Length(); - buffer->InsertL( bufPtr, KAuthHeaderParamEndQ ); - bufPtr = bufPtr + KAuthHeaderParamEndQ().Length(); - buffer->InsertL( bufPtr, KAuthHeaderNonce ); - bufPtr = bufPtr + KAuthHeaderNonce().Length(); - buffer->InsertL( bufPtr, nonce ); - bufPtr = bufPtr + nonce.Length(); - buffer->InsertL( bufPtr, KAuthHeaderParamEndQ ); - bufPtr = bufPtr + KAuthHeaderParamEndQ().Length(); - buffer->InsertL( bufPtr, KAuthHeaderUri ); - bufPtr = bufPtr + KAuthHeaderUri().Length(); - buffer->InsertL( bufPtr, uri ); - bufPtr = bufPtr + uri.Length(); - buffer->InsertL( bufPtr, KAuthHeaderParamEndQ ); - bufPtr = bufPtr + KAuthHeaderParamEndQ().Length(); - buffer->InsertL( bufPtr, KAuthHeaderQop ); - bufPtr = bufPtr + KAuthHeaderQop().Length(); - buffer->InsertL( bufPtr, qop ); - bufPtr = bufPtr + qop.Length(); - buffer->InsertL( bufPtr, KAuthHeaderParamEnd ); - bufPtr = bufPtr + KAuthHeaderParamEnd().Length(); - buffer->InsertL( bufPtr, KAuthHeaderNonceCount ); - bufPtr = bufPtr + KAuthHeaderNonceCount().Length(); - buffer->InsertL( bufPtr, nonceCount ); - bufPtr = bufPtr + nonceCount.Length(); - buffer->InsertL( bufPtr, KAuthHeaderParamEnd ); - bufPtr = bufPtr + KAuthHeaderParamEnd().Length(); - buffer->InsertL( bufPtr, KAuthHeaderCNonce ); - bufPtr = bufPtr + KAuthHeaderCNonce().Length(); - buffer->InsertL( bufPtr, iClientNonce ); - bufPtr = bufPtr + iClientNonce.Length(); - buffer->InsertL( bufPtr, KAuthHeaderParamEndQ ); - bufPtr = bufPtr + KAuthHeaderParamEndQ().Length(); - buffer->InsertL( bufPtr, KAuthHeaderResponse ); - bufPtr = bufPtr + KAuthHeaderResponse().Length(); - TPtrC8 respDigest( RequestDigestLC( aHttpRequest )->Des() ); - buffer->InsertL( bufPtr, respDigest ); - bufPtr = bufPtr + respDigest.Length(); - CleanupStack::PopAndDestroy(); //RequestDigestLC() - buffer->InsertL( bufPtr, KAuthHeaderParamEndQ ); - bufPtr = bufPtr + KAuthHeaderParamEndQ().Length(); - if( opaque.Length() > 0 ) - { - buffer->InsertL( bufPtr, KAuthHeaderOpaque ); - bufPtr = bufPtr + KAuthHeaderOpaque().Length(); - buffer->InsertL( bufPtr, opaque ); - bufPtr = bufPtr + opaque.Length(); - buffer->InsertL( bufPtr, KAuthHeaderParamQuote ); - } - ret = HBufC8::NewL( buffer->Size() ); - ret->Des().Copy( buffer->Ptr( 0 ) ); - buffer->Reset(); - iNonceCount++; - CleanupStack::PopAndDestroy(); //buffer - return ret; - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::ConsumeAuthInfoParamL -// -// ---------------------------------------------------------- -// -TBool CXcapHttpAuthManager::ConsumeAuthInfoParamL( TAuthInfoParam aName, const TDesC8& aValue ) - { - //For the time being, always return ETrue - TBool ret = ETrue; - TInt length = aValue.Length(); - TPtr8 value( CONST_CAST( TUint8*, aValue.Ptr() ), length, length ); - Unquote( value ); - #ifdef _DEBUG - TPtrC8 name( KAuthInfoParamArray[aName] ); - iTransportMain.WriteToLog( _L8( "CXcapHttpAuthManager::ConsumeAuthInfoParamL()" ) ); - iTransportMain.WriteToLog( _L8( " Name: %S" ), &name ); - iTransportMain.WriteToLog( _L8( " Value: %S" ), &value ); - #endif - switch( aName ) - { - case ENfoNextnonce: - { - SetNextNonceL( value ); - #ifdef _DEBUG - TPtrC8 nonce( iServerNonce->Des() ); - iTransportMain.WriteToLog( _L8( " -> Nonce set to %S" ), &nonce ); - #endif - } - break; - case ENfoRspauth: - /* TODO */ - break; - case ENfoCnonce: - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " -> Current cnonce %S" ), &iClientNonce ); - #endif - break; - //ret = value.Compare( iClientNonce ) == 0; - case ENfoNc: - { - TBuf8<8> nonceCount; - nonceCount.AppendFormat( _L8( "%08x" ), iNonceCount ); - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " -> Current nonce count %S" ), &nonceCount ); - #endif - //ret = nonceCount.Compare( value ) == 0; - break; - } - case ENfoQop: - ret = ETrue; - break; - default: - ret = ETrue; - break; - } - return ret; - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::GenerateClientNonce -// -// ---------------------------------------------------------- -// -void CXcapHttpAuthManager::SetNextNonceL( const TDesC8& aNextnonce ) - { - delete iServerNonce; - iServerNonce = NULL; - iServerNonce = aNextnonce.AllocL(); - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::Unquote -// -// ---------------------------------------------------------- -// -void CXcapHttpAuthManager::Unquote( TPtr8& aParamValue ) - { - TInt index = aParamValue.Locate( '"' ); - while( index >= 0 ) - { - aParamValue.Delete( index, 1 ); - index = aParamValue.Locate( '\"'); - } - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::RequestDigestLC -// -// ---------------------------------------------------------- -// -HBufC8* CXcapHttpAuthManager::RequestDigestLC( CXcapHttpRequest& aHttpRequest ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpAuthManager::RequestDigestLC()" ) ); - #endif - HBufC8* ret = NULL; - if( iQop == EXcapAuth || iQop == EXcapAuthInt ) - { - TBuf8<8> nonceCount; - TBuf8 hashBush; - nonceCount.AppendFormat( _L8( "%08x" ), iNonceCount ); - TPtrC8 nonce( iServerNonce ? iServerNonce->Des() : TPtrC8() ); - TPtrC8 qop( iQop == EXcapAuth ? _L8( "auth" ) : _L8( "auth-int" ) ); - HBufC8* stringToHash = HBufC8::NewLC( nonce.Length() + qop.Length() + - 3 * KXcapHashLength + 8 + 5 ); - TPtr8 desc( stringToHash->Des() ); - ConstructHA1L( desc ); - desc.Append( ':' ); - desc.Append( nonce ); - desc.Append( ':' ); - desc.Append( nonceCount ); - desc.Append( ':' ); - desc.Append( iClientNonce ); - desc.Append(':'); - desc.Append( qop ); - desc.Append(':'); - ConstructHA2L( hashBush, aHttpRequest ); - desc.Append( hashBush ); - hashBush.Zero(); - ret = HBufC8::NewL( KXcapHashLength ); - Hash( *stringToHash, hashBush ); - ret->Des().Copy( hashBush ); - CleanupStack::PopAndDestroy(); //stringToHash - CleanupStack::PushL( ret ); - } - else - { - /* - * This case is for compatibility with RFC 2069: - * request-digest = <"> < KD ( H(A1), unq(nonce-value) ":" H(A2) ) > <"> - */ - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " Qop not defined, ignore" ) ); - #endif - } - return ret; - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::GenerateClientNonce -// -// ---------------------------------------------------------- -// -void CXcapHttpAuthManager::GenerateClientNonce() - { - TTime time; - TBuf8<33> key; - time.UniversalTime(); - TInt64 randomNumber = Math::Rand( iSeed ); - randomNumber <<= 32; - randomNumber += Math::Rand( iSeed ); - key.Zero(); - key.AppendNum( time.Int64(), EHex ); - key.Append( _L8( ":" ) ); - key.AppendNum( randomNumber, EHex ); - Hash( key, iClientNonce ); - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::Hash -// -// ---------------------------------------------------------- -// -void CXcapHttpAuthManager::Hash( const TDesC8& aMessage, TDes8& aHash ) - { - TBuf8<2> buf; - aHash.Zero(); - iMD5->Reset(); - TPtrC8 hash = iMD5->Hash( aMessage ); - _LIT8( formatStr, "%02x" ); - for( TInt i = 0;i < KXcapRawHashLength;i++ ) - { - buf.Zero(); - buf.Format( formatStr, hash[i] ); - aHash.Append( buf ); - } - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::ParseQopL -// -// ---------------------------------------------------------- -// -void CXcapHttpAuthManager::ParseQopL( const TDesC8& aQopString ) - { - _LIT8( KXcapAuthInt, "auth-int" ); - iQop = aQopString.FindF( KXcapAuthInt ) == 0 ? EXcapAuthInt : EXcapAuth; - delete iQopString; - iQopString = NULL; - iQopString = HBufC8::NewL( 8 ); - iQopString->Des().Copy( iQop == EXcapAuth ? _L8( "auth" ) : _L8( "auth-int" ) ); - #ifdef _DEBUG - TPtrC8 qop( iQopString->Des() ); - iTransportMain.WriteToLog( _L8( " Qop: %S" ), &qop ); - #endif - GenerateClientNonce(); - iNonceCount = 1; - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::ParseHeaderL -// -// ---------------------------------------------------------- -// -TBool CXcapHttpAuthManager::ParseHeaderL( RHTTPTransaction& aTransaction, TInt aAuthType ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpAuthManager::ParseHeaderL()" ) ); - #endif - TBool ret = EFalse; - THTTPHdrVal fieldVal; - RHTTPHeaders headers = aTransaction.Response().GetHeaderCollection(); - RStringF auth = aAuthType == KAuthTypeNormal ? - iStringPool.StringF( HTTP::EWWWAuthenticate, RHTTPSession::GetTable() ) : - iStringPool.StringF( HTTP::EProxyAuthenticate, RHTTPSession::GetTable() ); - headers.GetField( auth, 0, fieldVal ); - if( fieldVal.StrF() == iStringPool.StringF( HTTP::EDigest, RHTTPSession::GetTable() ) ) - { - ret = ETrue; - TInt error = headers.GetParam( auth, iStringPool.StringF( HTTP::ERealm, RHTTPSession::GetTable() ), fieldVal ); - if( KErrNone == error ) - { - delete iRealm; - iRealm = NULL; - iRealm = fieldVal.Str().DesC().AllocL(); - #ifdef _DEBUG - TPtrC8 realm( fieldVal.Str().DesC() ); - iTransportMain.WriteToLog( _L8( " Realm: %S" ), &realm ); - #endif - } - //In a proper WWW-Authentication request there SHOULD have been - //a qop value. In case there was not, call the whole thing off - error = headers.GetParam( auth, iStringPool.StringF( HTTP::EQop, RHTTPSession::GetTable() ), fieldVal ); - if( KErrNone == error ) - ParseQopL( fieldVal.Str().DesC() ); - else - { - delete iQopString; - iQopString = NULL; - ret = EFalse; - } - error = headers.GetParam( auth, iStringPool.StringF( HTTP::ENonce, RHTTPSession::GetTable() ), fieldVal ); - if( ret && KErrNone == error ) - { - SetNextNonceL( fieldVal.Str().DesC() ); - #ifdef _DEBUG - TPtrC8 nonce( iServerNonce->Des() ); - iTransportMain.WriteToLog( _L8( " Nonce: %S" ), &nonce ); - #endif - } - error = headers.GetParam( auth, iStringPool.StringF( HTTP::EOpaque, RHTTPSession::GetTable() ), fieldVal ); - if( ret && KErrNone == error ) - { - delete iOpaque; - iOpaque = NULL; - iOpaque = fieldVal.Str().DesC().AllocL(); - #ifdef _DEBUG - TPtrC8 opaque( iOpaque->Des() ); - iTransportMain.WriteToLog( _L8( " Opaque: %S" ), &opaque ); - #endif - } - error = headers.GetParam( auth, iStringPool.StringF( HTTP::EStale, RHTTPSession::GetTable() ), fieldVal ); - if( ret && KErrNone == error ) - { - #ifdef _DEBUG - TPtrC8 stale( fieldVal.Str().DesC() ); - iTransportMain.WriteToLog( _L8( " Stale: %S" ), &stale ); - #endif - } - error = headers.GetParam( auth, iStringPool.StringF( HTTP::EDomain, RHTTPSession::GetTable() ), fieldVal ); - if( ret && KErrNone == error ) - { - delete iDomain; - iDomain = NULL; - iDomain = fieldVal.Str().DesC().AllocL(); - #ifdef _DEBUG - TPtrC8 domain( iDomain->Des() ); - iTransportMain.WriteToLog( _L8( " Domain: %S" ), &domain ); - #endif - } - error = headers.GetParam( auth, iStringPool.StringF( HTTP::EAlgorithm, RHTTPSession::GetTable() ), fieldVal ); - if( ret && KErrNone == error ) - { - delete iAlgorithm; - iAlgorithm = NULL; - iAlgorithm = fieldVal.Str().DesC().AllocL(); - #ifdef _DEBUG - TPtrC8 algorithm( iAlgorithm->Des() ); - iTransportMain.WriteToLog( _L8( " Algorithm: %S" ), &algorithm ); - #endif - } - } - iUnauthReceived = ETrue; - return ret; - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::ConstructHA1L -// -// ---------------------------------------------------------- -// -void CXcapHttpAuthManager::ConstructHA1L( TDes8& aResult ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpAuthManager::ConstructHA1L()" ) ); - #endif - - TPtrC8 realm( iRealm ? iRealm->Des() : TPtrC8() ); - - HBufC8* buffer = HBufC8::NewLC( iUserName.Length() + - iPassword.Length() + realm.Length() + 2 ); - TPtr8 desc( buffer->Des() ); - desc.Copy( iUserName ); - desc.Append(':'); - desc.Append( realm ); - desc.Append(':'); - desc.Append( iPassword ); - Hash( *buffer, aResult ); - CleanupStack::PopAndDestroy(); //buffer - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::ConstructHA2L -// -// ---------------------------------------------------------- -// -void CXcapHttpAuthManager::ConstructHA2L( TDes8& aResult, CXcapHttpRequest& aHttpRequest ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpAuthManager::ConstructHA2L()" ) ); - #endif - TPtrC8 uri( aHttpRequest.RelativeUri() ); - TPtrC8 method( aHttpRequest.Transaction().Request().Method().DesC() ); - switch( iQop ) - { - case EXcapAuth: - case EXcapAuthNone: - { - HBufC8* buffer = HBufC8::NewLC( uri.Length() + method.Length() + 1 ); - TPtr8 desc( buffer->Des() ); - desc.Copy( method ); - desc.Append( ':' ); - desc.Append( uri ); - Hash( desc, aResult ); - CleanupStack::PopAndDestroy(); //buffer - } - break; - case EXcapAuthInt: - { - TPtrC8 body( _L8( "" ) ); - TBuf8 bodyHash; - if( aHttpRequest.Transaction().Request().HasBody() ) - aHttpRequest.Transaction().Request().Body()->GetNextDataPart( body ); - bodyHash.Zero(); - Hash( body, bodyHash ); - HBufC8* buffer = HBufC8::NewLC( uri.Length() + method.Length() + - KXcapHashLength + 2 ); - TPtr8 desc( buffer->Des() ); - desc.Copy( method ); - desc.Append( ':' ); - desc.Append( uri ); - desc.Append( ':' ); - desc.Append( bodyHash ); - Hash( desc, aResult ); - CleanupStack::PopAndDestroy(); //buffer - } - break; - default: - break; - } - - } - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpContSupplier.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpContSupplier.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,139 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapHttpContSupplier -* -*/ - - - - -// INCLUDE FILES -#include "XcapHttpTransport.h" -#include "XcapHttpContSupplier.h" - -// ================= MEMBER FUNCTIONS ======================= -// - -// ---------------------------------------------------------- -// CXcapHttpContSupplier::CXcapHttpContSupplier -// -// ---------------------------------------------------------- -// -CXcapHttpContSupplier::CXcapHttpContSupplier( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) : - CXcapHttpRequest( aHttpSession, aAuthManager, aTransportMain ) - - { - } - -// ---------------------------------------------------------- -// CXcapHttpContSupplier::~CXcapHttpContSupplier -// -// ---------------------------------------------------------- -// -CXcapHttpContSupplier::~CXcapHttpContSupplier() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpContSupplier::~CXcapHttpContSupplier()" ) ); - #endif - delete iRequestBody; - } - -// ---------------------------------------------------------- -// CXcapHttpContSupplier::SetRequestBodyL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXcapHttpContSupplier::SetRequestBodyL( const TDesC8& aRequestBody ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpContSupplier::SetRequestBodyL" ) ); - #endif - delete iRequestBody; - iRequestBody = NULL; - iRequestBody = HBufC8::NewL( aRequestBody.Length() ); - iRequestBody->Des().Copy( aRequestBody ); - } - -// ---------------------------------------------------------- -// CXcapHttpContSupplier::RequestBody -// -// ---------------------------------------------------------- -// -EXPORT_C TPtrC8 CXcapHttpContSupplier::RequestBody() const - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpContSupplier::RequestBody" ) ); - #endif - return iRequestBody != NULL ? iRequestBody->Des() : TPtrC8(); - } - -// ---------------------------------------------------------- -// CXcapHttpContSupplier::GetNextDataPart -// -// ---------------------------------------------------------- -// -TBool CXcapHttpContSupplier::GetNextDataPart( TPtrC8& aDataPart ) - { - aDataPart.Set( iRequestBody->Des() ); - return ETrue; - } - -// ---------------------------------------------------------- -// CXcapHttpContSupplier::ReleaseData -// -// ---------------------------------------------------------- -// -void CXcapHttpContSupplier::ReleaseData() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpContSupplier::ReleaseData()" ) ); - #endif - //Not just yet, lets see if the server accepts the data. - //If it does, the data needs to be cached and this is - //probably - and hopefully - the only copy of the raw - //data still available at that point in time - //delete iRequestBody; - //iRequestBody = NULL; - } - -// ---------------------------------------------------------- -// CXcapHttpContSupplier::Reset -// -// ---------------------------------------------------------- -// -TInt CXcapHttpContSupplier::Reset() - { - //This method is called when client Cancel()s a request. - //There's nothing to reset in our case, because all needed - //resources are destructed in the destructor. - //NOTE: Never EVER set this method to return anything but - //KErrNone, since values < 0 will result in practically - //untraceable errors thanks to Symbian's lack of proper - //documentation on the issue. - return KErrNone; - } - -// ---------------------------------------------------------- -// CXcapHttpContSupplier::GetNextDataPart -// -// ---------------------------------------------------------- -// -TInt CXcapHttpContSupplier::OverallDataSize() - { - return iRequestBody != NULL ? iRequestBody->Length() : 0; - } - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpHeaderModel.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpHeaderModel.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* -* Copyright (c) 2004 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: CXcapHttpHeaderModel -* -*/ - - - - -// INCLUDE FILES -#include "XcapHttpTransport.h" -#include "XcapHttpHeaderModel.h" - -// ================= MEMBER FUNCTIONS ======================= -// - -// ---------------------------------------------------------- -// CXcapHttpHeaderModel::CXcapHttpHeaderModel -// -// ---------------------------------------------------------- -// -CXcapHttpHeaderModel::CXcapHttpHeaderModel( CXcapHttpTransport& aTransportMain ) : - iTransportMain( aTransportMain) - { - } - -// ---------------------------------------------------------- -// CXcapHttpHeaderModel::NewL -// -// ---------------------------------------------------------- -// -CXcapHttpHeaderModel* CXcapHttpHeaderModel::NewL( const TDesC8& aHeaderName, - const TDesC8& aHeaderValue, - CXcapHttpTransport& aTransportMain ) - - { - CXcapHttpHeaderModel* self = new ( ELeave ) CXcapHttpHeaderModel( aTransportMain ); - CleanupStack::PushL( self ); - self->ConstructL( aHeaderName, aHeaderValue ); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------------- -// CXcapHttpHeaderModel::HeaderValue -// -// ---------------------------------------------------------- -// -void CXcapHttpHeaderModel::ConstructL( const TDesC8& aHeaderName, - const TDesC8& aHeaderValue ) - { - delete iHeaderName; - iHeaderName = NULL; - iHeaderName = aHeaderName.AllocL(); - delete iHeaderValue; - iHeaderValue = NULL; - iHeaderValue = aHeaderValue.AllocL(); - - } - -// ---------------------------------------------------------- -// CXcapHttpHeaderModel::HeaderValue -// -// ---------------------------------------------------------- -// -TPtrC8 CXcapHttpHeaderModel::HeaderValue() const - { - return iHeaderValue != NULL ? iHeaderValue->Des() : TPtrC8(); - } - -// ---------------------------------------------------------- -// CXcapHttpHeaderModel::HeaderValue -// -// ---------------------------------------------------------- -// -TPtrC8 CXcapHttpHeaderModel::HeaderName() const - { - return iHeaderName != NULL ? iHeaderName->Des() : TPtrC8(); - } - -// ---------------------------------------------------------- -// CXcapHttpHeaderModel::~CXcapHttpHeaderModel -// -// ---------------------------------------------------------- -// -CXcapHttpHeaderModel::~CXcapHttpHeaderModel() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpHeaderModel::~CXcapHttpHeaderModel()" ) ); - #endif - delete iHeaderName; - delete iHeaderValue; - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqDelete.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqDelete.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -/* -* Copyright (c) 2004 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: CXcapHttpReqDelete -* -*/ - - - - -// INCLUDE FILES -#include "XcapHttpReqDelete.h" -#include "XcapHttpTransport.h" - -// ================= MEMBER FUNCTIONS ======================= -// - -// ---------------------------------------------------------- -// CXcapHttpReqDelete::CXcapHttpReqDelete -// -// ---------------------------------------------------------- -// -CXcapHttpReqDelete::CXcapHttpReqDelete( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) : - CXcapHttpRequest( aHttpSession, aAuthManager, aTransportMain ) - - { - } - -// ---------------------------------------------------------- -// CXcapHttpReqDelete::NewL -// -// ---------------------------------------------------------- -// -CXcapHttpReqDelete* CXcapHttpReqDelete::NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) - - { - CXcapHttpReqDelete* self = new ( ELeave ) CXcapHttpReqDelete( aHttpSession, aAuthManager, aTransportMain ); - CleanupStack::PushL( self ); - self->BaseConstructL( aRequestUri ); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------------- -// CXcapHttpReqDelete::~CXcapHttpReqDelete -// -// ---------------------------------------------------------- -// -CXcapHttpReqDelete::~CXcapHttpReqDelete() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpReqDelete::~CXcapHttpReqDelete()" ) ); - #endif - } - -// ---------------------------------------------------------- -// CXcapHttpReqDelete::ConstructRequestL -// -// ---------------------------------------------------------- -// -void CXcapHttpReqDelete::ConstructRequestL() - { - CXcapHttpRequest::ConstructRequestL(); - } - -// ---------------------------------------------------------- -// CXcapHttpReqDelete::ConstructRequestL -// -// ---------------------------------------------------------- -// -RStringF CXcapHttpReqDelete::ConstructMethodStringL() - { - return iHttpSession.StringPool().OpenFStringL( KXcapRequestDelete ); - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqGet.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqGet.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* -* Copyright (c) 2004 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: CXcapHttpReqGet -* -*/ - - - - -// INCLUDE FILES -#include "XcapHttpReqGet.h" -#include "XcapHttpTransport.h" - -// ================= MEMBER FUNCTIONS ======================= -// - -// ---------------------------------------------------------- -// CXcapHttpReqGet::CXcapHttpReqGet -// -// ---------------------------------------------------------- -// -CXcapHttpReqGet::CXcapHttpReqGet( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) : - CXcapHttpRequest( aHttpSession, aAuthManager, aTransportMain ) - - { - } - -// ---------------------------------------------------------- -// CXcapHttpReqGet::NewL -// -// ---------------------------------------------------------- -// -CXcapHttpReqGet* CXcapHttpReqGet::NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) - - { - CXcapHttpReqGet* self = new ( ELeave ) CXcapHttpReqGet( aHttpSession, aAuthManager, aTransportMain ); - CleanupStack::PushL( self ); - self->BaseConstructL( aRequestUri ); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------------- -// CXcapHttpReqGet::~CXcapHttpReqGet -// -// ---------------------------------------------------------- -// -CXcapHttpReqGet::~CXcapHttpReqGet() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpReqGet::~CXcapHttpReqGet()" ) ); - #endif - } - -// ---------------------------------------------------------- -// CXcapHttpReqGet::ConstructRequestL -// -// ---------------------------------------------------------- -// -void CXcapHttpReqGet::ConstructRequestL() - { - CXcapHttpRequest::ConstructRequestL(); - } - -// ---------------------------------------------------------- -// CXcapHttpReqGet::ConstructRequestL -// -// ---------------------------------------------------------- -// -RStringF CXcapHttpReqGet::ConstructMethodStringL() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpReqGet::ConstructMethodStringL()" ) ); - #endif - return iHttpSession.StringPool().OpenFStringL( KXcapRequestGet ); - } diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqHead.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqHead.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* ============================================================================ -* Name : CXcapHttpReqHead from XcapHttpReqHead.cpp -* Part of : Transport Adapter of the Symbian OS WV Engine -* -* Description: -/* -* Copyright (c) 2004 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: CXcapHttpReqHead -* -*/ - -// INCLUDE FILES -#include "XcapHttpReqHead.h" -#include "XcapHttpTransport.h" - -// ================= MEMBER FUNCTIONS ======================= -// - -// ---------------------------------------------------------- -// CXcapHttpReqHead::CXcapHttpReqHead -// -// ---------------------------------------------------------- -// -CXcapHttpReqHead::CXcapHttpReqHead( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) : - CXcapHttpRequest( aHttpSession, aAuthManager, aTransportMain ) - - { - } - -// ---------------------------------------------------------- -// CXcapHttpReqHead::NewL -// -// ---------------------------------------------------------- -// -CXcapHttpReqHead* CXcapHttpReqHead::NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) - - { - CXcapHttpReqHead* self = new ( ELeave ) CXcapHttpReqHead( aHttpSession, aAuthManager, aTransportMain ); - CleanupStack::PushL( self ); - self->BaseConstructL( aRequestUri ); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------------- -// CXcapHttpReqHead::~CXcapHttpReqHead -// -// ---------------------------------------------------------- -// -CXcapHttpReqHead::~CXcapHttpReqHead() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpReqHead::~CXcapHttpReqHead()" ) ); - #endif - } - -// ---------------------------------------------------------- -// CXcapHttpReqHead::ConstructRequestL -// -// ---------------------------------------------------------- -// -void CXcapHttpReqHead::ConstructRequestL() - { - CXcapHttpRequest::ConstructRequestL(); - } - -// ---------------------------------------------------------- -// CXcapHttpReqHead::ConstructRequestL -// -// ---------------------------------------------------------- -// -RStringF CXcapHttpReqHead::ConstructMethodStringL() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpReqHead::ConstructMethodStringL()" ) ); - #endif - return iHttpSession.StringPool().OpenFStringL( KXcapRequestHead ); - } diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqMkcol.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqMkcol.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* -* ============================================================================ -* Name : CXcapHttpReqHead from XcapHttpReqHead.cpp -* Part of : Transport Adapter of the Symbian OS WV Engine -* -* Description: -/* -* Copyright (c) 2004 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: CXcapHttpReqMkcol -* -*/ - -// INCLUDE FILES -#include "XcapHttpReqMkcol.h" -#include "XcapHttpTransport.h" - -// ================= MEMBER FUNCTIONS ======================= -// - -// ---------------------------------------------------------- -// CXcapHttpReqMkcol::CXcapHttpReqMkcol -// -// ---------------------------------------------------------- -// -CXcapHttpReqMkcol::CXcapHttpReqMkcol( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) : - CXcapHttpContSupplier( aHttpSession, aAuthManager, aTransportMain ) - - { - } - -// ---------------------------------------------------------- -// CXcapHttpReqMkcol::NewL -// -// ---------------------------------------------------------- -// -CXcapHttpReqMkcol* CXcapHttpReqMkcol::NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) - - { - CXcapHttpReqMkcol* self = new ( ELeave ) CXcapHttpReqMkcol( aHttpSession, aAuthManager, aTransportMain ); - CleanupStack::PushL( self ); - self->BaseConstructL( aRequestUri ); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------------- -// CXcapHttpReqMkcol::~CXcapHttpReqMkcol -// -// ---------------------------------------------------------- -// -CXcapHttpReqMkcol::~CXcapHttpReqMkcol() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpReqMkcol::~CXcapHttpReqMkcol()" ) ); - #endif - } - -// ---------------------------------------------------------- -// CXcapHttpReqMkcol::ConstructRequestL -// -// ---------------------------------------------------------- -// -void CXcapHttpReqMkcol::ConstructRequestL() - { - CXcapHttpRequest::ConstructRequestL(); - iHttpTransaction.Request().SetBody( *this ); - } - -// ---------------------------------------------------------- -// CXcapHttpReqMkcol::ConstructRequestL -// -// ---------------------------------------------------------- -// -RStringF CXcapHttpReqMkcol::ConstructMethodStringL() - { - return iHttpSession.StringPool().OpenFStringL( KXcapRequestMkcol ); - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqPut.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpReqPut.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/* -* Copyright (c) 2004 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: CXcapHttpReqPut -* -*/ - - - - -// INCLUDE FILES -#include "XcapHttpReqPut.h" -#include "XcapHttpTransport.h" - -// ================= MEMBER FUNCTIONS ======================= -// - -// ---------------------------------------------------------- -// CXcapHttpReqPut::CXcapHttpReqPut -// -// ---------------------------------------------------------- -// -CXcapHttpReqPut::CXcapHttpReqPut( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) : - CXcapHttpContSupplier( aHttpSession, aAuthManager, aTransportMain ) - - { - } - -// ---------------------------------------------------------- -// CXcapHttpReqPut::NewL -// -// ---------------------------------------------------------- -// -CXcapHttpReqPut* CXcapHttpReqPut::NewL( const TDesC& aRequestUri, - RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) - - { - CXcapHttpReqPut* self = new ( ELeave ) CXcapHttpReqPut( aHttpSession, aAuthManager, aTransportMain ); - CleanupStack::PushL( self ); - self->BaseConstructL( aRequestUri ); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------------- -// CXcapHttpReqPut::~CXcapHttpReqPut -// -// ---------------------------------------------------------- -// -CXcapHttpReqPut::~CXcapHttpReqPut() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpReqPut::~CXcapHttpReqPut()" ) ); - #endif - } - -// ---------------------------------------------------------- -// CXcapHttpReqPut::ConstructRequestL -// -// ---------------------------------------------------------- -// -void CXcapHttpReqPut::ConstructRequestL() - { - CXcapHttpRequest::ConstructRequestL(); - iHttpTransaction.Request().SetBody( *this ); - } - -// ---------------------------------------------------------- -// CXcapHttpReqPut::ConstructRequestL -// -// ---------------------------------------------------------- -// -RStringF CXcapHttpReqPut::ConstructMethodStringL() - { - return iHttpSession.StringPool().OpenFStringL( KXcapRequestPut ); - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpRequest.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpRequest.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,681 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpRequest -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include "XdmCredentials.h" -#include "XcapHttpRequest.h" -#include "XcapHttpResponse.h" -#include "XcapHttpTransport.h" -#include "XcapHttpHeaderModel.h" -#include "XcapHttpAuthManager.h" -#include "XcapHttpRequestTimer.h" - -// ================= MEMBER FUNCTIONS ======================= -// - -// ---------------------------------------------------------- -// CXcapHttpRequest::CXcapHttpRequest -// -// ---------------------------------------------------------- -// -CXcapHttpRequest::CXcapHttpRequest( RHTTPSession& aHttpSession, - CXcapHttpAuthManager& aAuthManager, - CXcapHttpTransport& aTransportMain ) : - iHttpSession( aHttpSession ), - iTransportMain( aTransportMain ), - iSent( EFalse ), - iActive( EFalse ), - iCancelled( EFalse ), - iConstructed( EFalse ), - iAuthManager( aAuthManager ) - - { - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::BaseConstructL -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::BaseConstructL( const TDesC& aRequestUri ) - { - SetRequestUriL( aRequestUri ); - iHttpResponse = CXcapHttpResponse::NewL( this, iTransportMain ); - iResponseBuffer = CBufSeg::NewL( 250 ); - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::~CXcapHttpRequest -// -// ---------------------------------------------------------- -// -CXcapHttpRequest::~CXcapHttpRequest() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::~CXcapHttpRequest()" ) ); - #endif - delete iExpiryTimer; - delete iHttpResponse; - delete iRequestUriBuf; - ReleaseResponseData(); - delete iResponseBuffer; - delete iWholeUri; - iHeaderCollection.Close(); - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::DispatchRequestL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXcapHttpRequest::DispatchRequestL( TRequestStatus& aClientStatus ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::DispatchMessageL()" ) ); - iSendTime = TimeL(); - #endif - ConstructRequestL(); - DoSetHeadersL(); - iCurrentDataLength = 0; - aClientStatus = KRequestPending; - iClientStatus = &aClientStatus; - iHttpTransaction.SubmitL(); - SetStatus( ETrue ); - iActive = ETrue; - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::ConstructRequest -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::ConstructRequestL() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::ConstructRequestL() - Constructed: %d" ), iConstructed ); - #endif - if( !iConstructed ) - { - RStringF method = ConstructMethodStringL(); - CleanupClosePushL( method ); - iHttpTransaction = iHttpSession.OpenTransactionL( iRequestUri, *iHttpResponse, method ); - CleanupStack::PopAndDestroy(); //method - RHTTPHeaders hdrs = iHttpTransaction.Request().GetHeaderCollection(); - iConstructed = ETrue; - } - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::UpdateRequestUriL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXcapHttpRequest::UpdateRequestUriL( const TDesC8& aUpdatedUri ) - { - HBufC* temp = HBufC::NewLC( aUpdatedUri.Length() ); - temp->Des().Copy( aUpdatedUri ); - SetRequestUriL( temp->Des() ); - CleanupStack::PopAndDestroy(); - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::ResetUriL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXcapHttpRequest::ResetUriL( const TDesC& aNewUri ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::ResetUriL()" ) ); - #endif - delete iRequestUriBuf; - iRequestUriBuf = NULL; - delete iWholeUri; - iWholeUri = NULL; - iWholeUri = HBufC8::NewL( aNewUri.Length() ); - iWholeUri->Des().Copy( aNewUri ); - iRequestUri.Parse( iWholeUri->Des() ); - #ifdef _DEBUG - TPtrC8 address( iRequestUri.UriDes() ); - iTransportMain.WriteToLog( _L8( " New URI %S"), &address ); - #endif - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::RequestUriL -// -// ---------------------------------------------------------- -// -EXPORT_C TPtrC8 CXcapHttpRequest::RequestUriL() const - { - return iRequestUriBuf != NULL ? iRequestUriBuf->Des() : TPtrC8(); - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::ResendL -// -// ---------------------------------------------------------- -// -CXcapHttpAuthManager& CXcapHttpRequest::AuthManager() - { - return iAuthManager; - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::ResendWithAuthL -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::ResendWithAuthL( TInt aAuthType ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::ResendWithAuthL() - Auth type: %d" ), aAuthType ); - #endif - iHttpTransaction.Cancel(); - if( iExpiryTimer != NULL && iExpiryTimer->IsActive() ) - iExpiryTimer->Cancel(); - RHTTPHeaders hdrs = iHttpTransaction.Request().GetHeaderCollection(); - AppendAuthorizationHeaderL( hdrs, aAuthType ); - iHttpTransaction.SubmitL(); - SetStatus( ETrue ); - iActive = ETrue; - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::Transaction -// -// ---------------------------------------------------------- -// -RHTTPTransaction& CXcapHttpRequest::Transaction() - { - return iHttpTransaction; - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::RelativeUri -// -// ---------------------------------------------------------- -// -TPtrC8 CXcapHttpRequest::RelativeUri() const - { - TPtrC8 absolute( iRequestUri.UriDes() ); - TPtrC8 temp( absolute.Mid( absolute.FindF( _L8( "//" ) ) + 2 ) ); - return temp.Mid( temp.LocateF( '/' ) ); - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::SetStatus -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::SetRequestUriL( const TDesC& aRequestUri ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::SetRequestUriL()") ); - #endif - delete iRequestUriBuf; - iRequestUriBuf = NULL; - iRequestUriBuf = HBufC8::NewL( aRequestUri.Length() ); - iRequestUriBuf->Des().Copy( aRequestUri ); - TPtrC8 document = iRequestUriBuf->Des(); - TPtrC8 root = iTransportMain.RootUri(); - delete iWholeUri; - iWholeUri = NULL; - iWholeUri = HBufC8::NewL( root.Length() + document.Length() ); - iWholeUri->Des().Copy( root ); - iWholeUri->Des().Append( document ); - iRequestUri.Parse( iWholeUri->Des() ); - #ifdef _DEBUG - TPtrC8 address( iRequestUri.UriDes() ); - iTransportMain.WriteToLog( _L8( " URI %S"), &address ); - #endif - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::SetStatus -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::SetStatus( const TBool aSent ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::SetStatus()" ) ); - #endif - iSent = aSent; - if( iSent ) - { - if( iExpiryTimer != NULL && !iExpiryTimer->IsActive() ) - iExpiryTimer->ActivateTimer( iExpiryTime ); - } - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::SetStatus(): Status %d"), iSent ); - #endif - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::SetHeaderL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXcapHttpRequest::SetHeaderL( const TDesC8& aHeaderName, - const TDesC8& aHeaderValue ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::SetHeaderL()" ) ); - iTransportMain.WriteToLog( _L8( " Header name: %S" ), &aHeaderName ); - iTransportMain.WriteToLog( _L8( " Header value: %S" ), &aHeaderValue ); - #endif - CXcapHttpHeaderModel* model = CXcapHttpHeaderModel::NewL( aHeaderName, aHeaderValue, iTransportMain ); - CleanupStack::PushL( model ); - User::LeaveIfError( iHeaderCollection.Append( model ) ); - CleanupStack::Pop(); //model - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::HeaderValue -// -// ---------------------------------------------------------- -// -EXPORT_C TPtrC8 CXcapHttpRequest::HeaderValue( const HTTP::TStrings aHeaderName ) const - { - THTTPHdrVal value; - RStringPool stringPool = iHttpSession.StringPool(); - RHTTPHeaders headerCollection = iHttpTransaction.Response().GetHeaderCollection(); - RStringF hdrName = stringPool.StringF( aHeaderName, RHTTPSession::GetTable() ); - headerCollection.GetField( hdrName, 0, value ); - hdrName.Close(); - if( value.Type() == THTTPHdrVal::KStrVal ) - return value.Str().DesC(); - else if( value.Type() == THTTPHdrVal::KStrFVal ) - return value.StrF().DesC(); - else return TPtrC8(); - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::DoSetHeadersL -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::DoSetHeadersL() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::DoSetHeadersL()" ) ); - #endif - TInt count = iHeaderCollection.Count(); - RHTTPHeaders hdrs = iHttpTransaction.Request().GetHeaderCollection(); - if( iAuthManager.IsAuthorized() ) - AppendAuthorizationHeaderL( hdrs, KAuthTypeNormal ); - if( iConstructed && count > 0 ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "--------------------" ) ); - iTransportMain.WriteToLog( _L8( "User-set headers:" ) ); - #endif - for( TInt i = 0;i < count;i++ ) - { - TPtrC8 name = iHeaderCollection[i]->HeaderName(); - TPtrC8 value = iHeaderCollection[i]->HeaderValue(); - RStringF nameString = iHttpSession.StringPool().OpenFStringL( name ); - CleanupClosePushL( nameString ); - RStringF valueString = iHttpSession.StringPool().OpenFStringL( value ); - CleanupClosePushL( valueString ); - hdrs.SetFieldL( nameString, valueString ); - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "* %S: %S" ), &name, &value ); - #endif - CleanupStack::PopAndDestroy( 2 ); //valueString, nameString - } - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "--------------------" ) ); - #endif - } - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::AppendAuthorizationHeaderL -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::AppendAuthorizationHeaderL( RHTTPHeaders& aHeaderCollection, TInt aAuthType ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::AppendAuthorizationHeaderL()" ) ); - #endif - HBufC8* authorization = iAuthManager.AuthorizationL( *this ); - if( authorization != NULL ) - { - RemoveDuplicateAuth(); - CleanupStack::PushL( authorization ); - RStringF valStr = iHttpSession.StringPool().OpenFStringL( *authorization ); - CleanupClosePushL( valStr ); - switch( aAuthType ) - { - case KAuthTypeNormal: - aHeaderCollection.SetFieldL( iHttpSession.StringPool().StringF( - HTTP::EAuthorization, RHTTPSession::GetTable() ), valStr ); - break; - case KAuthTypeProxy: - aHeaderCollection.SetFieldL( iHttpSession.StringPool().StringF( - HTTP::EProxyAuthorization, RHTTPSession::GetTable() ), valStr ); - break; - default: - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " Default case: %d" ), aAuthType ); - #endif - break; - } - CleanupStack::PopAndDestroy( 2 ); //valStr, authorization - } - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::RemoveDuplicateAuth -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::RemoveDuplicateAuth() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::RemoveDuplicateAuth()" ) ); - #endif - RStringPool spool = iHttpSession.StringPool(); - RHTTPHeaders requestHeaders( iHttpTransaction.Request().GetHeaderCollection() ); - //Check for existence of the header is not needed, remove both if they're there - requestHeaders.RemoveField( spool.StringF( HTTP::EAuthorization, RHTTPSession::GetTable() ) ); - requestHeaders.RemoveField( spool.StringF( HTTP::EProxyAuthorization, RHTTPSession::GetTable() ) ); - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::AppendDataL -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::AppendDataL( const TPtrC8& aBodyPart ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::AppendDataL() - Current: %d" ), - iCurrentDataLength ); - #endif - iResponseBuffer->ResizeL( iCurrentDataLength + aBodyPart.Length() ); - iResponseBuffer->Write( iCurrentDataLength, aBodyPart ); - iCurrentDataLength = iCurrentDataLength + aBodyPart.Length(); - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " Current: %d" ), iCurrentDataLength ); - iTransportMain.WriteToLog( _L8( " Buffer size: %d" ), iResponseBuffer->Size() ); - #endif - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::SetStatus -// -// ---------------------------------------------------------- -// -RHTTPSession& CXcapHttpRequest::Session() - { - return iHttpSession; - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::SetStatus -// -// ---------------------------------------------------------- -// -EXPORT_C TXdmCompletionData* CXcapHttpRequest::ResponseData() - { - return &iRespData; - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::ReleaseResponseData -// -// ---------------------------------------------------------- -// -EXPORT_C void CXcapHttpRequest::ReleaseResponseData() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::ReleaseResponseData()" ) ); - #endif - if( iRespData.iETag != NULL ) - { - delete iRespData.iETag; - iRespData.iETag = NULL; - } - if( iRespData.iStatusText != NULL ) - { - delete iRespData.iStatusText; - iRespData.iStatusText = NULL; - } - if( iRespData.iResponseData != NULL ) - { - delete iRespData.iResponseData; - iRespData.iResponseData = NULL; - } - if( iConstructed ) - { - iConstructed = EFalse; - iHttpTransaction.Close(); - } - iHeaderCollection.ResetAndDestroy(); - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::SetExpiryTimeL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXcapHttpRequest::SetExpiryTimeL( MXcapHttpRequestTimerCallback* /*aCallback*/, - const TTimeIntervalMicroSeconds32 aExpiryTime ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::SetExpiryTimeL()" ) ); - #endif - if( iExpiryTimer == NULL ) - iExpiryTimer = CXcapHttpRequestTimer::NewL( iTransportMain, this ); - iExpiryTime = aExpiryTime; - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::FinaliseRequestL -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::FinaliseRequestL( TInt aErrorCode ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::FinaliseRequestL()" ) ); - iTransportMain.WriteToLog( _L8( " Error: %d" ), aErrorCode ); - iTransportMain.WriteToLog( _L8( " Active: %d" ), iActive ); - #endif - if( iActive ) - { - iActive = EFalse; - if( iExpiryTimer ) - iExpiryTimer->Cancel(); - PrepareResponseBodyL(); - CompileResponseDataL( aErrorCode ); - User::RequestComplete( iClientStatus, aErrorCode ); - delete iWholeUri; - iWholeUri = NULL; - } - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::CancelRequest -// -// ---------------------------------------------------------- -// -EXPORT_C void CXcapHttpRequest::CancelRequest() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::CancelRequest()" ) ); - #endif - if( iActive ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " Request is active, cancelling..." ) ); - #endif - if( iExpiryTimer ) - iExpiryTimer->Cancel(); - iActive = EFalse; - iConstructed = EFalse; - iHttpTransaction.Close(); - iRespData.iETag = NULL; - iRespData.iStatusText = NULL; - iRespData.iResponseData = NULL; - iRespData.iCompletion = KErrCancel; - iRespData.iHttpStatus = KErrCancel; - User::RequestComplete( iClientStatus, KErrCancel ); - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " Request completed with KErrCancel" ) ); - #endif - } - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::CompileResponseData -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::CompileResponseDataL( TInt aErrorCode ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L( "CXcapHttpRequest::CompileResponseData()" ) ); - #endif - RHTTPResponse response = iHttpTransaction.Response(); - TInt statusInt = response.StatusCode(); - RStringF statusStr = response.StatusText(); - HBufC8* statusBuf = statusStr.DesC().AllocLC(); - TPtrC8 etagDesc( HeaderValue( HTTP::EETag ) ); - HBufC8* eTag = etagDesc.Length() > 0 ? etagDesc.AllocL() : NULL; - iRespData.iETag = eTag; - iRespData.iHttpStatus = statusInt; - iRespData.iStatusText = statusBuf; - iRespData.iCompletion = aErrorCode; - iRespData.iResponseData = iFlatResponse; - CleanupStack::Pop(); //statusBuf - #ifdef _DEBUG - if( iRespData.iResponseData != NULL ) - { - TBuf<32> response( _L( "response" ) ); - response.AppendNum( iHttpTransaction.Id() ); - response.Append( _L( ".xml" ) ); - DumpResponseL( *iRespData.iResponseData, response ); - } - #endif - } - -#ifdef _DEBUG -// --------------------------------------------------------- -// CXcapHttpRequest::DumpResponseL -// -// --------------------------------------------------------- -// -void CXcapHttpRequest::DumpResponseL( const TDesC8& aRespData, const TDesC& aDumpName ) - { - RFile file; - RFs session; - TBuf<512> path( _L( "C:\\logs\\XDM\\" ) ); - path.Append( aDumpName ); - User::LeaveIfError( session.Connect() ); - TInt error( file.Replace( session, path, EFileWrite ) ); - if( error == KErrNone ) - { - file.Write( aRespData ); - file.Close(); - } - session.Close(); - } -#endif - -// ---------------------------------------------------------- -// CXcapHttpRequest::PrepareResponseBodyL -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::PrepareResponseBodyL() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::PrepareResponseBodyL()" ) ); - #endif - iResponseBuffer->Compress(); - TInt dataLength = iResponseBuffer->Size(); - #ifdef _DEBUG - TInt contentLength = iHttpResponse->ContentLengthL(); - if( contentLength >= 0 && contentLength < KMaxTInt ) - { - TPtrC8 result; - contentLength == dataLength ? result.Set( _L8( "Correct" ) ) : - result.Set( _L8( "Values do not match!" ) ); - iTransportMain.WriteToLog( _L8( " Actual length: %d *** Content-Length: %d => %S" ), - dataLength, contentLength, &result ); - } - #endif - if( dataLength > 0 ) - { - iFlatResponse = HBufC8::NewL( dataLength ); - TPtr8 pointer( iFlatResponse->Des() ); - iResponseBuffer->Read( 0, pointer, dataLength ); - //pointer.Copy( iResponseBuffer->Ptr( 0 ) ); - iResponseBuffer->Reset(); - iCurrentDataLength = 0; - } - } - -// ---------------------------------------------------------- -// CXcapHttpRequest::HandleTimerEventL -// -// ---------------------------------------------------------- -// -void CXcapHttpRequest::HandleTimerEventL() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequest::HandleTimerEventL()" ) ); - #endif - iHttpTransaction.Close(); - iActive = EFalse; - iConstructed = EFalse; - iRespData.iETag = NULL; - iRespData.iStatusText = NULL; - iRespData.iResponseData = NULL; - iRespData.iCompletion = KErrTimedOut; - iRespData.iHttpStatus = KErrTimedOut; - User::RequestComplete( iClientStatus, KErrTimedOut ); - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " Request completed with KErrTimedOut" ) ); - #endif - } - -// --------------------------------------------------------- -// CXcapHttpRequest::TimeL -// -// --------------------------------------------------------- -// -TInt CXcapHttpRequest::TimeL() const - { - TInt period = 0; - User::LeaveIfError( HAL::Get( HALData::ESystemTickPeriod, period ) ); - TInt millisecsPerTick = period / 1000; - return User::TickCount() * millisecsPerTick; - } - -// End of file - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpRequestTimer.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpRequestTimer.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapHttpRequestTimer -* -*/ - - - - -// INCLUDES -#include "XcapHttpTransport.h" -#include "XcapHttpRequestTimer.h" - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CXcapHttpRequestTimer::CXcapHttpRequestTimer( CXcapHttpTransport& aTransportMain, - MXcapHttpRequestTimerCallback* aCallback ) : - CActive( 0 ), - iTransportMain( aTransportMain ), - iCallback( aCallback ) - - - { - } - -// --------------------------------------------------------- -// CXcapHttpRequestTimer::ConstructL() -// -// --------------------------------------------------------- -// -void CXcapHttpRequestTimer::ConstructL() - { - User::LeaveIfError( iTimer.CreateLocal() ); - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------- -// CXcapHttpRequestTimer::NewL -// -// --------------------------------------------------------- -// -CXcapHttpRequestTimer* CXcapHttpRequestTimer::NewL( CXcapHttpTransport& aTransportMain, - MXcapHttpRequestTimerCallback* aCallback ) - { - CXcapHttpRequestTimer* self = new ( ELeave ) CXcapHttpRequestTimer( aTransportMain, aCallback ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXcapHttpRequestTimer::~CXcapHttpRequestTimer() -// -// --------------------------------------------------------- -// -CXcapHttpRequestTimer::~CXcapHttpRequestTimer() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequestTimer::~CXcapHttpRequestTimer()" ) ); - #endif - Cancel(); - iTimer.Close(); - } - - -// --------------------------------------------------------- -// CXcapHttpRequestTimer::ActivateTimer -// -// --------------------------------------------------------- -// -void CXcapHttpRequestTimer::ActivateTimer( TTimeIntervalMicroSeconds32 aDelay ) - { - __ASSERT_ALWAYS( !IsActive(), User::Panic( _L( "CXcapHttpRequestTimer" ), 1 ) ); - iTimer.After( iStatus, aDelay ); - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequestTimer activated." ) ); - #endif - SetActive(); - } - -// --------------------------------------------------------- -// CXcapHttpRequestTimer::RunL -// -// --------------------------------------------------------- -// -void CXcapHttpRequestTimer::RunL() - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequestTimer::RunL()." ) ); - #endif - iCallback->HandleTimerEventL(); - } - -// --------------------------------------------------------- -// CXcapHttpRequestTimer::DoCancel -// -// --------------------------------------------------------- -// -void CXcapHttpRequestTimer::DoCancel() - { - iTimer.Cancel(); - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpRequestTimer cancelled." ) ); - #endif - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpResponse.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpResponse.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,442 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapHttpResponse -* -*/ - - - - -// INCLUDE FILES -#include -#include "XdmCredentials.h" -#include "XcapHttpRequest.h" -#include "XcapHttpResponse.h" -#include "XcapHttpTransport.h" -#include "XcapHttpAuthManager.h" - -const TUint KMaxRetryCount = 3; - -// ================= MEMBER FUNCTIONS ======================= -// - - -// ---------------------------------------------------------- -// CXcapHttpResponse::CXcapHttpResponse -// -// ---------------------------------------------------------- -// -CXcapHttpResponse::CXcapHttpResponse( CXcapHttpRequest* aHttpRequest, - CXcapHttpTransport& aTransportMain ) : - iAuthPending( EFalse ), - iHttpRequest( aHttpRequest ), - iTransportMain( aTransportMain ), - iAuthManager( iHttpRequest->AuthManager() ) - { - } - -// ---------------------------------------------------- -// CXcapHttpResponse::NewL -// -// ---------------------------------------------------- -// -CXcapHttpResponse* CXcapHttpResponse::NewL( CXcapHttpRequest* aHttpRequest, - CXcapHttpTransport& aTransportMain ) - { - CXcapHttpResponse* self = new ( ELeave ) CXcapHttpResponse( aHttpRequest, aTransportMain ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------- -// CXcapHttpResponse::ConstructL -// -// ---------------------------------------------------- -// -void CXcapHttpResponse::ConstructL() - { - } - -// ---------------------------------------------------- -// CXcapHttpResponse::~CXcapHttpResponse() -// Destructor -// ---------------------------------------------------- -// -CXcapHttpResponse::~CXcapHttpResponse() - { - } - -// ---------------------------------------------------- -// CXcapHttpResponse::MHFRunL -// -// ---------------------------------------------------- -// -void CXcapHttpResponse::MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent ) - { - TInt status = aTransaction.Response().StatusCode(); - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpResponse::MHFRunL()" ) ); - iTransportMain.WriteToLog( _L8( " HTTP status: %d" ), status ); - iTransportMain.WriteToLog( _L8( " Event status: %d" ), aEvent.iStatus ); - iTransportMain.WriteToLog( _L8( " TransID: %d " ), aTransaction.Id() ); - #endif - switch( aEvent.iStatus ) - { - case THTTPEvent::EGotResponseHeaders: - #ifdef _DEBUG - DumpHeadersL( aTransaction.Response().GetHeaderCollection(), aTransaction.Id() ); - //DumpHeadersL( aTransaction.Request().GetHeaderCollection(), aTransaction.Id() ); - #endif - TInt authType; - if( IsUnauthRequest( aTransaction, authType ) ) - { - // If server keeps on sending 401 resposenses. Will stop - // sending new requests after 3 trys. - if ( KMaxRetryCount == iUnauthRequestCounter ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( - _L8( " Max retry count. Stop sending auth requests to server." ) ); - #endif - iHttpRequest->FinaliseRequestL( KErrCancel ); - aTransaction.Cancel(); - } - //We only support Digest => If Basic is defined, stop. - else if( iAuthManager.ParseHeaderL( aTransaction, authType ) ) - { - iHttpRequest->ResendWithAuthL( authType ); - iAuthPending = ETrue; - } - else - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " Basic authentication not supported" ) ); - #endif - iHttpRequest->FinaliseRequestL( KXcapErrorAuthentication ); - aTransaction.Cancel(); - } - } - else if( iAuthPending && ( status != 401 && status != 403 ) ) - { - iAuthPending = EFalse; - iAuthManager.SetAuthorized( ETrue ); - } - else if( !CheckAuthInfoHeaderL( aTransaction.Response().GetHeaderCollection() ) ) - { - //This means that something was wrong with the Authentication-Info header - //the server returned. Do not take any chances here, but stop. - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " Something's wrong with Authentication-Info => STOP" ) ); - #endif - iHttpRequest->FinaliseRequestL( KXcapErrorAuthentication ); - aTransaction.Cancel(); - } - break; - case THTTPEvent::EGotResponseBodyData: - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "MHFRunL() - A body part received" ) ); - #endif - HandleReceivedBodyDataL( aTransaction ); - break; - case THTTPEvent::EResponseComplete: - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " * Transaction complete") ); - #endif - break; - case THTTPEvent::ESucceeded: - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " * Transaction succeeded") ); - #endif - iHttpRequest->FinaliseRequestL( KErrNone ); - break; - case THTTPEvent::EFailed: - { - TInt completion = aEvent.iStatus < 0 ? aEvent.iStatus : KErrNone; - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " * Transaction failed - Completion: %d"), completion ); - #endif - iHttpRequest->FinaliseRequestL( completion ); - } - break; - case THTTPEvent::ERedirectedPermanently: - break; - case THTTPEvent::ERedirectedTemporarily: - break; - default: - { - if( aEvent.iStatus < KErrNone ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " * Transaction failed, stop" ) ); - #endif - iHttpRequest->FinaliseRequestL( aEvent.iStatus ); - } - else - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( " * Unknown status, stop" ) ); - #endif - iHttpRequest->FinaliseRequestL( KErrUnknown ); - } - } - break; - } - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::CheckAuthInfoHeaderL -// -// ---------------------------------------------------------- -// -TBool CXcapHttpResponse::CheckAuthInfoHeaderL( RHTTPHeaders aHeaders ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpResponse::CheckAuthInfoHeaderL()" ) ); - #endif - THTTPHdrVal fieldVal; - TBool authOk = ETrue; - TPtrC8 rawData( _L8( "" ) ); - RStringPool spool = iHttpRequest->Session().StringPool(); - RStringF authInfo = spool.OpenFStringL( TPtrC8( KAuthInfoParamArray[ENfoAuthInfo] ) ); - CleanupClosePushL( authInfo ); - RStringF prxAuthInfo = spool.OpenFStringL( TPtrC8( KAuthInfoParamArray[ENfoPrxAuthInfo] ) ); - CleanupClosePushL( prxAuthInfo ); - if( aHeaders.GetRawField( authInfo, rawData ) == KErrNone || - aHeaders.GetRawField( prxAuthInfo, rawData ) == KErrNone ) - { - TInt length = 0; - HBufC8* tempCopy = rawData.AllocLC(); - TPtr8 modDesc( tempCopy->Des() ); - while( authOk && modDesc.Length() > 0 ) - { - TPtrC8 value; - TAuthInfoParam name = ( TAuthInfoParam )-1; - if( ParseAuthInfoParam( length, name, value, modDesc ) ) - authOk = iAuthManager.ConsumeAuthInfoParamL( name, value ); - modDesc.Delete( 0, length ); - modDesc.TrimLeft(); - } - CleanupStack::PopAndDestroy(); //tempCopy - } - CleanupStack::PopAndDestroy( 2 ); //prxAuthInfo, authInfo - return authOk; - } - -// ---------------------------------------------------------- -// CXcapHttpAuthManager::ParseAuthInfoParam -// -// ---------------------------------------------------------- -// -TBool CXcapHttpResponse::ParseAuthInfoParam( TInt& aLength, TAuthInfoParam& aName, TPtrC8& aValue, TPtr8& aParam ) - { - TBool found = EFalse; - TInt delim = aParam.Locate( ',' ); - TPtrC8 param( delim > 0 ? aParam.Left( delim ) : aParam ); - TInt index = param.Locate( '=' ); - if( index > 0 ) - { - TPtrC8 name( param.Left( index ) ); - TPtrC8 value( param.Mid( index + 1 ) ); - const TInt count = sizeof( KAuthInfoParamArray ) / sizeof( KAuthInfoParamArray[0] ); - for( TInt i = 0;!found && i < count;i++ ) - { - if( name.CompareF( TPtrC8( KAuthInfoParamArray[i] ) ) == 0 ) - { - aValue.Set( value ); - aName = ( TAuthInfoParam )i; - found = ETrue; - } - } - } - aLength = delim > 0 ? delim + 1 : aParam.Length(); - return found; - } - - -// ---------------------------------------------------------- -// CXcapHttpResponse::IsUnauthRequest -// -// ---------------------------------------------------------- -// -TBool CXcapHttpResponse::IsUnauthRequest( RHTTPTransaction aTransaction, TInt& aAuthType ) - { - iUnauthRequestCounter++; - TInt status = aTransaction.Response().StatusCode(); - switch( status ) - { - case 401: //Normal authentication - aAuthType = 401; - return ETrue; - case 407: //Proxy authentication - aAuthType = 407; - return ETrue; - default: - return EFalse; - } - } - -// ---------------------------------------------------------- -// CXcapHttpResponse::HandleReceivedBodyDataL -// -// ---------------------------------------------------------- -// -TBool CXcapHttpResponse::HandleReceivedBodyDataL( const RHTTPTransaction aTransaction ) - { - #ifdef _DEBUG - iTransportMain.WriteToLog( _L8( "CXcapHttpResponse::HandleReceivedBodyDataL()") ); - #endif - TPtrC8 bodyData; - MHTTPDataSupplier* respBody = aTransaction.Response().Body(); - TBool lastChunk = respBody->GetNextDataPart( bodyData ); - iHttpRequest->AppendDataL( bodyData ); - respBody->ReleaseData(); - return lastChunk; - } - -// ---------------------------------------------------------- -// CImpsHttpTransactionSender::ContentLengthL -// -// ---------------------------------------------------------- -// -TInt CXcapHttpResponse::ContentLengthL() const - { - TInt retVal = KMaxTInt; - THTTPHdrVal fieldValue; - _LIT8( KContentLength, "Content-Length" ); - RHTTPHeaders headers = ResponseHeaderCollection(); - RStringPool stringPool = iHttpRequest->Session().StringPool(); - RStringF lengthString = stringPool.OpenFStringL( KContentLength ); - headers.GetField( lengthString, 0, fieldValue ); - lengthString.Close(); - if( fieldValue.Type() == THTTPHdrVal::KTIntVal ) - retVal = fieldValue.Int(); - return retVal; - } - -// ---------------------------------------------------- -// CXcapHttpResponse::HeaderCollection -// -// ---------------------------------------------------- -// -RHTTPHeaders CXcapHttpResponse::ResponseHeaderCollection() const - { - return iHttpRequest->Transaction().Response().GetHeaderCollection(); - } - -// ---------------------------------------------------- -// CXcapHttpResponse::HeaderCollection -// -// ---------------------------------------------------- -// -RHTTPHeaders CXcapHttpResponse::RequestHeaderCollection() const - { - return iHttpRequest->Transaction().Request().GetHeaderCollection(); - } - -// ---------------------------------------------------- -// CXcapHttpResponse::MHFRunError -// HTTP Stack callback interface -// ---------------------------------------------------- -// -TInt CXcapHttpResponse::MHFRunError( TInt /*aInt*/, RHTTPTransaction /*aTransaction*/, - const THTTPEvent& /*aEvent*/ ) - { - return KErrNone; - } - -#ifdef _DEBUG -// ---------------------------------------------------- -// CXcapHttpResponse::DumpHeadersL -// -// ---------------------------------------------------- -// -void CXcapHttpResponse::DumpHeadersL( RHTTPHeaders aHeaders, TInt aId ) - { - iTransportMain.WriteToLog( _L( "--------------------") ); - iTransportMain.WriteToLog( _L( "Headers of the transaction %d: "), aId ); - RStringPool strP = iHttpRequest->Session().StringPool(); - THTTPHdrFieldIter it = aHeaders.Fields(); - TBuf fieldName16; - TBuf fieldVal16; - - while( it.AtEnd() == EFalse ) - { - RStringTokenF fieldName = it(); - RStringF fieldNameStr = strP.StringF( fieldName ); - THTTPHdrVal fieldVal; - if( aHeaders.GetField( fieldNameStr, 0, fieldVal ) == KErrNone ) - { - const TDesC8& fieldNameDesC = fieldNameStr.DesC(); - fieldName16.Copy( fieldNameDesC.Left( KMaxHeaderNameLen ) ); - switch( fieldVal.Type() ) - { - case THTTPHdrVal::KTIntVal: - iTransportMain.WriteToLog( _L("%S: %d"), &fieldName16, fieldVal.Int() ); - break; - case THTTPHdrVal::KStrFVal: - { - RStringF fieldValStr = strP.StringF( fieldVal.StrF() ); - const TDesC8& fieldValDesC = fieldValStr.DesC(); - fieldVal16.Copy( fieldValDesC.Left( KMaxHeaderValueLen ) ); - iTransportMain.WriteToLog( _L( "%S: %S" ), &fieldName16, &fieldVal16 ); - } - break; - case THTTPHdrVal::KStrVal: - { - RString fieldValStr = strP.String(fieldVal.Str()); - const TDesC8& fieldValDesC = fieldValStr.DesC(); - fieldVal16.Copy( fieldValDesC.Left( KMaxHeaderValueLen ) ); - iTransportMain.WriteToLog( _L( "%S: %S" ), &fieldName16, &fieldVal16 ); - } - break; - case THTTPHdrVal::KDateVal: - { - TDateTime date = fieldVal.DateTime(); - TBuf<40> dateTimeString; - TTime t(date); - t.FormatL( dateTimeString,KTransportDateFormat ); - iTransportMain.WriteToLog( _L( "%S: %S" ), &fieldName16, &dateTimeString ); - } - break; - default: - iTransportMain.WriteToLog( _L( "%S: " ), &fieldName16 ); - break; - } - // Display realm for WWW-Authenticate header - RStringF wwwAuth = strP.StringF( HTTP::EWWWAuthenticate, RHTTPSession::GetTable() ); - if( fieldNameStr == wwwAuth ) - { - // check the auth scheme is 'basic' - RStringF basic = strP.StringF( HTTP::EBasic,RHTTPSession::GetTable() ); - RStringF realm = strP.StringF( HTTP::ERealm,RHTTPSession::GetTable() ); - THTTPHdrVal realmVal; - if ( (fieldVal.StrF() == basic ) && - ( !aHeaders.GetParam(wwwAuth, realm, realmVal) ) ) - { - RStringF realmValStr = strP.StringF( realmVal.StrF() ); - fieldVal16.Copy( realmValStr.DesC() ); - iTransportMain.WriteToLog( _L( "Realm is: %S" ), &fieldVal16 ); - } - } - } - ++it; - } - iTransportMain.WriteToLog( _L( "--------------------") ); - } - #endif - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpTransport.cpp --- a/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpTransport.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,287 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapHttpTransport -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include "XdmCredentials.h" -#include "XcapHttpReqGet.h" -#include "XcapHttpReqPut.h" -#include "XcapHttpReqMkcol.h" -#include "XcapHttpReqHead.h" -#include "XcapHttpRequest.h" -#include "XcapHttpReqDelete.h" -#include "XcapHttpTransport.h" -#include "XcapHttpAuthManager.h" - -// ================= MEMBER FUNCTIONS ======================= -// - - -// ---------------------------------------------------------- -// CXcapHttpTransport::CXcapHttpTransport -// -// ---------------------------------------------------------- -// -CXcapHttpTransport::CXcapHttpTransport( MMsgConnManager& aConnManager) : - iCredValidity( EFalse ), - iSessionClosed( ETrue ), - iConnManager( aConnManager ) - { - } - -// ---------------------------------------------------------- -// CXcapHttpTransport::NewL -// -// ---------------------------------------------------------- -// -EXPORT_C CXcapHttpTransport* CXcapHttpTransport::NewL( const TDesC& aRootUri, - MMsgConnManager& aConnManager, - const TXdmCredentials& aDigestCredentials ) - { - CXcapHttpTransport* self = new ( ELeave ) CXcapHttpTransport( aConnManager ); - CleanupStack::PushL( self ); - self->ConstructL( aRootUri, aDigestCredentials ); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------- -// CXcapHttpTransport::~CXcapHttpTransport -// -// ---------------------------------------------------- -// -CXcapHttpTransport::~CXcapHttpTransport() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapHttpTransport::~CXcapHttpTransport()" ) ); - #endif - delete iRootUri; - delete iAuthManager; - iHttpSession.Close(); - iSessionClosed = ETrue; - delete iProxyBuffer; - #ifdef _DEBUG - WriteToLog( _L8( " Destructor ends." ) ); - #endif - delete iLogWriter; - } - -// ---------------------------------------------------------- -// CXcapHttpTransport::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapHttpTransport::ConstructL( const TDesC& aRootUri, const TXdmCredentials& aDigestCredentials ) - { - #ifdef _DEBUG - iLogWriter = CXdmLogWriter::NewL( KTransportLogFile ); - WriteToLog( _L8( "CXcapHttpTransport::ConstructL" ) ); - #endif - SetRootUriL( aRootUri ); - InitialiseSessionL(); - iAuthManager = CXcapHttpAuthManager::NewL( iHttpSession, *this, aDigestCredentials ); - } - -// --------------------------------------------------------- -// CXcapHttpTransport::SetRootUriL -// -// --------------------------------------------------------- -// -EXPORT_C void CXcapHttpTransport::SetRootUriL( const TDesC& aRootUri ) - { - delete iRootUri; - iRootUri = NULL; - iRootUri = HBufC8::NewL( aRootUri.Length() ); - iRootUri->Des().Copy( aRootUri ); - } - -// ---------------------------------------------------- -// CXcapHttpTransport::GetL -// -// ---------------------------------------------------- -// -EXPORT_C CXcapHttpReqGet* CXcapHttpTransport::GetL( const TDesC& aRequestUri ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapHttpTransport::GetRequestL()" ) ); - #endif - if( !iSessionClosed ) - return CXcapHttpReqGet::NewL( aRequestUri, iHttpSession, *iAuthManager, *this ); - else - { - User::Leave( KErrNotReady ); - return NULL; - } - } - -// ---------------------------------------------------- -// CXcapHttpTransport::PutL -// -// ---------------------------------------------------- -// -EXPORT_C CXcapHttpReqPut* CXcapHttpTransport::PutL( const TDesC& aRequestUri ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapHttpTransport::PutRequestL()" ) ); - #endif - if( !iSessionClosed ) - return CXcapHttpReqPut::NewL( aRequestUri, iHttpSession, *iAuthManager, *this ); - else - { - User::Leave( KErrNotReady ); - return NULL; - } - } - -// ---------------------------------------------------- -// CXcapHttpTransport::Mkcol -// -// ---------------------------------------------------- -// -EXPORT_C CXcapHttpReqMkcol* CXcapHttpTransport::MkcolL( const TDesC& aRequestUri ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapHttpTransport::MkcolRequestL()" ) ); - #endif - if( !iSessionClosed ) - return CXcapHttpReqMkcol::NewL( aRequestUri, iHttpSession, *iAuthManager, *this ); - else - { - User::Leave( KErrNotReady ); - return NULL; - } - } - -// ---------------------------------------------------- -// CXcapHttpTransport::Head -// -// ---------------------------------------------------- -// -EXPORT_C CXcapHttpReqHead* CXcapHttpTransport::HeadL( const TDesC& aRequestUri ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapHttpTransport::HeadRequestL()" ) ); - #endif - if( !iSessionClosed ) - return CXcapHttpReqHead::NewL( aRequestUri, iHttpSession, *iAuthManager, *this ); - else - { - User::Leave( KErrNotReady ); - return NULL; - } - } - -// ---------------------------------------------------- -// CXcapHttpTransport::DeleteL -// -// ---------------------------------------------------- -// -EXPORT_C CXcapHttpReqDelete* CXcapHttpTransport::DeleteL( const TDesC& aRequestUri ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapHttpTransport::DeleteRequestL()" ) ); - #endif - if( !iSessionClosed ) - return CXcapHttpReqDelete::NewL( aRequestUri, iHttpSession, *iAuthManager, *this ); - else - { - User::Leave( KErrNotReady ); - return NULL; - } - } - -// ---------------------------------------------------------- -// CXcapHttpTransport::RootUri -// -// ---------------------------------------------------------- -// -EXPORT_C TPtrC8 CXcapHttpTransport::RootUri() - { - return iRootUri != NULL ? iRootUri->Des() : TPtrC8(); - } - -// ---------------------------------------------------- -// CXcapHttpTransport::InitialiseSessionL -// -// ---------------------------------------------------- -// -void CXcapHttpTransport::InitialiseSessionL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapHttpTransport::InitialiseSessionL()" ) ); - #endif - iHttpSession.OpenL(); - RSocketServ& session = iConnManager.SocketSession(); - RConnection& connection = iConnManager.Connection(); - RHTTPConnectionInfo connInfo = iHttpSession.ConnectionInfo(); - RStringPool stringPool = iHttpSession.StringPool(); - TInt conn = reinterpret_cast ( &connection ); - connInfo.SetPropertyL( stringPool.StringF( HTTP::EHttpSocketServ, RHTTPSession::GetTable() ), - THTTPHdrVal( session.Handle() ) ); - connInfo.SetPropertyL( stringPool.StringF( HTTP::EHttpSocketConnection, RHTTPSession::GetTable() ), - THTTPHdrVal( conn ) ); - connInfo.SetPropertyL( stringPool.StringF( HTTP::EHTTPVersion, RHTTPSession::GetTable() ), - THTTPHdrVal( stringPool.StringF( HTTP::EHttp11, RHTTPSession::GetTable() ) ) ); - connInfo.SetPropertyL( stringPool.StringF( HTTP::ESecureDialog, RHTTPSession::GetTable() ), - THTTPHdrVal( stringPool.StringF( HTTP::EDialogPrompt, RHTTPSession::GetTable() ) ) ); - //CHttpDeflateFilter::InstallFilterL( iHttpSession ); - iSessionClosed = EFalse; - #ifdef _DEBUG - WriteToLog( _L8( "InitialiseSessionL() ends." ) ); - #endif - } - -#ifdef _DEBUG -// ---------------------------------------------------- -// CXcapHttpTransport::WriteToLog -// Writes to the log, 8-bit version -// ---------------------------------------------------- -// -void CXcapHttpTransport::WriteToLog( TRefByValue aFmt,... ) const - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - iLogWriter->WriteToLog( buf ); - } - -// ---------------------------------------------------- -// CXcapHttpTransport::WriteToLog -// Writes to the log, 16-bit version -// ---------------------------------------------------- -// -void CXcapHttpTransport::WriteToLog( TRefByValue aFmt,... ) const - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf buf; - buf.FormatList( aFmt, list ); - iLogWriter->WriteToLog( buf ); - } -#endif //_DEBUG - - - - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/BWINSCW/XcapOperationsU.DEF --- a/xdmprotocols/XcapProtocol/XcapOperations/BWINSCW/XcapOperationsU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &) - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/eabi/XcapOperationsU.DEF --- a/xdmprotocols/XcapProtocol/XcapOperations/eabi/XcapOperationsU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - _Z24ImplementationGroupProxyRi @ 1 NONAME - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/group/XcapOperations.mmp --- a/xdmprotocols/XcapProtocol/XcapOperations/group/XcapOperations.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapOperations.dll from XcapOperations.mmp -* -*/ - - - -#include - -TARGET xcapoperations.dll -UID 0x10009D8D 0x10207410 -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT -TARGETTYPE PLUGIN - -SOURCEPATH ../src - -START RESOURCE 10207410.rss - -TARGET xcapoperations.rsc - -END - -SOURCE XcapAddition.cpp -SOURCE XcapDeletion.cpp -SOURCE XcapRetrieval.cpp -SOURCE XcapInsertion.cpp -SOURCE XcapUriParser.cpp -SOURCE XcapReplacement.cpp -SOURCE XcapHttpOperation.cpp -SOURCE XcapOperationFactory.cpp - -//Internal -USERINCLUDE ../inc -USERINCLUDE ../../inc -USERINCLUDE ../../../inc -USERINCLUDE ../../XcapCache/inc -USERINCLUDE ../../XcapUtils/inc -USERINCLUDE ../../XcapAppUsage/inc -USERINCLUDE ../../XcapHttpTransport/inc - -//Common -USERINCLUDE ../../../XdmXmlParser/inc - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/xml -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../../inc - -LIBRARY hal.lib -LIBRARY ecom.lib -LIBRARY efsrv.lib -LIBRARY euser.lib - -LIBRARY inetprotutil.lib - -LIBRARY flogger.lib -LIBRARY xdmengine.lib -LIBRARY xdmxmlparser.lib -LIBRARY xcapprotocol.lib -LIBRARY xcapappusage.lib -LIBRARY xcapcacheclient.lib -LIBRARY xcaphttptransport.lib - -#if defined( ARMCC ) -DEFFILE ../eabi/ -#elif defined ( WINSCW ) -deffile ../BWINSCW/ -#elif defined (WINS ) -deffile ../BWINS/ -#endif - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/group/bld.inf --- a/xdmprotocols/XcapProtocol/XcapOperations/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapOperations bld.inf -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- -XcapOperations.mmp - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/inc/XcapAddition.h --- a/xdmprotocols/XcapProtocol/XcapOperations/inc/XcapAddition.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* -* Copyright (c) 2003 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: CXcapAddition -* -*/ - - - - -#ifndef __XCAPADDITION__ -#define __XCAPADDITION__ - -#include -#include "XcapHttpOperation.h" - -//FORWARD DECLARATIONS -class CXcapHttpReqPut; -class CXcapDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapAddition ) : public CXcapHttpOperation - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CXcapAddition* NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& iOperationFactory ); - - /** - * Handle a successful operation - */ - virtual void OperationCompleteL(); - - /** - * Handle a failed operation - */ - virtual void OperationFailedL(); - - /** - * Destructor. - */ - virtual TBool Result() const; - - /** - * Destructor. - */ - virtual ~CXcapAddition(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapAddition( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& iOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ExecuteL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - TXdmOperationType DetermineOperationType(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void UpdatePartialToCacheL( RXcapCache* aCache, const TDesC8& aNewData ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - virtual TInt FormatModRequestL( const CXdmDocumentNode* aDocumentNode ); - - private: //Data - - TXdmOperationType iOperationType; - }; - -#endif //__XCAPPARTIALADDITION__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/inc/XcapDeletion.h --- a/xdmprotocols/XcapProtocol/XcapOperations/inc/XcapDeletion.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDeletion -* -*/ - - - - -#ifndef __XCAPDELETION__ -#define __XCAPDELETION__ - -#include -#include "XcapHttpOperation.h" - -//FORWARD DECLARATIONS -class CXcapDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapDeletion ) : public CXcapHttpOperation - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CXcapDeletion* NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& iOperationFactory ); - - /** - * Handle a successful operation - */ - virtual void OperationCompleteL(); - - /** - * Handle a failed operation - */ - virtual void OperationFailedL(); - - /** - * Destructor. - */ - virtual TBool Result() const; - - /** - * Destructor. - */ - virtual ~CXcapDeletion(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapDeletion( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& iOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ExecuteL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void HandleDocDeletion(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void HandlePartialDeletion(); - - private: //Data - - TXdmOperationType iOperationType; - }; - -#endif //__XCAPDELETION__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/inc/XcapHttpOperation.h --- a/xdmprotocols/XcapProtocol/XcapOperations/inc/XcapHttpOperation.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,264 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapHttpOperation -* -*/ - - - - -#ifndef __XCAPHTTPOPERATION__ -#define __XCAPHTTPOPERATION__ - -#include -#include "XdmOperation.h" -#include "XcapOperationFactory.h" -#include "XcapHttpRequestTimerCallback.h" - -//The default timout for HTTP requests in seconds -const TInt KDefaultHttpRequestTimeout = 30; - -//Set, if document should be fetched from cache when processing a doc subset -const TInt KFetchMasterFromCache = KXdmOption1; - -//Set, if rules concerning document subsets should be applied when processing responses -const TInt KDocumentSubset = KXdmOption2; - -//Set, if the document an operation targets should not be cached (a directory document, for example) -const TInt KNoCache = KXdmOption3; - -//Set, if EARLY-IMS is in use => add the public ID in X-3GPP-Intended-Identity header -const TInt KUseIntendedIdentity = KXdmOption4; - -//FORWARD DECLARATION -class RXcapCache; -class CXdmDocument; -class CXcapDocument; -class CXdmXmlParser; -class CXcapUriParser; -class CXcapHttpRequest; -class CXdmDocumentNode; -class CXcapDocumentNode; -class CXcapHttpTransport; - -//Override application usage validation -//Must ONLY be used for testing, comment out before release -//#define __OVERRIDE_VALIDATION__ - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapHttpOperation ) : public CActive, - public MXdmOperation - - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static void EscapeLC( CXdmDocumentNode& aRootNode ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static HBufC8* EscapeLC( const TDesC8& aDescriptor ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static HBufC8* Escape2LC( const TDesC& aDescriptor ); - - public: - - /** - * Destructor. - */ - void ExecuteL( TRequestStatus& aStatus, TUint aOptions ); - - /** - * Destructor. - */ - TInt Result() const; - - /** - * Destructor. - */ - const TXdmCompletionData& CompletionData() const; - - /** - * Destructor. - */ - TBool IsCompleted() const; - - /** - * Set this operation to completed state. - */ - void Destroy(); - - /** - * Set this operation to completed state. - */ - virtual CXdmDocumentNode* TargetNode() const; - - /** - * Destructor. - */ - CXcapHttpRequest* HttpRequest() const; - - /** - * Destructor. - */ - virtual ~CXcapHttpOperation(); - - protected: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapHttpOperation( const CXdmDocument& aTargetDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void BaseConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - TPtrC8 Descriptor( HBufC8* aBuffer ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - TInt ReinterpretStatus( const TInt aHttpStatus ) const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapHttpTransport& Transport() const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - virtual void OperationCompleteL() = 0; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - virtual void OperationFailedL() = 0; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - virtual void ExecuteL() = 0; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - virtual void ExecuteL( CXcapHttpRequest* aHttpRequest, - CXdmDocumentNode* aDocumentNode ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - virtual TInt FormatModRequestL( const CXdmDocumentNode* aDocumentNode ); - - private: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void RunL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void DoCancel(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - TBool StartOperationL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void CancelOperation(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void HandleTimerEventL(); - - protected: - - TInt iResult; - TInt iCurrentIndex; - TBool iCompleted; - TBool iPartial; - TUint iOptionFlags; - CXdmXmlParser* iXmlParser; - TXdmCompletionData iFailureData; - TXdmCompletionData* iRequestData; - TRequestStatus* iClientStatus; - CXcapUriParser* iUriParser; - CXcapHttpRequest* iActiveRequest; - CXcapDocumentNode* iDocumentSubset; - CXcapDocument& iTargetDoc; - CXcapOperationFactory& iOperationFactory; - RPointerArray iRequestQueue; - - private: //Data - }; - -#endif //__XCAPHTTPOPERATION__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/inc/XcapInsertion.h --- a/xdmprotocols/XcapProtocol/XcapOperations/inc/XcapInsertion.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapInsertion -* -*/ - - - - -#ifndef __XCAPINSERTION__ -#define __XCAPINSERTION__ - -#include -#include "XcapHttpOperation.h" - -//FORWARD DECLARATIONS -class CXcapHttpReqPut; -class CXcapDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapInsertion ) : public CXcapHttpOperation - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CXcapInsertion* NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentExtents, - CXcapOperationFactory& iOperationFactory ); - - /** - * Handle a successful operation - */ - virtual void OperationCompleteL(); - - /** - * Handle a failed operation - */ - virtual void OperationFailedL(); - - /** - * Destructor. - */ - virtual TBool Result() const; - - /** - * Destructor. - */ - virtual ~CXcapInsertion(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapInsertion( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& iOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ExecuteL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - virtual TInt FormatModRequestL( const CXdmDocumentNode* aDocumentNode ); - - private: //Data - - TXdmOperationType iOperationType; - }; - -#endif //__XCAPINSERTION__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/inc/XcapOperationFactory.h --- a/xdmprotocols/XcapProtocol/XcapOperations/inc/XcapOperationFactory.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapOperationFactory -* -*/ - - - - -#ifndef __XCAPOPERATIONFACTORY__ -#define __XCAPOPERATIONFACTORY__ - -#include -#include "XdmOperationFactory.h" - -_LIT( KOperationsLogFile, "XcapOperations" ); -const TInt KOpLogBufferMaxSize = 2000; - -//FORWARD DECLARATION -class CXdmDocument; -class CXdmDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapOperationFactory ) : public CXdmOperationFactory - { - public: - - /** - * Two-phased constructor. - * @param CXdmProtocolInfo Protocol info - * @return CXdmProtocol - */ - static CXcapOperationFactory* NewL(); - - /** - * Destructor. A simple wrapper to the C++ destructor. - * - */ - virtual ~CXcapOperationFactory(); - - public: - - /** - * Return an operation object that knows how to manipulate - * whole documents - */ - MXdmOperation* FetchL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode = NULL ) const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - MXdmOperation* InsertL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - MXdmOperation* ReplaceL( CXdmDocument& aOldDocument, - CXdmDocumentNode* aNewNode, - CXdmDocumentNode* aOldNode ) const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - MXdmOperation* AppendL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - MXdmOperation* DeletionL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const; - - public: - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - void WriteToLog( TRefByValue aFmt,... ) const; - - private: - - /** - * C++ constructor - * @return CImpsTcpCirWatcher - */ - void ConstructL(); - - /** - * Write here something meaningful - */ - void WriteTraceLog( const TDesC8& aLogDescriptor ); - - /** - * C++ constructor - * @return CImpsTcpCirWatcher - */ - CXcapOperationFactory(); - - private: //Data - - CXdmLogWriter* iLogWriter; - }; - -#endif diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/inc/XcapReplacement.h --- a/xdmprotocols/XcapProtocol/XcapOperations/inc/XcapReplacement.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapReplacement -* -*/ - - - - -#ifndef __XCAPREPLACEMENT__ -#define __XCAPREPLACEMENT__ - -#include -#include "XcapHttpOperation.h" - -//FORWARD DECLARATIONS - -class CXcapHttpReqPut; -class CXcapDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapReplacement ) : public CXcapHttpOperation - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CXcapReplacement* NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aOldNode, - CXcapDocumentNode* aNewNode, - CXcapOperationFactory& iOperationFactory ); - - /** - * Handle a successful operation - */ - virtual void OperationCompleteL(); - - /** - * Handle a failed operation - */ - virtual void OperationFailedL(); - - /** - * Destructor. - */ - virtual TBool Result() const; - - /** - * Destructor. - */ - virtual ~CXcapReplacement(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapReplacement( CXcapDocument& aParentDoc, - CXcapDocumentNode* aOldNode, - CXcapDocumentNode* aNewNode, - CXcapOperationFactory& iOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * Destructor. - */ - void ExecuteL(); - - /** - * Destructor. - */ - virtual TInt FormatModRequestL( const CXcapDocumentNode* aDocumentNode ); - - private: //Data - - enum TXcapReplacementState - { - EHttpIdle = 0, - EHttpDeleting, - EHttpPutting - }; - - CXcapDocumentNode* iNewNode; - TXdmOperationType iOperationType; - TXcapReplacementState iOperationPhase; - - }; - -#endif //__XCAPREPLACEMENT__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/inc/XcapRetrieval.h --- a/xdmprotocols/XcapProtocol/XcapOperations/inc/XcapRetrieval.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapRetrieval -* -*/ - - - - -#ifndef __XCAPRETRIEVAL__ -#define __XCAPRETRIEVAL__ - -#include -#include "CommonDefines.h" -#include "XcapHttpOperation.h" - -class CXcapDocumentNode; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapRetrieval ) : public CXcapHttpOperation - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CXcapRetrieval* NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aTargetNode, - CXcapOperationFactory& iOperationFactory ); - - /** - * Handle a successful operation - */ - virtual void OperationCompleteL(); - - /** - * Handle a failed operation - */ - virtual void OperationFailedL(); - - /** - * Destructor. - */ - virtual TInt Result() const; - - /** - * Destructor. - */ - virtual ~CXcapRetrieval(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapRetrieval( CXcapDocument& aParentDoc, - CXcapDocumentNode* aTargetNode, - CXcapOperationFactory& iOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ExecuteL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void HandleCacheOperationL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void HandleNetworkOperationL(); - - private: //Data - - TBool iCacheOperation; - TCacheEntryInfo iCacheEntryInfo; - TXdmOperationType iOperationType; - }; - -#endif //__XCAPRETRIEVAL__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/inc/XcapUriParser.h --- a/xdmprotocols/XcapProtocol/XcapOperations/inc/XcapUriParser.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,187 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapUriParser -* -*/ - - - - -#ifndef __XCAPURIPARSER__ -#define __XCAPURIPARSER__ - -#include -#include "XcapDocumentNode.h" -#include "XcapUriInterface.h" - -//Constants -_LIT8( KXcapUriColon, ":" ); -_LIT8( KXcapUriQMark, "?" ); -_LIT8( KXcapUriXmlns, "xmlns(" ); -_LIT8( KXcapUriEquals, "=\"" ); -_LIT8( KXcapUriQuote, "\"" ); -_LIT8( KXcapParenthClose, ")" ); - -class CXdmDocument; -class CXdmDocumentNode; -class CXcapOperationFactory; - -//CLASS DECLARATION -NONSHARABLE_CLASS ( CXcapUriParser ) : public CBase, public MXcapUriInterface - { - public: - - /** - * Destructor. - */ - static CXcapUriParser* NewL( CXdmDocument& aTargetDoc, - CXcapOperationFactory& aOperationFactory ); - - /** - * Destructor. - */ - void SetDocumentSubset( const CXdmDocumentNode* aDocumentSubset ); - - /** - * Destructor. - */ - void ParseL( const TPtrC8& aHttpUri ); - - /** - * Destructor. - */ - TPtrC8 DesC8() const; - - /** - * Destructor. - */ - TXdmElementType NodeType() const; - - /** - * Destructor. - */ - virtual ~CXcapUriParser(); - - private: //From MXcapUriInterface - - /** - * Add new namespace mapping - * @param TDesC8& Namespace URI - * @param TDesC8& Namespace prefix - * @return void - */ - void AddNamespaceMappingL( const TDesC8& aUri, const TDesC8& aPrefix ); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapUriParser( CXdmDocument& aTargetDoc, - CXcapOperationFactory& aOperationFactory ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXcapDocOperation* - */ - TInt CreateBasicNodeUriL( HBufC8* aNodePath ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXcapDocOperation* - */ - HBufC8* DocSubsetPathL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXcapDocOperation* - */ - void AppendPredicatesL( TInt& aPosition, - CBufBase* aBuffer, - const CXdmDocumentNode* aPathElement ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXcapDocOperation* - */ - HBufC8* FormatOnePathElementLC( const CXdmDocumentNode* aPathElement ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXcapDocOperation* - */ - void FormatAttributeUriL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXcapDocOperation* - */ - void FormatNodeUriL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXcapDocOperation* - */ - void AppendNamespaceMappingsL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXcapDocOperation* - */ - void FinaliseL(); - - #ifdef _DEBUG - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXcapDocOperation* - */ - void DumpUriL( HBufC8* aNodePath ); - - #endif - - private: //Data - - TInt iBufferPosition; - TPtrC8* iHttpUri; - HBufC8* iCompleteUri; - CBufFlat* iUriBuffer; - CXdmDocument& iTargetDoc; - TXdmElementType iNodeType; - CXdmDocumentNode* iDocumentSubset; - CXcapOperationFactory& iOperationFactory; - RPointerArray iNamespaceMappings; - }; - -#endif //__XCAPURIPARSER__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/10207410.rss --- a/xdmprotocols/XcapProtocol/XcapOperations/src/10207410.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 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: XdmProtocolInfo -* -*/ - - -// 10207410.RSS -// -#include "registryinfo.rh" - -//Declares the interface implementations provided -RESOURCE REGISTRY_INFO XdmProtocolInfo - { - dll_uid = 0x10207410; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x10207425; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x10207426; - version_no = 1; - display_name = "XCAP Operation API||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - } - }; - } - }; - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapAddition.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapAddition.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,286 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapAddition -* -*/ - - - - -// INCLUDES -#include "XcapCache.h" -#include "XcapAppUsage.h" -#include "XcapProtocol.h" -#include "XcapDocument.h" -#include "XcapAddition.h" -#include "XdmXmlParser.h" -#include "XcapUriParser.h" -#include "CommonDefines.h" -#include "XcapHttpReqPut.h" -#include "XcapHttpOperation.h" -#include "XcapHttpTransport.h" -#include "XcapOperationFactory.h" - -// --------------------------------------------------------- -// CXcapAddition::CXcapAddition -// -// --------------------------------------------------------- -// -CXcapAddition::CXcapAddition( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) : - CXcapHttpOperation( aParentDoc, aDocumentSubset, aOperationFactory ), - iOperationType( aDocumentSubset == NULL ? - EXdmDocument : EXdmPartialDocument ) - - { - } - -// --------------------------------------------------------- -// CXcapAddition::NewL -// -// --------------------------------------------------------- -// -CXcapAddition* CXcapAddition::NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) - { - CXcapAddition* self = new ( ELeave ) CXcapAddition( aParentDoc, aDocumentSubset, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXcapAddition::ConstructL -// -// --------------------------------------------------------- -// -void CXcapAddition::ConstructL() - { - CXcapHttpReqPut* request = Transport().PutL( iTargetDoc.Name() ); - CleanupStack::PushL( request ); - User::LeaveIfError( iRequestQueue.Append( request ) ); - request->SetExpiryTimeL( NULL, KDefaultHttpRequestTimeout * 1000000 ); - CleanupStack::Pop(); //request - //If they point to the same node, we're dealing with a complete document - if( iDocumentSubset != NULL && iTargetDoc.DocumentRoot() != iDocumentSubset ) - iUriParser->SetDocumentSubset( iDocumentSubset ); - } - -// --------------------------------------------------------- -// CXcapAddition::FormatModRequestL -// -// --------------------------------------------------------- -// -TInt CXcapAddition::FormatModRequestL( const CXdmDocumentNode* aDocumentNode ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapAddition::FormatModRequestL()" ) ); - iOperationFactory.WriteToLog( _L8( " Operation type: %d" ), iOperationType ); - iOperationFactory.WriteToLog( _L8( " Document subset: %x" ), iDocumentSubset ); - #endif - TInt validation = CXcapHttpOperation::FormatModRequestL( aDocumentNode ); - if( validation == KErrNone ) - { - //Then set the properties particular to this type of request - iOperationType = DetermineOperationType(); - if( iOperationType == EXdmDocument ) - iActiveRequest->SetHeaderL( KHttpHeaderContentType, iTargetDoc.ApplicationUsage().ContentType() ); - } - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " AppUsage reported the following error: %d" ), validation ); - #endif - } - return validation; - } - -// --------------------------------------------------------- -// CXcapAddition::DetermineOperationType -// -// --------------------------------------------------------- -// -TXdmOperationType CXcapAddition::DetermineOperationType() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapAddition::DetermineDocType()" ) ); - iOperationFactory.WriteToLog( _L8( " Operation type: %d" ), iOperationType ); - iOperationFactory.WriteToLog( _L8( " Document subset: %x" ), iDocumentSubset ); - iOperationFactory.WriteToLog( _L8( " Document root: %x" ), iTargetDoc.DocumentRoot() ); - #endif - return iOperationType == EXdmDocument || ( EXdmPartialDocument && - iDocumentSubset == iTargetDoc.DocumentRoot() ) ? - EXdmDocument : EXdmPartialDocument; - } - -// --------------------------------------------------------- -// CXcapAddition::ExecuteL -// -// --------------------------------------------------------- -// -void CXcapAddition::ExecuteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapAddition::ExecuteL()" ) ); - #endif - CXcapHttpOperation::ExecuteL( iActiveRequest, iDocumentSubset ); - } - -// --------------------------------------------------------- -// CXcapAddition::OperationCompleteL -// -// --------------------------------------------------------- -// -void CXcapAddition::OperationCompleteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapAddition::OperationCompleteL()" ) ); - #endif - TPtrC8 root = Transport().RootUri(); - iRequestData = iActiveRequest->ResponseData(); - TPtrC name = iTargetDoc.Name(); - switch( iRequestData->iHttpStatus ) - { - case 200: //Replaced, the document was already there - case 201: //"Created" -> Put operation was successful - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status %d" ), iRequestData->iHttpStatus ); - #endif - iResult = KErrNone; - TPtrC8 eTag = Descriptor( iRequestData->iETag ); - iTargetDoc.SetETag( eTag ); - RXcapCache* cache = iTargetDoc.Protocol().Cache(); - if( cache != NULL ) - { - CXcapHttpContSupplier* request = ( CXcapHttpContSupplier* )iActiveRequest; - TPtrC8 payload = request->RequestBody(); - iOperationType == EXdmDocument ? cache->Store( eTag, name, root, payload ) : - UpdatePartialToCacheL( cache, payload ); - } - iCompleted = ETrue; - } - break; - default: - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Default case - Status: %d" ), - iRequestData->iHttpStatus ); - #endif - TInt status = iRequestData->iHttpStatus; - iResult = ReinterpretStatus( status ); - iCompleted = ETrue; - break; - } - } - -// --------------------------------------------------------- -// CXcapAddition::UpdatePartialToCacheL -// -// --------------------------------------------------------- -// -void CXcapAddition::UpdatePartialToCacheL( RXcapCache* aCache, const TDesC8& aNewData ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapAddition::UpdatePartialToCacheL()" ) ); - #endif - HBufC8* newData = NULL; - TPtrC name = iTargetDoc.Name(); - TPtrC8 root = Transport().RootUri(); - if( iOptionFlags & KFetchMasterFromCache ) - { - TInt length = iTargetDoc.DataLength(); - //Do nothing, if the document is not in cache - if( length > 0 ) - { - HBufC8* data = HBufC8::NewLC( length ); - TPtr8 desc( data->Des() ); - aCache->FetchDocumentContent( desc, name, root ); - CXcapDocument* copy = iTargetDoc.TempCopyL(); - CleanupStack::PushL( copy ); - iXmlParser->ParseDocumentL( copy, desc ); - RPointerArray array; - CleanupClosePushL( array ); - copy->Find( *iDocumentSubset, array ); - //If the element the subset points to is not present - //in the original document, the new data must be - //appended to the the subset element parent, instead. - CXdmDocumentNode* node = array.Count() > 0 ? - iDocumentSubset : iDocumentSubset->Parent(); - newData = iXmlParser->FormatToXmlLC( aNewData, copy, node ); - CleanupStack::Pop(); //newData - CleanupStack::PopAndDestroy( 3 ); //array, tempCopy, data - CleanupStack::PushL( newData ); - } - } - else - { - CXdmDocumentNode* root = iTargetDoc.DocumentRoot(); - newData = iXmlParser->FormatToXmlLC( ETrue, &iTargetDoc, root ); - } - if( newData ) - { - aCache->Store( iTargetDoc.ETag(), name, root, newData->Des() ); - CleanupStack::PopAndDestroy(); //newData - } - } - -// --------------------------------------------------------- -// CXcapAddition::OperationFailedL -// -// --------------------------------------------------------- -// -void CXcapAddition::OperationFailedL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapRetrieval::OperationFailedL() - Error: %d" ), - iStatus.Int() ); - #endif - if( iStatus.Int() >= KErrNone ) - { - TInt status = iActiveRequest->ResponseData()->iHttpStatus; - TInt completion = iActiveRequest->ResponseData()->iCompletion; - iResult = status < KErrNone || completion < KErrNone ? status : ReinterpretStatus( status ); - } - else iResult = iStatus.Int(); - iCompleted = ETrue; - } - -// --------------------------------------------------------- -// CXcapAddition::Result -// -// --------------------------------------------------------- -// -TBool CXcapAddition::Result() const - { - return ETrue; - } - -// --------------------------------------------------------- -// CXcapAddition::~CXcapAddition -// -// --------------------------------------------------------- -// -CXcapAddition::~CXcapAddition() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapAddition::~CXcapAddition()" ) ); - #endif - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapDeletion.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapDeletion.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,248 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDeletion -* -*/ - - - - -// INCLUDES -#include "XcapCache.h" -#include "XcapProtocol.h" -#include "XcapDeletion.h" -#include "XcapAppUsage.h" -#include "XcapDocument.h" -#include "XcapUriParser.h" -#include "XdmXmlParser.h" -#include "XcapDocumentNode.h" -#include "XcapHttpTransport.h" -#include "XcapHttpOperation.h" -#include "XcapHttpReqDelete.h" -#include "XcapOperationFactory.h" - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// CXcapDeletion::CXcapDeletion -// -// --------------------------------------------------------- -// -CXcapDeletion::CXcapDeletion( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) : - CXcapHttpOperation( aParentDoc, aDocumentSubset, aOperationFactory ), - iOperationType( iDocumentSubset == NULL ? - EXdmDocument : EXdmPartialDocument ) - { - } - -// --------------------------------------------------------- -// CXcapDeletion::NewL -// -// --------------------------------------------------------- -// -CXcapDeletion* CXcapDeletion::NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) - { - CXcapDeletion* self = new ( ELeave ) CXcapDeletion( aParentDoc, aDocumentSubset, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXcapDeletion::ConstructL -// -// --------------------------------------------------------- -// -void CXcapDeletion::ConstructL() - { - CXcapHttpReqDelete* request = Transport().DeleteL( iTargetDoc.Name() ); - CleanupStack::PushL( request ); - User::LeaveIfError( iRequestQueue.Append( request ) ); - request->SetExpiryTimeL( NULL, KDefaultHttpRequestTimeout * 1000000 ); - CleanupStack::Pop(); //request - if( iOperationType != EXdmDocument && iDocumentSubset != NULL ) - { - iUriParser->SetDocumentSubset( iDocumentSubset ); - //Add namespace mappings - User::LeaveIfError( iTargetDoc.ApplicationUsage().Validate( - *iDocumentSubset, iUriParser, ETrue ) ); - } - } - -// --------------------------------------------------------- -// CXcapDeletion::ExecuteL -// -// --------------------------------------------------------- -// -void CXcapDeletion::ExecuteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::ExecuteL()" ) ); - #endif - TPtrC8 eTag = iTargetDoc.ETag(); - if( eTag.Length() > 0 ) - iActiveRequest->SetHeaderL( KHttpHeaderIfMatch, eTag ); - TRAPD( error, iUriParser->ParseL( iActiveRequest->RequestUriL() ) ); - if( error == KErrNone ) - { - TPtrC8 uri = iUriParser->DesC8(); - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " New URI: %S" ), &uri ); - #endif - HBufC8* escape = CXcapHttpOperation::EscapeLC( uri ); - iActiveRequest->UpdateRequestUriL( escape->Des() ); - CleanupStack::PopAndDestroy(); //escape - } - } - -// --------------------------------------------------------- -// CXcapDeletion::OperationCompleteL -// -// --------------------------------------------------------- -// -void CXcapDeletion::OperationCompleteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::OperationCompleteL()" ) ); - #endif - switch( iRequestData->iHttpStatus ) - { - case 200: //Document was deleted - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status 200 - Document deleted" ) ); - #endif - iOperationType == EXdmDocument ? - HandleDocDeletion() : - HandlePartialDeletion(); - iCompleted = ETrue; - } - break; - case 404: //Document was not found - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status 404 - Document not found" ) ); - #endif - iCompleted = ETrue; - iResult = KErrNotFound; - } - break; - default: - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Default case - Status: %d" ), - iRequestData->iHttpStatus ); - #endif - iCompleted = ETrue; - break; - } - iResult = ReinterpretStatus( iRequestData->iHttpStatus ); - } - -// --------------------------------------------------------- -// CXcapDeletion::HandleDocDeletion -// -// --------------------------------------------------------- -// -void CXcapDeletion::HandleDocDeletion() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::HandleDocDeletion()" ) ); - #endif - TPtrC name = iTargetDoc.Name(); - TPtrC8 root = Transport().RootUri(); - RXcapCache* cache = iTargetDoc.Protocol().Cache(); - if( cache != NULL ) - { - TInt error = cache->Delete( name, root ); - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Document deleted from the cache" ) ); - #endif - } - } - -// --------------------------------------------------------- -// CXcapDeletion::HandlePartialDeletion -// -// --------------------------------------------------------- -// -void CXcapDeletion::HandlePartialDeletion() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::HandlePartialDeletion()" ) ); - #endif - TPtrC name = iTargetDoc.Name(); - TPtrC8 root = Transport().RootUri(); - iTargetDoc.RemoveFromModelL( iDocumentSubset ); - TPtrC8 eTag = Descriptor( iRequestData->iETag ); - RXcapCache* cache = iTargetDoc.Protocol().Cache(); - if( cache != NULL ) - { - HBufC8* newDoc = iXmlParser->FormatToXmlLC( ETrue, &iTargetDoc, iTargetDoc.DocumentRoot() ); - cache->Store( eTag, name, root, newDoc->Des() ); - CleanupStack::PopAndDestroy(); //newDoc - } - iTargetDoc.SetETag( eTag ); - } - -// --------------------------------------------------------- -// CXcapDeletion::OperationFailedL -// -// --------------------------------------------------------- -// -void CXcapDeletion::OperationFailedL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::OperationFailedL() - Error: %d" ), - iStatus.Int() ); - #endif - if( iStatus.Int() >= KErrNone ) - { - TInt status = iActiveRequest->ResponseData()->iHttpStatus; - TInt completion = iActiveRequest->ResponseData()->iCompletion; - iResult = status < KErrNone || completion < KErrNone ? status : ReinterpretStatus( status ); - } - else iResult = iStatus.Int(); - iCompleted = ETrue; - } - -// --------------------------------------------------------- -// CXcapDeletion::Result -// -// --------------------------------------------------------- -// -TBool CXcapDeletion::Result() const - { - return ETrue; - } - -// --------------------------------------------------------- -// CXcapDeletion::~CXcapDeletion -// -// --------------------------------------------------------- -// -CXcapDeletion::~CXcapDeletion() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::~CXcapDeletion()" ) ); - #endif - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapHttpOperation.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapHttpOperation.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,547 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapHttpOperation -* -*/ - - - -#include -#include -#include "XcapDocument.h" -#include "XcapProtocol.h" -#include "XcapAppUsage.h" -#include "XcapUriParser.h" -#include "XdmXmlParser.h" -#include "XcapHttpRequest.h" -#include "XdmNodeAttribute.h" -#include "XcapEngineDefines.h" -#include "XcapHttpOperation.h" -#include "XcapHttpContSupplier.h" -#include "XcapOperationFactory.h" - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CXcapHttpOperation::CXcapHttpOperation( const CXdmDocument& aTargetDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) : - CActive( EPriorityStandard ), - iDocumentSubset( aDocumentSubset ), - iTargetDoc( ( CXcapDocument& )aTargetDoc ), - iOperationFactory( aOperationFactory ) - - { - } - -// --------------------------------------------------------- -// CXcapHttpOperation::BaseConstructL -// -// --------------------------------------------------------- -// -void CXcapHttpOperation::BaseConstructL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "-> CXcapHttpOperation::BaseConstructL" ) ); - #endif - iXmlParser = &iTargetDoc.Protocol().Parser(); - iUriParser = CXcapUriParser::NewL( iTargetDoc, iOperationFactory ); - #ifdef _DEBUG - TPtrC8 contType( iTargetDoc.ApplicationUsage().ContentType() ); - iOperationFactory.WriteToLog( _L8( " Content-Type: %S" ), &contType ); - #endif - CActiveScheduler::Add( this ); - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "<- CXcapHttpOperation::BaseConstructL" ) ); - #endif - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CXcapHttpOperation::~CXcapHttpOperation() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::~CXcapHttpOperation()" ) ); - #endif - delete iUriParser; - iRequestQueue.ResetAndDestroy(); - } - -// --------------------------------------------------------- -// CXcapOperationBase::IsCompleted -// -// --------------------------------------------------------- -// -TBool CXcapHttpOperation::IsCompleted() const - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapOperationBase::IsCompleted()" ) ); - #endif - return iCompleted; - } - -// --------------------------------------------------------- -// CXcapOperationBase::CompletionData -// -// --------------------------------------------------------- -// -const TXdmCompletionData& CXcapHttpOperation::CompletionData() const - { - return *iRequestData; - } - -// --------------------------------------------------------- -// CXcapOperationBase::CompletionData -// -// --------------------------------------------------------- -// -CXdmDocumentNode* CXcapHttpOperation::TargetNode() const - { - return iDocumentSubset; - } - -// --------------------------------------------------------- -// CXcapOperationBase::CompletionData -// -// --------------------------------------------------------- -// -void CXcapHttpOperation::Destroy() - { - delete this; - } - -// --------------------------------------------------------- -// CXcapHttpOperation::Result -// -// --------------------------------------------------------- -// -TInt CXcapHttpOperation::Result() const - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::Result()" ) ); - #endif - return iRequestData != NULL ? iRequestData->iHttpStatus : KErrUnknown; - } - -// --------------------------------------------------------- -// CXcapHttpOperation::ExecuteL -// -// --------------------------------------------------------- -// -void CXcapHttpOperation::ExecuteL( TRequestStatus& aStatus, TUint aOptions ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::ExecuteL( &status )" ) ); - #endif - iOptionFlags = aOptions; - iClientStatus = &aStatus; - aStatus = KRequestPending; - if( !IsActive() ) - { - iActiveRequest = iRequestQueue[iCurrentIndex]; - TRAPD( error, ExecuteL() ); - if( error == KErrNone ) - { - if( StartOperationL() ) - SetActive(); - else - { - iFailureData.iCompletion = KXcapErrorNetworkNotAvailabe; - User::RequestComplete( iClientStatus, KXcapErrorNetworkNotAvailabe ); - iRequestData = &iFailureData; - } - } - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Execution failed with %d" ), error ); - #endif - iFailureData.iCompletion = error; - User::RequestComplete( iClientStatus, error ); - iRequestData = &iFailureData; - } - } - else //This is a re-run of a previously failed request - { - if( !StartOperationL() ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Execution succeeded, network not ready" ) ); - #endif - User::RequestComplete( iClientStatus, KXcapErrorNetworkNotAvailabe ); - } - } - } - -// --------------------------------------------------------- -// CXcapHttpOperation::ExecuteL -// -// --------------------------------------------------------- -// -void CXcapHttpOperation::ExecuteL( CXcapHttpRequest* aHttpRequest, - CXdmDocumentNode* aDocumentNode ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapAddition::ExecuteL()" ) ); - #endif - CXdmDocumentNode* node = aDocumentNode == NULL ? - iTargetDoc.DocumentRoot() : aDocumentNode; - __ASSERT_ALWAYS( node != NULL, User::Panic( _L( "CXcapAddition" ), 1 ) ); - User::LeaveIfError( FormatModRequestL( node ) ); - TRAPD( error, iUriParser->ParseL( aHttpRequest->RequestUriL() ) ); - if( error == KErrNone ) - { - TPtrC8 uri = iUriParser->DesC8(); - HBufC8* escape = CXcapHttpOperation::EscapeLC( uri ); - aHttpRequest->UpdateRequestUriL( escape->Des() ); - CleanupStack::PopAndDestroy(); //escape - } - } - -// --------------------------------------------------------- -// CXcapHttpOperation::StartOperationL -// -// --------------------------------------------------------- -// -TBool CXcapHttpOperation::StartOperationL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::StartOperationL()" ) ); - #endif - if( iTargetDoc.Protocol().IsNetworkAvailable() ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " All set, dispatch request to transport" ) ); - #endif - if( iOptionFlags & KUseIntendedIdentity ) - { - TPtrC8 identity( iTargetDoc.Protocol().PublicID() ); - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Early-IMS set, add X-3GPP-Intended-Identity header" ) ); - iOperationFactory.WriteToLog( _L8( " Public ID: %S" ), &identity ); - #endif - iActiveRequest->SetHeaderL( KHttpHeaderIntIdentity, identity ); - } - iActiveRequest->DispatchRequestL( iStatus ); - return ETrue; - } - else return EFalse; - } - -// --------------------------------------------------------- -// CXcapHttpOperation::RunL -// -// --------------------------------------------------------- -// -void CXcapHttpOperation::RunL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( - "CXcapHttpOperation::RunL() - Status: %d" ), iStatus.Int() ); - #endif - TInt count = iRequestQueue.Count(); - iRequestData = iActiveRequest->ResponseData(); - __ASSERT_DEBUG( iRequestData != NULL, User::Panic( _L( "CXcapHttpOperation" ), 1 ) ); - TRAPD( error, iStatus != KErrNone ? OperationFailedL() : OperationCompleteL() ); - if( error == KErrNone && !iCompleted ) - SetActive(); - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( - " ** Operation completed - Result: %d Error: %d **" ), iResult, error ); - #endif - iCurrentIndex = 0; - iResult = error < KErrNone ? error : iResult; - iRequestData->iCompletion = iResult; - User::RequestComplete( iClientStatus, iResult ); - } - } - -// --------------------------------------------------------- -// CXcapRetrieval::CancelOperation -// -// --------------------------------------------------------- -// -void CXcapHttpOperation::CancelOperation() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::CancelOperation()" ) ); - #endif - if( IsActive() ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "Active, cancel HTTP request" ) ); - #endif - Cancel(); - iRequestData = &iFailureData; - iFailureData.iCompletion = KErrCancel; - User::RequestComplete( iClientStatus, KErrCancel ); - } - } - -// --------------------------------------------------------- -// CXcapHttpOperation::CancelOperation -// -// --------------------------------------------------------- -// -void CXcapHttpOperation::DoCancel() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::DoCancel()" ) ); - #endif - iRequestQueue[iCurrentIndex]->CancelRequest(); - } - -// --------------------------------------------------------- -// CXcapHttpOperation::Descriptor -// -// --------------------------------------------------------- -// -TPtrC8 CXcapHttpOperation::Descriptor( HBufC8* aBuffer ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::Descriptor()" ) ); - #endif - if( aBuffer != NULL ) - { - TPtrC8 descriptor( aBuffer->Des() ); - return descriptor.Length() > 0 ? descriptor : TPtrC8(); - } - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Buffer is NULL, return empty descriptor" ) ); - #endif - return TPtrC8(); - } - } - -// --------------------------------------------------------- -// CXcapHttpOperation::Transport -// -// --------------------------------------------------------- -// -CXcapHttpTransport& CXcapHttpOperation::Transport() const - { - return iTargetDoc.Protocol().Transport(); - } - -// --------------------------------------------------------- -// CXcapHttpOperation::FormatModRequestL -// -// --------------------------------------------------------- -// -TInt CXcapHttpOperation::FormatModRequestL( const CXdmDocumentNode* aDocumentNode ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::FormatModRequestL()" ) ); - #endif - HBufC8* body = NULL; - TInt error = KErrNone; - CXcapAppUsage& usage = iTargetDoc.ApplicationUsage(); - CXcapHttpContSupplier* request = ( CXcapHttpContSupplier* )iActiveRequest; - switch( iUriParser->NodeType() ) - { - case EXdmElementAttribute: - { - CXdmNodeAttribute* attribute = ( CXdmNodeAttribute* )aDocumentNode; - body = attribute->EightBitValueLC(); - request->SetRequestBodyL( body->Des() ); - CleanupStack::PopAndDestroy(); //body - request->SetHeaderL( KHttpHeaderAccept, _L8( "application/xcap-diff+xml" ) ); - request->SetHeaderL( KHttpHeaderContentType, _L8( "application/xcap-att+xml" ) ); - } - break; - case EXdmElementNode: - { - #ifndef __OVERRIDE_VALIDATION__ - error = usage.Validate( CONST_CAST( CXdmDocumentNode&, *aDocumentNode ), iUriParser, EFalse ); - #endif - if( error == KErrNone ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Validation of a partial document OK" ) ); - #endif - body = iXmlParser->FormatToXmlLC( EFalse, &iTargetDoc, aDocumentNode ); - request->SetRequestBodyL( body->Des() ); - CleanupStack::PopAndDestroy(); //body - request->SetHeaderL( KHttpHeaderAccept, _L8( "application/xcap-diff+xml" ) ); - request->SetHeaderL( KHttpHeaderContentType, _L8( "application/xcap-el+xml" ) ); - } - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Validation failed: %d" ), error ); - #endif - } - } - break; - default: - #ifndef __OVERRIDE_VALIDATION__ - error = usage.Validate( iTargetDoc, ETrue ); - #endif - if( error == KErrNone ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Validation OK" ) ); - #endif - body = iXmlParser->FormatToXmlLC( ETrue, &iTargetDoc, aDocumentNode ); - request->SetRequestBodyL( body->Des() ); - CleanupStack::PopAndDestroy(); //body - } - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Validation failed: %d" ), error ); - #endif - } - break; - } - return error; - } - -// ---------------------------------------------------------- -// CXcapHttpOperation::ReinterpretStatus -// -// ---------------------------------------------------------- -// -TInt CXcapHttpOperation::ReinterpretStatus( const TInt aHttpStatus ) const - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::ReinterpretStatus()" ) ); - #endif - switch( aHttpStatus ) - { - case 500: //Internal Server Error - case 501: //Not Implemented - case 502: //Bad Gateway - case 503: //Service Unavailable - case 504: //Gateway Timeout - case 505: //HTTP Version Not Supported - case 405: //Method Not Allowed - case 408: //Request Timeout - case 410: //Gone - case 411: //Length Required - case 413: //Request Entity Too Large - case 414: //Request-URI Too Long - case 415: //Unsupported Media Type - case 416: //Requested Range Not Satisfiable - case 417: //Expectation Failed - return KXcapErrorHttpServer; - case 400: - return KXcapErrorHttpBadRequest; - case 401: - return KXcapErrorHttpUnauthorised; - case 403: - return KXcapErrorHttpForbidden; - case 404: - return KXcapErrorHttpNotFound; - case 409: - return KXcapErrorHttpConflict; - case 412: - return KXcapErrorHttpPrecondFailed; - default: - return KErrNone; - } - } - -// --------------------------------------------------------- -// CXcapHttpOperation::Escape2LC -// -// --------------------------------------------------------- -// -HBufC8* CXcapHttpOperation::Escape2LC( const TDesC& aDescriptor ) - { - HBufC8* eight = EscapeUtils::ConvertFromUnicodeToUtf8L( aDescriptor ); - CleanupStack::PushL( eight ); - HBufC8* buf = EscapeUtils::EscapeEncodeL( eight->Des(), EscapeUtils::EEscapeNormal ); - CleanupStack::PopAndDestroy(); //eight - CleanupStack::PushL( buf ); - return buf; - } - -// --------------------------------------------------------- -// CXcapHttpOperation::EscapeLC -// -// --------------------------------------------------------- -// -HBufC8* CXcapHttpOperation::EscapeLC( const TDesC8& aDescriptor ) - { - CBufFlat* buffer = CBufFlat::NewL( 50 ); - CleanupStack::PushL( buffer ); - TInt bufPos = 0; - TBuf8<10> format; - for( TInt i = 0;i < aDescriptor.Length();i++ ) - { - TUint8 byte = aDescriptor[i]; - if( byte < 0x7F ) //US-ASCII - { - switch( byte ) - { - case 0x20: // ' ' - case 0x22: // '"' - case 0x3B: // ';' - case 0x26: // '&' - case 0x3C: // '<' - case 0x3E: // '>' - case 0x5B: // '[' - case 0x5D: // ']' - format.Append( _L8( "%" ) ); - format.AppendFormat( _L8( "%x" ), byte ); - break; - default: - format.Append( byte ); - break; - } - } - else - { - format.Append( _L8( "%" ) ); //UNICODE - format.AppendFormat( _L8( "%x" ), byte ); - } - buffer->InsertL( bufPos, format ); - bufPos = bufPos + format.Length(); - format.Zero(); - } - HBufC8* ret = HBufC8::NewL( buffer->Size() ); - TPtr8 pointer( ret->Des() ); - buffer->Read( 0, pointer, buffer->Size() ); - CleanupStack::PopAndDestroy(); //buffer - CleanupStack::PushL( ret ); - return ret; - } - -// --------------------------------------------------------- -// CXcapHttpOperation::HttpRequest -// -// --------------------------------------------------------- -// -CXcapHttpRequest* CXcapHttpOperation::HttpRequest() const - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapHttpOperation::HttpRequest()" ) ); - #endif - return iActiveRequest; - } - - - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapInsertion.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapInsertion.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,216 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapInsertion -* -*/ - - - - -// INCLUDES -//This is only for logging -#include -#include "XcapProtocol.h" -#include "XcapDocument.h" -#include "XcapUriParser.h" -#include "XcapInsertion.h" -#include "XdmXmlParser.h" -#include "XcapHttpReqPut.h" -#include "XdmNodeAttribute.h" -#include "XcapHttpTransport.h" -#include "XcapEngineDefines.h" -#include "XcapOperationFactory.h" - - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CXcapInsertion::CXcapInsertion( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) : - CXcapHttpOperation( aParentDoc, aDocumentSubset, aOperationFactory ), - iOperationType( EXdmPartialDocument ) - - { - } - -// --------------------------------------------------------- -// Two-phased constructor. -// -// --------------------------------------------------------- -// -CXcapInsertion* CXcapInsertion::NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) - { - CXcapInsertion* self = new ( ELeave ) CXcapInsertion( aParentDoc, aDocumentSubset, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXcapInsertion::ConstructL -// -// --------------------------------------------------------- -// -void CXcapInsertion::ConstructL() - { - CXcapHttpReqPut* request = Transport().PutL( iTargetDoc.Name() ); - CleanupStack::PushL( request ); - User::LeaveIfError( iRequestQueue.Append( request ) ); - request->SetExpiryTimeL( NULL, KDefaultHttpRequestTimeout * 1000000 ); - CleanupStack::Pop(); //request - iUriParser->SetDocumentSubset( iDocumentSubset ); - } - -// --------------------------------------------------------- -// CXcapAddition::FormatModRequestL -// -// --------------------------------------------------------- -// -TInt CXcapInsertion::FormatModRequestL( const CXdmDocumentNode* aDocumentNode ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::FormatModRequestL()" ) ); - iOperationFactory.WriteToLog( _L8( " Operation type: %d" ), iOperationType ); - iOperationFactory.WriteToLog( _L8( " Document subset: %x" ), iDocumentSubset ); - #endif - return CXcapHttpOperation::FormatModRequestL( aDocumentNode ); - } - -// --------------------------------------------------------- -// CXcapInsertion::ExecuteL -// -// --------------------------------------------------------- -// -void CXcapInsertion::ExecuteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::ExecuteL()" ) ); - #endif - CXcapHttpOperation::ExecuteL( iActiveRequest, iDocumentSubset ); - iActiveRequest->SetHeaderL( KHttpHeaderIfMatch, _L8( "*" ) ); - } - -// --------------------------------------------------------- -// CXcapInsertion::OperationCompleteL -// -// --------------------------------------------------------- -// -void CXcapInsertion::OperationCompleteL() - { - - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::OperationCompleteL()" ) ); - #endif - TPtrC8 root = Transport().RootUri(); - iRequestData = iActiveRequest->ResponseData(); - TPtrC name = iTargetDoc.Name(); - TPtrC8 eTag = Descriptor( iRequestData->iETag ); - switch( iRequestData->iHttpStatus ) - { - case 201: //"Created" -> Put operation was succesful - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status 201 - Created" ) ); - #endif - iResult = KErrNone; - iTargetDoc.SetETag( eTag ); - CXcapHttpContSupplier* request = ( CXcapHttpContSupplier* )iActiveRequest; - RXcapCache* cache = iTargetDoc.Protocol().Cache(); - if( cache != NULL && iOperationType == EXdmDocument ) - { - TPtrC8 payload = request->RequestBody(); - cache->Store( eTag, name, root, payload ); - } - iCompleted = ETrue; - } - break; - case 412: //"Precondition failed" -> Cache out of date - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status 412 - Precondition failed" ) ); - #endif - iResult = KXcapErrorHttpPrecondFailed; - //RXcapCache* cache = CXcapProtocol::Cache(); - //if( cache != NULL && iOperationType == EXcapDocument ) - // cache->Delete( name, root ); - iCompleted = ETrue; - iActiveRequest->ResetUriL( _L( "" ) ); - iActiveRequest->ReleaseResponseData(); - iRequestData->iCompletion = KInsertConflict; - } - break; - default: - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Default case - Status: %d" ), - iRequestData->iHttpStatus ); - #endif - TInt status = iRequestData->iHttpStatus; - iResult = ReinterpretStatus( status ); - iCompleted = ETrue; - break; - } - } - -// --------------------------------------------------------- -// Symbian OS default constructor may leave. -// -// --------------------------------------------------------- -// -void CXcapInsertion::OperationFailedL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::OperationFailedL() - Error: %d" ), - iStatus.Int() ); - #endif - if( iStatus.Int() >= KErrNone ) - { - TInt status = iActiveRequest->ResponseData()->iHttpStatus; - TInt completion = iActiveRequest->ResponseData()->iCompletion; - iResult = status < KErrNone || completion < KErrNone ? status : ReinterpretStatus( status ); - } - else iResult = iStatus.Int(); - iCompleted = ETrue; - } - -// --------------------------------------------------------- -// Symbian OS default constructor may leave. -// -// --------------------------------------------------------- -// -TBool CXcapInsertion::Result() const - { - return ETrue; - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CXcapInsertion::~CXcapInsertion() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::~CXcapInsertion()" ) ); - #endif - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapOperationFactory.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapOperationFactory.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,190 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapOperationFactory -* -*/ - - - -#include -#include -#include -#include "XcapAddition.h" -#include "XcapDeletion.h" -#include "XdmOperation.h" -#include "XcapRetrieval.h" -#include "XcapInsertion.h" -#include "XcapReplacement.h" -#include "xdmlogwriter.h" -#include "XcapOperationFactory.h" - -// --------------------------------------------------------- -// CXcapOperationFactory::CXcapOperationFactory -// -// --------------------------------------------------------- -// -CXcapOperationFactory::CXcapOperationFactory() - { - } - -// --------------------------------------------------------- -// CXcapOperationFactory::NewL -// -// --------------------------------------------------------- -// -CXcapOperationFactory* CXcapOperationFactory::NewL() - { - CXcapOperationFactory* self = new ( ELeave ) CXcapOperationFactory(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXcapOperationFactory::ConstructL -// -// --------------------------------------------------------- -// -void CXcapOperationFactory::ConstructL() - { - #ifdef _DEBUG - iLogWriter = CXdmLogWriter::NewL( KOperationsLogFile ); - WriteToLog( _L8( "-> CXcapOperationFactory::ConstructL" ) ); - WriteToLog( _L8( "<- CXcapOperationFactory::ConstructL" ) ); - #endif - } - -// --------------------------------------------------------- -// CXcapOperationFactory::~CXcapOperationFactory -// -// --------------------------------------------------------- -// -CXcapOperationFactory::~CXcapOperationFactory() - { - #ifdef _DEBUG - WriteToLog( _L8( "-> CXcapOperationFactory::~CXcapOperationFactory()" ) ); - #endif - #ifdef _DEBUG - WriteToLog( _L8( "<- CXcapOperationFactory::~CXcapOperationFactory()" ) ); - #endif - delete iLogWriter; - } - -// --------------------------------------------------------- -// CXcapOperationFactory::FetchL -// -// --------------------------------------------------------- -// -MXdmOperation* CXcapOperationFactory::FetchL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const - { - return CXcapRetrieval::NewL( ( CXcapDocument& )aTargetDocument, - ( CXcapDocumentNode* )aTargetNode, - const_cast( *this ) ); - } - -// --------------------------------------------------------- -// CXcapOperationFactory::InsertL -// -// --------------------------------------------------------- -// -MXdmOperation* CXcapOperationFactory::InsertL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const - { - return CXcapInsertion::NewL( ( CXcapDocument& )aTargetDocument, - ( CXcapDocumentNode* )aTargetNode, - const_cast( *this ) ); - } - -// --------------------------------------------------------- -// CXcapOperationFactory::ReplaceL -// -// --------------------------------------------------------- -// -MXdmOperation* CXcapOperationFactory::ReplaceL( CXdmDocument& aOldDocument, - CXdmDocumentNode* aNewNode, - CXdmDocumentNode* aOldNode ) const - { - return CXcapReplacement::NewL( ( CXcapDocument& )aOldDocument, - ( CXcapDocumentNode* )aNewNode, - ( CXcapDocumentNode* )aOldNode, - const_cast( *this ) ); - } - -// --------------------------------------------------------- -// CXcapOperationFactory::AppendL -// -// --------------------------------------------------------- -// -MXdmOperation* CXcapOperationFactory::AppendL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const - { - return CXcapAddition::NewL( ( CXcapDocument& )aTargetDocument, - ( CXcapDocumentNode* )aTargetNode, - const_cast( *this ) ); - } - -// --------------------------------------------------------- -// CXcapOperationFactory::PartialDeletionL -// -// --------------------------------------------------------- -// -MXdmOperation* CXcapOperationFactory::DeletionL( CXdmDocument& aTargetDocument, - CXdmDocumentNode* aTargetNode ) const - { - return CXcapDeletion::NewL( ( CXcapDocument& )aTargetDocument, - ( CXcapDocumentNode* )aTargetNode, - const_cast( *this ) ); - } - -// ---------------------------------------------------- -// CXcapOperationFactory::WriteToLog -// -// ---------------------------------------------------- -// -void CXcapOperationFactory::WriteToLog( TRefByValue aFmt,... ) const - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - iLogWriter->WriteToLog( buf ); - } - -// --------------------------------------------------------- -// Map the interface UIDs to implementation factory functions -// -// --------------------------------------------------------- -// -const TImplementationProxy ImplementationTable[] = - { -#ifdef __EABI__ - IMPLEMENTATION_PROXY_ENTRY( KXcapOperationFactory, CXcapOperationFactory::NewL ) -#else - { { KXcapOperationFactory }, CXcapOperationFactory::NewL } -#endif - }; - -// --------------------------------------------------------- -// Return the implementation table & number of implementations -// -// --------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - return ImplementationTable; - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapReplacement.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapReplacement.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapReplacement -* -*/ - - - - -// INCLUDES -#include "XcapAppUsage.h" -#include "XcapDocument.h" -#include "XcapUriParser.h" -#include "XdmXmlParser.h" -#include "XcapHttpReqPut.h" -#include "XcapReplacement.h" -#include "XcapHttpReqDelete.h" -#include "XcapHttpTransport.h" -#include "XcapHttpOperation.h" -#include "XdmNodeAttribute.h" -#include "XcapEngineDefines.h" - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that might leave. -// -// --------------------------------------------------------- -// -CXcapReplacement::CXcapReplacement( CXcapDocument& aParentDoc, - CXcapDocumentNode* aOldNode, - CXcapDocumentNode* aNewNode, - CXcapOperationFactory& aOperationFactory ) : - CXcapHttpOperation( aParentDoc, aOldNode, aOperationFactory ), - iNewNode( ( CXcapDocumentNode* )aNewNode ), - iOperationType( aOldNode == NULL ? - EXdmDocument : EXdmPartialDocument ) - - { - } - -// --------------------------------------------------------- -// Two-phased constructor. -// -// --------------------------------------------------------- -// -CXcapReplacement* CXcapReplacement::NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aOldNode, - CXcapDocumentNode* aNewNode, - CXcapOperationFactory& aOperationFactory ) - { - CXcapReplacement* self = new ( ELeave ) CXcapReplacement( aParentDoc, aOldNode, aNewNode, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXcapReplacement::ConstructL -// -// --------------------------------------------------------- -// -void CXcapReplacement::ConstructL() - { - CXcapHttpReqPut* request = Transport().PutL( iTargetDoc.Name() ); - CleanupStack::PushL( request ); - User::LeaveIfError( iRequestQueue.Append( request ) ); - request->SetExpiryTimeL( NULL, KDefaultHttpRequestTimeout * 1000000 ); - CleanupStack::Pop(); //request - //If they point to the same node, we're dealing with a complete document - if( iDocumentSubset != NULL && iTargetDoc.DocumentRoot() != iDocumentSubset ) - iUriParser->SetDocumentSubset( iDocumentSubset ); - } - -// --------------------------------------------------------- -// CXcapReplacement::FormatModRequestL -// -// --------------------------------------------------------- -// -TInt CXcapReplacement::FormatModRequestL( const CXcapDocumentNode* aDocumentNode ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapReplacement::FormatModRequestL()" ) ); - iOperationFactory.WriteToLog( _L8( " Operation type: %d" ), iOperationType ); - iOperationFactory.WriteToLog( _L8( " Document subset: %x" ), iDocumentSubset ); - #endif - return CXcapHttpOperation::FormatModRequestL( aDocumentNode ); - } - -// --------------------------------------------------------- -// CXcapReplacement::ExecuteL -// -// --------------------------------------------------------- -// -void CXcapReplacement::ExecuteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapReplacement::ExecuteL()" ) ); - #endif - User::LeaveIfError( FormatModRequestL( iNewNode ) ); - if( iOperationType == EXdmPartialDocument ) - { - TPtrC8 eTag = iTargetDoc.ETag(); - if( eTag.Length() > 0 ) - iActiveRequest->SetHeaderL( KHttpHeaderIfMatch, eTag ); - //If they match semantically, there's no need for DELETE operation - if( iDocumentSubset->Match( *iNewNode ) ) - iOperationPhase = EHttpPutting; - else - { - CXcapHttpReqDelete* request = Transport().DeleteL( iTargetDoc.Name() ); - CleanupStack::PushL( request ); - User::LeaveIfError( iRequestQueue.Insert( request, 0 ) ); - CleanupStack::Pop(); //request - if( eTag.Length() > 0 ) - request->SetHeaderL( KHttpHeaderIfMatch, eTag ); - request->SetHeaderL( KHttpHeaderAccept, _L8( "application/xcap-diff+xml" ) ); - iActiveRequest = request; - iOperationPhase = EHttpDeleting; - } - TRAPD( error, iUriParser->ParseL( iActiveRequest->RequestUriL() ) ); - if( error == KErrNone ) - { - TPtrC8 uri = iUriParser->DesC8(); - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " New URI: %S" ), &uri ); - #endif - HBufC8* escape = CXcapHttpOperation::EscapeLC( uri ); - iActiveRequest->UpdateRequestUriL( escape->Des() ); - CleanupStack::PopAndDestroy(); //escape - } - } - else - { - - } - } - -// --------------------------------------------------------- -// CXcapReplacement::OperationCompleteL -// -// --------------------------------------------------------- -// -void CXcapReplacement::OperationCompleteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( - _L8( "CXcapReplacement::OperationCompleteL() - Phase: %d" ), iOperationPhase ); - #endif - switch( iOperationPhase ) - { - case EHttpDeleting: - break; - case EHttpPutting: - break; - default: - iCompleted = ETrue; - break; - } - } - -// --------------------------------------------------------- -// CXcapReplacement::OperationFailedL -// -// --------------------------------------------------------- -// -void CXcapReplacement::OperationFailedL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapReplacement::OperationFailedL() - Error: %d" ), - iStatus.Int() ); - TInt httpStatus = iRequestData == NULL ? KErrUnknown : - iRequestData->iHttpStatus; - #endif - - switch( iOperationPhase ) - { - case EHttpDeleting: - #ifdef _DEBUG - iOperationFactory.WriteToLog( - _L8( "DELETE failed - Error: %d Status: %d" ), iStatus.Int(), httpStatus ); - #endif - break; - case EHttpPutting: - #ifdef _DEBUG - iOperationFactory.WriteToLog( - _L8( "PUT failed - Error: %d Status: %d" ), iStatus.Int(), httpStatus ); - #endif - break; - default: - break; - } - iResult = iStatus.Int(); - iCompleted = ETrue; - } - -// --------------------------------------------------------- -// CXcapReplacement::Result -// -// --------------------------------------------------------- -// -TBool CXcapReplacement::Result() const - { - return ETrue; - } - -// --------------------------------------------------------- -// CXcapReplacement::~CXcapReplacement -// -// --------------------------------------------------------- -// -CXcapReplacement::~CXcapReplacement() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapReplacement::~CXcapReplacement()" ) ); - #endif - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapRetrieval.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapRetrieval.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,320 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapRetrieval -* -*/ - - - - -// INCLUDES -#include "XcapCache.h" -#include "XcapAppUsage.h" -#include "XcapDocument.h" -#include "XcapProtocol.h" -#include "XcapRetrieval.h" -#include "XcapUriParser.h" -#include "XdmXmlParser.h" -#include "XcapHttpReqGet.h" -#include "XcapHttpTransport.h" -#include "XcapOperationFactory.h" - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CXcapRetrieval::CXcapRetrieval( CXcapDocument& aParentDoc, - CXcapDocumentNode* aTargetNode, - CXcapOperationFactory& aOperationFactory ) : - CXcapHttpOperation( aParentDoc, aTargetNode, aOperationFactory ), - iCacheOperation( EFalse ), - iOperationType( aTargetNode == NULL ? - EXdmDocument : EXdmPartialDocument ) - { - } - -// --------------------------------------------------------- -// CXcapRetrieval::NewL -// -// --------------------------------------------------------- -// -CXcapRetrieval* CXcapRetrieval::NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aTargetNode, - CXcapOperationFactory& aOperationFactory ) - { - CXcapRetrieval* self = new ( ELeave ) CXcapRetrieval( aParentDoc, aTargetNode, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXcapRetrieval::ConstructL -// -// --------------------------------------------------------- -// -void CXcapRetrieval::ConstructL() - { -#ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "-> CXcapRetrieval::ConstructL" ) ); -#endif - CXcapHttpReqGet* request = Transport().GetL( iTargetDoc.Name() ); - CleanupStack::PushL( request ); - User::LeaveIfError( iRequestQueue.Append( request ) ); - request->SetExpiryTimeL( NULL, KDefaultHttpRequestTimeout * 1000000 ); - CleanupStack::Pop(); //request - if( iOperationType != EXdmDocument && iDocumentSubset != NULL ) - { - iUriParser->SetDocumentSubset( iDocumentSubset ); - //Add namespace mappings - User::LeaveIfError( iTargetDoc.ApplicationUsage().Validate( - *iDocumentSubset, iUriParser, ETrue ) ); - } -#ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "<- CXcapRetrieval::ConstructL" ) ); -#endif - } - -// --------------------------------------------------------- -// CXcapRetrieval::ExecuteL -// -// --------------------------------------------------------- -// -void CXcapRetrieval::ExecuteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapRetrieval::ExecuteL()" ) ); - #endif - TPtrC8 eTag = iTargetDoc.ETag(); - if( eTag.Length() > 0 ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Using ETag \"%S\" - Length: %d" ), - &eTag, eTag.Length() ); - #endif - //iActiveRequest->SetHeaderL( KHttpHeaderIfNoneMatch, eTag ); - } - TRAPD( error, iUriParser->ParseL( iActiveRequest->RequestUriL() ) ); - if( error == KErrNone ) - { - TPtrC8 uri = iUriParser->DesC8(); - HBufC8* escape = CXcapHttpOperation::EscapeLC( uri ); - iActiveRequest->UpdateRequestUriL( escape->Des() ); - CleanupStack::PopAndDestroy(); //escape - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " New URI: %S" ), &uri ); - #endif - } - } - -// --------------------------------------------------------- -// CXcapRetrieval::OperationCompleteL -// -/* const TDesC8& aETag, - const TDesC& aDocumentName, - const TDesC8& aRootLocation, - const TDesC8& aResponseData*/ -// --------------------------------------------------------- -// -void CXcapRetrieval::OperationCompleteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapRetrieval::OperationCompleteL()" ) ); - #endif - TInt generalErr = ReinterpretStatus( iRequestData->iHttpStatus ); - if( generalErr == KErrNone ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " No general errors found" ) ); - #endif - iCacheOperation ? HandleCacheOperationL() : HandleNetworkOperationL(); - } - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " General errors found - Status: %d Error: %d" ), - iRequestData->iHttpStatus, generalErr ); - #endif - iCompleted = ETrue; - iResult = generalErr; - } - } - -// --------------------------------------------------------- -// CXcapRetrieval::HandleCacheOperationL -// -// --------------------------------------------------------- -// -void CXcapRetrieval::HandleCacheOperationL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapRetrieval::HandleCacheOperationL() - Operation type: %d Target node: %x" ), - iOperationType, iDocumentSubset ); - #endif - TPtrC8 responseData = Descriptor( iRequestData->iResponseData ); - iOperationType == EXdmDocument && iDocumentSubset == NULL ? - iXmlParser->ParseDocumentL( &iTargetDoc, responseData ) : - iXmlParser->ParseDocumentL( &iTargetDoc, responseData, iDocumentSubset ); - iCompleted = ETrue; - } - -// --------------------------------------------------------- -// CXcapRetrieval::HandleNetworkOperationL -// -// --------------------------------------------------------- -// -void CXcapRetrieval::HandleNetworkOperationL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapRetrieval::HandleNetworkOperationL()" ) ); - #endif - TPtrC name = iTargetDoc.Name(); - TPtrC8 root = Transport().RootUri(); - switch( iRequestData->iHttpStatus ) - { - case 200: //ETag was stale - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status 200 - ETag was stale" ) ); - #endif - TPtrC8 responseData = Descriptor( iRequestData->iResponseData ); - if( responseData.Length() <= 0 ) - break; - if( iOperationType == EXdmDocument ) - { - TPtrC8 eTag = Descriptor( iRequestData->iETag ); - //If the ETag has not changed, server should return - //304 (Not modified), but just in case, let's check the - //ETag value, anyway. - if( eTag.Length() > 0 && eTag.Compare( iTargetDoc.ETag() ) != 0 ) - { - iTargetDoc.SetETag( eTag ); - RXcapCache* cache = iTargetDoc.Protocol().Cache(); - if( cache && !( iOptionFlags & KNoCache ) ) - cache->Store( iTargetDoc.ETag(), name, root, responseData ); - } - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " ETag values match, do not update cache" ) ); - #endif - } - iXmlParser->ParseDocumentL( &iTargetDoc, responseData ); - } - else if( iOperationType == EXdmPartialDocument ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Parse a partial document" ) ); - #endif - //The target node must be emptied before inserting new content - iDocumentSubset->SetEmptyNode( ETrue ); - iDocumentSubset->SetEmptyNode( EFalse ); - iXmlParser->ParseDocumentL( responseData, iDocumentSubset ); - } - iCompleted = ETrue; - } - break; - case 304: - { - RXcapCache* cache = iTargetDoc.Protocol().Cache(); - if( cache ) - { - #ifdef _DEBUG //ETag is up to date - cache still valid - iOperationFactory.WriteToLog( _L8( " Status 304 - Cached version is valid" ) ); - #endif - TInt length = iTargetDoc.DataLength(); - __ASSERT_DEBUG( length > 0, User::Panic( _L( "CXcapRetrieval" ), 1 ) ); - delete iRequestData->iResponseData; - iRequestData->iResponseData = NULL; - iRequestData->iResponseData = HBufC8::NewL( length ); - TPtr8 desc( iRequestData->iResponseData->Des() ); - cache->FetchDocumentContent( desc, name, root ); - if( iOperationType == EXdmDocument && !iTargetDoc.DocumentRoot() ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " No content => parse cached document" ) ); - #endif - iXmlParser->ParseDocumentL( &iTargetDoc, desc ); - } - else if( iOperationType == EXdmPartialDocument ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Parse a partial document" ) ); - #endif - iXmlParser->ParseDocumentL( &iTargetDoc, desc, iDocumentSubset ); - } - } - iCompleted = ETrue; - } - break; - default: - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Default case - Status: %d" ), - iRequestData->iHttpStatus ); - #endif - iCompleted = ETrue; - break; - } - } - -// --------------------------------------------------------- -// CXcapRetrieval::OperationFailedL -// -// --------------------------------------------------------- -// -void CXcapRetrieval::OperationFailedL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapRetrieval::OperationFailedL() - Error: %d" ), - iStatus.Int() ); - #endif - if( iStatus.Int() >= KErrNone ) - { - TInt status = iActiveRequest->ResponseData()->iHttpStatus; - TInt completion = iActiveRequest->ResponseData()->iCompletion; - iResult = status < KErrNone || completion < KErrNone ? status : ReinterpretStatus( status ); - } - else iResult = iStatus.Int(); - iCompleted = ETrue; - } - -// --------------------------------------------------------- -// CXcapRetrieval::Result -// -// --------------------------------------------------------- -// -TInt CXcapRetrieval::Result() const - { - return iRequestData->iCompletion; - } - -// --------------------------------------------------------- -// CXcapRetrieval::~CXcapRetrieval -// -// --------------------------------------------------------- -// -CXcapRetrieval::~CXcapRetrieval() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapRetrieval::~CXcapRetrieval()" ) ); - #endif - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapUriParser.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapUriParser.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,448 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapUriParser -* -*/ - - - - -// INCLUDES -#include -#include "XdmNamespace.h" -#include "XcapUriParser.h" -#include "XcapHttpOperation.h" -#include "XcapEngineDefines.h" -#include "XdmNodeAttribute.h" -#include "XcapOperationFactory.h" - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CXcapUriParser::CXcapUriParser( CXdmDocument& aTargetDoc, - CXcapOperationFactory& aOperationFactory ) : - iTargetDoc( aTargetDoc ), - iNodeType( EXdmElementUnspecified ), - iOperationFactory( aOperationFactory ) - { - } - -// --------------------------------------------------------- -// Two-phased constructor. -// -// --------------------------------------------------------- -// -CXcapUriParser* CXcapUriParser::NewL( CXdmDocument& aTargetDoc, - CXcapOperationFactory& aOperationFactory ) - { - CXcapUriParser* self = new ( ELeave ) CXcapUriParser( aTargetDoc, aOperationFactory ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CXcapUriParser::~CXcapUriParser() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapUriParser::~CXcapUriParser()" ) ); - #endif - delete iUriBuffer; - delete iCompleteUri; - iNamespaceMappings.ResetAndDestroy(); - iNamespaceMappings.Close(); - } - -// --------------------------------------------------------- -// CXcapUriParser::ConstructL -// -// --------------------------------------------------------- -// -void CXcapUriParser::ConstructL() - { - } - -// --------------------------------------------------------- -// CXcapUriParser::AddNamespaceMappingL -// -// --------------------------------------------------------- -// -void CXcapUriParser::AddNamespaceMappingL( const TDesC8& aUri, const TDesC8& aPrefix ) - { - CXdmNamespace* ns = CXdmNamespace::NewL( aUri, aPrefix ); - CleanupStack::PushL( ns ); - User::LeaveIfError( iNamespaceMappings.Append( ns ) ); - CleanupStack::Pop(); //ns - } - -// --------------------------------------------------------- -// CXcapUriParser::AppendNamespaceMappingsL -// -// --------------------------------------------------------- -// -void CXcapUriParser::AppendNamespaceMappingsL() - { - CXdmNamespace* ns = NULL; - const TInt count = iNamespaceMappings.Count(); - iUriBuffer->InsertL( iBufferPosition, KXcapUriQMark ); - iBufferPosition = iBufferPosition + KXcapUriQMark().Length(); - for( TInt i = 0;i < count;i++ ) - { - ns = iNamespaceMappings[i]; - iUriBuffer->InsertL( iBufferPosition, KXcapUriXmlns ); - iBufferPosition = iBufferPosition + KXcapUriXmlns().Length(); - TPtrC8 prefix( ns->Prefix() ); - iUriBuffer->InsertL( iBufferPosition, prefix ); - iBufferPosition = iBufferPosition + prefix.Length(); - iUriBuffer->InsertL( iBufferPosition, KXcapUriEquals ); - iBufferPosition = iBufferPosition + KXcapUriEquals().Length(); - TPtrC8 uri( ns->Uri() ); - iUriBuffer->InsertL( iBufferPosition, uri ); - iBufferPosition = iBufferPosition + uri.Length(); - iUriBuffer->InsertL( iBufferPosition, KXcapUriQuote ); - iBufferPosition = iBufferPosition + KXcapUriQuote().Length(); - iUriBuffer->InsertL( iBufferPosition, KXcapParenthClose ); - iBufferPosition = iBufferPosition + KXcapParenthClose().Length(); - } - } - -// --------------------------------------------------------- -// CXcapUriParser::FinaliseL -// -// --------------------------------------------------------- -// -void CXcapUriParser::FinaliseL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapUriParser::FinaliseL()" ) ); - #endif - delete iCompleteUri; - iCompleteUri = NULL; - iCompleteUri = HBufC8::NewL( iUriBuffer->Size() ); - TPtr8 pointer( iCompleteUri->Des() ); - iUriBuffer->Read( 0, pointer, iUriBuffer->Size() ); - iUriBuffer->Reset(); - delete iUriBuffer; - iUriBuffer = NULL; - } - -// --------------------------------------------------------- -// CXcapUriParser::ParseL -// -// --------------------------------------------------------- -// -void CXcapUriParser::ParseL( const TPtrC8& aHttpUri ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapUriParser::ParseL()" ) ); - #endif - iHttpUri = CONST_CAST( TPtrC8*, &aHttpUri ); - if( iNodeType != EXdmElementUnspecified ) - { - HBufC8* path = DocSubsetPathL(); - CleanupStack::PushL( path ); - iBufferPosition = CreateBasicNodeUriL( path ); - CleanupStack::PopAndDestroy(); //path - iNodeType == EXdmElementAttribute ? FormatAttributeUriL() : FormatNodeUriL(); - if( iNamespaceMappings.Count() > 0 ) - AppendNamespaceMappingsL(); - FinaliseL(); - #ifdef _DEBUG - TPtr8 desc( iCompleteUri->Des() ); - iOperationFactory.WriteToLog( _L8( " Context: %S" ), &desc ); - #endif - } - else - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Context is a whole document" ) ); - #endif - iCompleteUri = HBufC8::NewL( iHttpUri->Length() ); - iCompleteUri->Des().Copy( *iHttpUri ); - } - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::DocSubsetPathL -// -// ---------------------------------------------------------- -// -HBufC8* CXcapUriParser::DocSubsetPathL() - { - HBufC8* ret = NULL; - CXdmDocumentNode* current = iDocumentSubset->Parent(); - CBufFlat* buffer = CBufFlat::NewL( 256 ); - CleanupStack::PushL( buffer ); - while( current != NULL ) - { - buffer->InsertL( 0, FormatOnePathElementLC( current )->Des() ); - CleanupStack::PopAndDestroy(); //FormatOnePathElementLC - current = current->Parent(); - } - TInt length = buffer->Size(); - ret = HBufC8::NewL( length ); - TPtr8 pointer( ret->Des() ); - buffer->Read( 0, pointer, length ); - CleanupStack::PopAndDestroy(); //buffer - return ret; - } - -// --------------------------------------------------------- -// CXcapUriParser::FormatAttributeUriL -// -// --------------------------------------------------------- -// -HBufC8* CXcapUriParser::FormatOnePathElementLC( const CXdmDocumentNode* aPathElement ) - { - #ifdef _DEBUG - HBufC8* name8 = aPathElement->EightBitNodeNameLC(); - TPtrC8 elemName( name8->Des() ); - TPtrC8 elemPref( aPathElement->Prefix() ); - iOperationFactory.WriteToLog( _L8( "CXcapUriParser::FormatOnePathElementL()" ) ); - if( elemPref.Length() > 0 ) - iOperationFactory.WriteToLog( _L8( " Prefix: %S" ), &elemName ); - iOperationFactory.WriteToLog( _L8( " Name: %S" ), &elemName ); - CleanupStack::PopAndDestroy(); //name8 - #endif - TInt position = 0; - CBufFlat* buffer = CBufFlat::NewL( 50 ); - CleanupStack::PushL( buffer ); - buffer->InsertL( position, KXCAPPathSeparator ); - position = position + KXCAPPathSeparator().Length(); - TPtrC8 prefix = aPathElement->Prefix(); - if( prefix.Length() > 0 ) - { - buffer->InsertL( position, prefix ); - position = position + prefix.Length(); - buffer->InsertL( position, KXcapUriColon ); - position = position + KXcapUriColon().Length(); - } - TPtrC8 name = aPathElement->EightBitNodeNameLC()->Des(); - buffer->InsertL( position, name ); - position = position + name.Length(); - CleanupStack::PopAndDestroy(); //EightBitNodeNameLC - if( aPathElement->AttributeCount() > 0 && - !( iNodeType == EXdmElementAttribute && aPathElement == iDocumentSubset->Parent() ) ) - AppendPredicatesL( position, buffer, aPathElement ); - HBufC8* retBuf = HBufC8::NewL( buffer->Size() ); - TPtr8 pointer( retBuf->Des() ); - buffer->Read( 0, pointer, buffer->Size() ); - CleanupStack::PopAndDestroy(); //buffer - CleanupStack::PushL( retBuf ); - return retBuf; - } - -// --------------------------------------------------------- -// CXcapUriParser::FormatAttributeUriL -// -// --------------------------------------------------------- -// -void CXcapUriParser::FormatAttributeUriL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " CXcapUriParser::FormatAttributeUriL()" ) ); - #endif - iUriBuffer->InsertL( iBufferPosition, KXCAPAttributeIdentifier ); - iBufferPosition = iBufferPosition + KXCAPAttributeIdentifier().Length(); - iUriBuffer->InsertL( iBufferPosition, iDocumentSubset->EightBitNodeNameLC()->Des() ); - CleanupStack::PopAndDestroy(); //EightBitNodeNameLC - HBufC8* newUri = HBufC8::NewLC( iUriBuffer->Size() ); - TPtr8 pointer( newUri->Des() ); - iUriBuffer->Read( 0, pointer, iUriBuffer->Size() ); - #ifdef _DEBUG - DumpUriL( newUri ); - #endif - CleanupStack::PopAndDestroy(); //newUri - } - -// --------------------------------------------------------- -// CXcapUriParser::FormatNodeUriL -// -// --------------------------------------------------------- -// -void CXcapUriParser::FormatNodeUriL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " CXcapUriParser::FormatNodeUriL()" ) ); - #endif - iNodeType = EXdmElementNode; - TPtrC8 prefix = iDocumentSubset->Prefix(); - if( prefix.Length() > 0 ) - { - iUriBuffer->InsertL( iBufferPosition, prefix ); - iBufferPosition = iBufferPosition + prefix.Length(); - iUriBuffer->InsertL( iBufferPosition, KXcapUriColon ); - iBufferPosition = iBufferPosition + KXcapUriColon().Length(); - } - TPtrC8 name = iDocumentSubset->EightBitNodeNameLC()->Des(); - iUriBuffer->InsertL( iBufferPosition, name ); - iBufferPosition = iBufferPosition + name.Length(); - CleanupStack::PopAndDestroy(); //EightBitNodeNameLC - if( iDocumentSubset->AttributeCount() > 0 ) - AppendPredicatesL( iBufferPosition, iUriBuffer, iDocumentSubset ); - //For now, do not put a trailing '/' to the node path. This may have to be changed, though. - //iUriBuffer->InsertL( iBufferPosition, KXCAPPathSeparator ); - //iBufferPosition = iBufferPosition + TPtrC8( KXCAPPathSeparator ).Length(); - HBufC8* newUri = HBufC8::NewLC( iUriBuffer->Size() ); - TPtr8 pointer2( newUri->Des() ); - iUriBuffer->Read( 0, pointer2, iUriBuffer->Size() ); - #ifdef _DEBUG - DumpUriL( newUri ); - #endif - CleanupStack::PopAndDestroy(); //newUri - } - -// --------------------------------------------------------- -// CXcapUriParser::AppendPredicatesL -// -// --------------------------------------------------------- -// -void CXcapUriParser::AppendPredicatesL( TInt& aPosition, - CBufBase* aBuffer, - const CXdmDocumentNode* aPathElement ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " CXcapUriParser::AppendPredicatesL()" ) ); - #endif - TInt count = aPathElement->AttributeCount(); - for( TInt i = 0;i < count;i++ ) - { - CXdmNodeAttribute* attribute = aPathElement->Attribute( i ); - //Namespaces cannot be used as attributes - if( attribute->NodeName().Find( _L( "xmlns" ) ) < 0 ) - { - aBuffer->InsertL( aPosition, KHTTPBracketOpen ); - aPosition = aPosition + KHTTPBracketOpen().Length(); - aBuffer->InsertL( aPosition, KXCAPAttributeIdentifier ); - aPosition = aPosition + KXCAPAttributeIdentifier().Length(); - TPtrC8 name = attribute->EightBitNodeNameLC()->Des(); - aBuffer->InsertL( aPosition, name ); - aPosition = aPosition + name.Length(); - CleanupStack::PopAndDestroy(); //EightBitNodeNameLC - aBuffer->InsertL( aPosition, KXCAPEquality ); - aPosition = aPosition + KXCAPEquality().Length(); - aBuffer->InsertL( aPosition, KHTTPQuotationMark ); - aPosition = aPosition + KHTTPQuotationMark().Length(); - TPtrC8 value = attribute->EightBitValueLC()->Des(); - aBuffer->InsertL( aPosition, value ); - aPosition = aPosition + value.Length(); - CleanupStack::PopAndDestroy(); //EightBitValueLC - aBuffer->InsertL( aPosition, KHTTPQuotationMark ); - aPosition = aPosition + KHTTPQuotationMark().Length(); - aBuffer->InsertL( aPosition, KHTTPBracketClose ); - aPosition = aPosition + KHTTPBracketClose().Length(); - } - } - } - -// --------------------------------------------------------- -// CXcapUriParser::CreateBasicNodeUriL -// -// --------------------------------------------------------- -// -TInt CXcapUriParser::CreateBasicNodeUriL( HBufC8* aNodePath ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " CXcapUriParser::CreateBasicNodeUriL()" ) ); - #endif - TInt position = 0; - TPtr8 pointer( aNodePath->Des() ); - iUriBuffer = CBufFlat::NewL( 256 ); - iUriBuffer->InsertL( position, *iHttpUri ); - position = iHttpUri->Length(); - if( iHttpUri->LocateReverseF( KXcapPathSeparatorChar ) != iHttpUri->Length() - 1 ) - { - iUriBuffer->InsertL( position, KXCAPPathSeparator ); - position = position + KXCAPPathSeparator().Length(); - } - iUriBuffer->InsertL( position, KXCAPNodeSeparator ); //"~~" - position = position + KXCAPNodeSeparator().Length(); - iUriBuffer->InsertL( position, pointer ); - position = position + pointer.Length(); - iUriBuffer->InsertL( position, KXCAPPathSeparator ); - position = position + KXCAPPathSeparator().Length(); - return position; - } - - - -// --------------------------------------------------------- -// CXcapUriParser::SetDocumentSubset -// -// --------------------------------------------------------- -// -void CXcapUriParser::SetDocumentSubset( const CXdmDocumentNode* aDocumentSubset ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapUriParser::SetDocumentSubset() - Type: %d" ), - aDocumentSubset->ElementType() ); - #endif - __ASSERT_DEBUG( aDocumentSubset != NULL, User::Panic( _L( "CXcapUriParser" ), 1 ) ); - iDocumentSubset = CONST_CAST( CXdmDocumentNode*, aDocumentSubset ); - iNodeType = iDocumentSubset->ElementType(); - } - -// --------------------------------------------------------- -// CXcapUriParser::DesC8 -// -// --------------------------------------------------------- -// -TPtrC8 CXcapUriParser::DesC8() const - { - return iCompleteUri != NULL ? iCompleteUri->Des() : TPtrC8(); - } - -// --------------------------------------------------------- -// CXcapUriParser::NodeType -// -// --------------------------------------------------------- -// -TXdmElementType CXcapUriParser::NodeType() const - { - return iNodeType; - } - -#ifdef _DEBUG -// --------------------------------------------------------- -// CXcapUriParser::DumpUriL -// -// --------------------------------------------------------- -// -void CXcapUriParser::DumpUriL( HBufC8* aNodePath ) - { - RFile file; - RFs session; - TPtr8 pointer( aNodePath->Des() ); - _LIT( KFilePath, "C:\\logs\\XDM\\Dump.txt" ); - User::LeaveIfError( session.Connect() ); - TInt error = file.Replace( session, KFilePath, EFileWrite ); - if( error == KErrNone ) - { - file.Write( pointer ); - file.Close(); - } - session.Close(); - } -#endif -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapUtils/bwinscw/XcapUtilsU.DEF --- a/xdmprotocols/XcapProtocol/XcapUtils/bwinscw/XcapUtilsU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -EXPORTS - ??1CXcapEarlyIms@@UAE@XZ @ 1 NONAME ; CXcapEarlyIms::~CXcapEarlyIms(void) - ?CheckFileExistsL@XcapStaticUtils@@SAHAAVRFs@@ABVTDesC16@@@Z @ 2 NONAME ; int XcapStaticUtils::CheckFileExistsL(class RFs &, class TDesC16 const &) - ?GenerateFileNameLC@XcapStaticUtils@@SAPAVHBufC16@@AAVRFs@@ABVTDesC16@@1@Z @ 3 NONAME ; class HBufC16 * XcapStaticUtils::GenerateFileNameLC(class RFs &, class TDesC16 const &, class TDesC16 const &) - ?NewL@CXcapEarlyIms@@SAPAV1@XZ @ 4 NONAME ; class CXcapEarlyIms * CXcapEarlyIms::NewL(void) - ?PublicIDL@CXcapEarlyIms@@QAE?AVTPtrC8@@XZ @ 5 NONAME ; class TPtrC8 CXcapEarlyIms::PublicIDL(void) - ?RequestSimDataL@CXcapEarlyIms@@QAEXPAVMXcapEarlyImsObs@@@Z @ 6 NONAME ; void CXcapEarlyIms::RequestSimDataL(class MXcapEarlyImsObs *) - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapUtils/eabi/XcapUtilsU.DEF --- a/xdmprotocols/XcapProtocol/XcapUtils/eabi/XcapUtilsU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -EXPORTS - _ZN13CXcapEarlyIms15RequestSimDataLEP16MXcapEarlyImsObs @ 1 NONAME - _ZN13CXcapEarlyIms4NewLEv @ 2 NONAME - _ZN13CXcapEarlyIms9PublicIDLEv @ 3 NONAME - _ZN15XcapStaticUtils16CheckFileExistsLER3RFsRK7TDesC16 @ 4 NONAME - _ZN15XcapStaticUtils18GenerateFileNameLCER3RFsRK7TDesC16S4_ @ 5 NONAME - _ZTI13CXcapEarlyIms @ 6 NONAME ; ## - _ZTV13CXcapEarlyIms @ 7 NONAME ; ## - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapUtils/group/XcapUtils.mmp --- a/xdmprotocols/XcapProtocol/XcapUtils/group/XcapUtils.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2007 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: XcapUtils.dll from XcapUtils.mmp -* -*/ - - - -#include - -TARGET xcaputils.dll -TARGETTYPE dll -UID 0x1000008d 0x10207453 -CAPABILITY CAP_GENERAL_DLL -VENDORID VID_DEFAULT - -SOURCEPATH ../src - -SOURCE XcapEarlyIms.cpp -SOURCE XcapStaticUtils.cpp - -//Internal -USERINCLUDE ../inc - -MW_LAYER_SYSTEMINCLUDE - -LIBRARY etel.lib -LIBRARY bafl.lib -LIBRARY efsrv.lib -LIBRARY euser.lib -LIBRARY etelmm.lib -LIBRARY commsdat.lib -DEBUGLIBRARY flogger.lib - -#if defined( ARMCC ) - deffile ../eabi/ -#elif defined ( WINSCW ) - deffile ../bwinscw/ -#elif defined ( WINS ) - deffile ../bwins/ -#endif - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapUtils/group/bld.inf --- a/xdmprotocols/XcapProtocol/XcapUtils/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -/* -* Copyright (c) 2007 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: XcapUtils bld.inf -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- - -XcapUtils.mmp - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapUtils/inc/XcapEarlyIms.h --- a/xdmprotocols/XcapProtocol/XcapUtils/inc/XcapEarlyIms.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,170 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapEarlyIms -* -*/ - - - - -#ifndef __XCAPEARLYIMS__ -#define __XCAPEARLYIMS__ - -#include - -//COMMON CONSTANTS -_LIT( KUtilsLogDir, "XDM" ); -_LIT( KUtilsLogFile, "XcapUtils.txt" ); -_LIT8( KXcapFakeImpu, "IMSI@FakeImpu.ims.3gpp.invalid" ); -const TInt KUtilsLogBufMaxSize = 2000; - - -//For testing of EarlyIms in WINSCW -//#define __FAKE_IMPU__ - -//FORWARD DECLARATIONS -class MXcapEarlyImsObs; -class CAsyncRetrieveAuthorizationInfo; - -// CLASS DECLARATION -class CXcapEarlyIms : public CActive - - { - public: // Constructors and destructor - - /** - * Symbian OS default constructor. - * @return CXcapEarlyIms New instance - */ - IMPORT_C static CXcapEarlyIms* NewL(); - - /** - * Symbian OS default constructor. - * @return CXcapEarlyIms New instance - */ - IMPORT_C void RequestSimDataL( MXcapEarlyImsObs* aObserver ); - - /** - * Symbian OS default constructor. - * @return CXcapEarlyIms New instance - */ - IMPORT_C TPtrC8 PublicIDL(); - - /** - * Destructor. - */ - IMPORT_C virtual ~CXcapEarlyIms(); - - #ifdef _DEBUG - - /** - * Clean the log file - * @return void - */ - void CXcapEarlyIms::DeleteLogFileL(); - - /** - * A global logging function for 8 bit data. - * @param aCommand command to be handled - */ - static void WriteToLog( TRefByValue aFmt,... ); - - #endif //_DEBUG - - private: - - /** - * C++ default constructor is private. - */ - CXcapEarlyIms(); - - /** - * Symbian OS second-phase constructor. - * @return void - */ - void ConstructL(); - - /** - * From CActive - * A request has completed - * @return void - */ - void RunL(); - - /** - * From CActive - * Cancel an outstanding request. - * @return void - */ - void DoCancel(); - - /** - * Get the module name - * @param TDes& Module name on return - * @return void - */ - void ModuleNameL( TDes& aModuleName ) const; - - /** - * Find out the type of the SIM card - * and its application - * @return void - */ - void SelectSimTypeL(); - - /** - * Derive IMPU and IMPI from the values - * retrieved from the SIM card - * @return TPtrC8 User's Public ID - */ - TPtrC8 DeriveL(); - - private: //Data - - - enum TRequestPhase - { - TRequestIdle = 0, - TRequestAuth, - TRequestNetwork, - TRequestUsimAuth - }; - - enum TXcapSimType - { - ESimTypeGsm = 0, - ESimTypeCdma, - ESimTypeWcdma, - ESimTypeUnknown - }; - - TBool iRequestComplete; - HBufC8* iImpu; - HBufC8* iImpi; - RTelServer iServer; - RMobilePhone iPhone; - TXcapSimType iSimType; - TRequestPhase iRequestPhase; - MXcapEarlyImsObs* iObserver; - CAsyncRetrieveAuthorizationInfo* iRetriever; - RMobilePhone::CImsAuthorizationInfoV5* iAuthData; - RMobilePhone::TMobilePhoneSubscriberId iImsi; - RMobilePhone::TMobilePhoneNetworkCountryCode iCountryCode; - RMobilePhone::TMobilePhoneNetworkIdentity iNetworkCode; - TPckgBuf iNetworkInfoPckg; - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapUtils/inc/XcapStaticUtils.h --- a/xdmprotocols/XcapProtocol/XcapUtils/inc/XcapStaticUtils.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* Copyright (c) 2007 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: XcapStaticUtils -* -*/ - - - - -#ifndef __XCAPSTATICUTILS__ -#define __XCAPSTATICUTILS__ - -#include - -class RFs; - -// CLASS DECLARATION -class XcapStaticUtils - - { - public: - - /** - * Check whether a file already exists. - * - * @param TDesC& The file name to check - * @return TBool Is the file already there - */ - IMPORT_C static TBool CheckFileExistsL( RFs& aFileSession, const TDesC& aFileName ); - - /** - * Generate a new file name unique in the context - * of the folder in which it resides - * - * @param TDesC& The file name to check - * @return TBool Is the file already there - */ - IMPORT_C static HBufC* GenerateFileNameLC( RFs& aFileSession, const TDesC& aFileName, - const TDesC& aExtension ); - - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapUtils/inc/XcapUtilsInterface.h --- a/xdmprotocols/XcapProtocol/XcapUtils/inc/XcapUtilsInterface.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -/* -* Copyright (c) 2007 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: MXcapEarlyImsObs -* -*/ - - - - -#ifndef __XCAPUTILSINTERFACE__ -#define __XCAPUTILSINTERFACE__ - -#include - -// CLASS DECLARATION -class MXcapEarlyImsObs - { - public: // Constructors and destructor - - /** - * IMS parameters have been resolved. - * @return void - */ - virtual void RequestComplete( TInt aError ) = 0; - - }; - -#endif - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapUtils/src/XcapEarlyIms.cpp --- a/xdmprotocols/XcapProtocol/XcapUtils/src/XcapEarlyIms.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,444 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapEarlyIms -* -*/ - - - - -// INCLUDE FILES -#ifdef _DEBUG - #include - #include - #include -#endif -#include -#include -#include -#include -#include -#include "XcapEarlyIms.h" -#include "XcapUtilsInterface.h" - -// ---------------------------------------------------------- -// CXcapEarlyIms::CXcapEarlyIms -// -// ---------------------------------------------------------- -// -CXcapEarlyIms::CXcapEarlyIms() : CActive( EPriorityNormal ), - iRequestComplete( EFalse ), - iSimType( ESimTypeUnknown ) - - { - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::NewL -// -// ---------------------------------------------------------- -// -EXPORT_C CXcapEarlyIms* CXcapEarlyIms::NewL() - { - CXcapEarlyIms* self = new ( ELeave ) CXcapEarlyIms(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); //self - return self; - } - -// ---------------------------------------------------- -// CXcapEarlyIms::~CXcapEarlyIms -// -// ---------------------------------------------------- -// -CXcapEarlyIms::~CXcapEarlyIms() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapEarlyIms::~CXcapEarlyIms()" ) ); - #endif - delete iImpu; - delete iImpi; - delete iAuthData; - delete iRetriever; - iPhone.Close(); - iServer.Close(); - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapEarlyIms::ConstructL() - { - #ifdef _DEBUG - DeleteLogFileL(); - WriteToLog( _L8( "CXcapEarlyIms::ConstructL()" ) ); - #endif - #ifndef __FAKE_IMPU__ - TName tsyName; - TInt numPhone = 0; - TBool found = EFalse; - RTelServer::TPhoneInfo phoneInfo; - User::LeaveIfError( iServer.Connect() ); - TBuf tsyModuleName; - ModuleNameL( tsyModuleName ); - User::LeaveIfError( iServer.LoadPhoneModule( tsyModuleName ) ); - User::LeaveIfError( iServer.EnumeratePhones( numPhone ) ); - for( TInt i = 0;!found && i < numPhone;i++ ) - { - User::LeaveIfError( iServer.GetTsyName( i, tsyName ) ); - User::LeaveIfError( iServer.GetPhoneInfo( i, phoneInfo ) ); - if( tsyName.CompareF( tsyModuleName ) == 0 ) - found = ETrue; - } - __ASSERT_ALWAYS( found, User::Leave( KErrNotFound ) ); - User::LeaveIfError( iPhone.Open( iServer, phoneInfo.iName ) ); - SelectSimTypeL(); - #endif - CActiveScheduler::Add( this ); - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::RequestSimDataL -// -// ---------------------------------------------------------- -// -EXPORT_C void CXcapEarlyIms::RequestSimDataL( MXcapEarlyImsObs* aObserver ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapEarlyIms::RequestSimDataL()" ) ); - #endif - #ifdef __FAKE_IMPU__ - iStatus = KRequestPending; - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - SetActive(); - #else - if( !IsActive() ) - { - TUint32 caps( 0 ); - User::LeaveIfError( iPhone.GetIdentityCaps( caps ) ); - if( !( caps & RMobilePhone::KCapsGetSubscriberId ) ) - User::Leave( KErrNotSupported ); - iPhone.GetSubscriberId( iStatus, iImsi ); - iRequestPhase = TRequestAuth; - iRequestComplete = EFalse; - SetActive(); - } - #endif - iObserver = aObserver; - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::PublicIDL -// -// ---------------------------------------------------------- -// -EXPORT_C TPtrC8 CXcapEarlyIms::PublicIDL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapEarlyIms::PublicIDL()" ) ); - #endif - #ifdef __FAKE_IMPU__ - return KXcapFakeImpu(); - #else - if( iRequestComplete && iRequestPhase == TRequestIdle ) - { - switch( iSimType ) - { - case ESimTypeWcdma: - return iAuthData->iIMPUArray[0]; - case ESimTypeGsm: - return DeriveL(); - default: - return TPtrC8(); - } - } - else return TPtrC8(); - #endif - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::DeriveL -// -// ---------------------------------------------------------- -// -TPtrC8 CXcapEarlyIms::DeriveL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapEarlyIms::DeriveL()" ) ); - #endif - _LIT8( KImsMnc, "ims.mnc" ); - _LIT8( KMcc, ".mcc" ); - _LIT8( K3gppnetwork, ".3gppnetwork.org"); - _LIT8( KAt, "@"); - _LIT8( KSip, "sip:"); - _LIT8( KZero, "0"); - TPtrC networkDesc( iNetworkInfoPckg().iNetworkId ); - TPtrC countryDesc( iNetworkInfoPckg().iCountryCode ); - TInt nwlength = networkDesc.Length() + countryDesc.Length(); - if( networkDesc.Length() == 2 ) - nwlength = nwlength + 1; - //private user identity - TInt impiLength = iImsi.Length() + KAt().Length() + KImsMnc().Length() + - nwlength + KMcc().Length() + K3gppnetwork().Length(); - iImpi = HBufC8::NewL( impiLength ); - TPtr8 impiDesc( iImpi->Des() ); - impiDesc.Append( iImsi ); - impiDesc.Append( KAt ); - impiDesc.Append( KImsMnc ); - if( networkDesc.Length() == 2 ) - impiDesc.Append( KZero ); - impiDesc.Append( networkDesc ); - impiDesc.Append( KMcc ); - impiDesc.Append( countryDesc ); - impiDesc.Append( K3gppnetwork ); - //public user identity - TInt impuLength = KSip().Length() + impiDesc.Length(); - iImpu = HBufC8::NewL( impuLength ); - TPtr8 impuDesc( iImpu->Des() ); - impuDesc.Append( KSip ); - impuDesc.Append( impiDesc ); - #ifdef _DEBUG - WriteToLog( _L8( " IMPI: %S" ), &impiDesc ); - WriteToLog( _L8( " IMPU: %S" ), &impuDesc ); - #endif - return impuDesc; - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::SelectSimTypeL -// -// ---------------------------------------------------------- -// -void CXcapEarlyIms::SelectSimTypeL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapEarlyIms::SelectSimTypeL()" ) ); - #endif - TUint32 caps; - User::LeaveIfError( iPhone.GetIccAccessCaps( caps ) ); - if( caps & RMobilePhone::KCapsSimAccessSupported ) - { - if( caps & RMobilePhone::KCapsUSimAccessSupported ) - { - #ifdef _DEBUG - WriteToLog( _L8( " USIM Card" ) ); - #endif - iSimType = ESimTypeWcdma; - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " 2G SIM Card" ) ); - #endif - iSimType = ESimTypeGsm; - } - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " No SIM Card" ) ); - #endif - iSimType = ESimTypeUnknown; - } - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::RunL -// -// ---------------------------------------------------------- -// -void CXcapEarlyIms::RunL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapEarlyIms::RunL()" ) ); - WriteToLog( _L8( " Status: %d" ), iStatus.Int() ); - WriteToLog( _L8( " Request phase: %d" ), iRequestPhase ); - #endif - #ifdef __FAKE_IMPU__ - iObserver->RequestComplete( KErrNone ); - #else - if( iStatus.Int() == KErrNone ) - { - switch( iRequestPhase ) - { - case TRequestIdle: - break; - case TRequestAuth: - { - #ifdef _DEBUG - HBufC8* buf = HBufC8::NewLC( iImsi.Length() ); - TPtr8 desc( buf->Des() ); - desc.Copy( iImsi ); - WriteToLog( _L8( " IMSI retrieved: %S" ), &desc ); - CleanupStack::PopAndDestroy(); //buf - #endif - iPhone.GetHomeNetwork( iStatus, iNetworkInfoPckg ); - iRequestPhase = TRequestNetwork; - SetActive(); - } - break; - case TRequestNetwork: - { - #ifdef _DEBUG - HBufC8* nwid = HBufC8::NewLC( iNetworkInfoPckg().iNetworkId.Length() ); - HBufC8* country = HBufC8::NewLC( iNetworkInfoPckg().iCountryCode.Length() ); - TPtr8 desc1( nwid->Des() ); - TPtr8 desc2( country->Des() ); - desc1.Copy( iNetworkInfoPckg().iNetworkId ); - desc2.Copy( iNetworkInfoPckg().iCountryCode ); - WriteToLog( _L8( " Home network info retrieved" ) ); - WriteToLog( _L8( " Network ID: %S" ), &desc1 ); - WriteToLog( _L8( " Country code: %S" ), &desc2 ); - CleanupStack::PopAndDestroy( 2 ); //country, nwid - #endif - if( iSimType == ESimTypeWcdma ) - { - iAuthData = RMobilePhone::CImsAuthorizationInfoV5::NewL(); - iRetriever = CAsyncRetrieveAuthorizationInfo::NewL( iPhone, *iAuthData ); - iRequestPhase = TRequestUsimAuth; - iRetriever->Start( iStatus ); - SetActive(); - } - else - { - #ifdef _DEBUG - WriteToLog( _L8( " Request complete" ) ); - #endif - iObserver->RequestComplete( KErrNone ); - iRequestPhase = TRequestIdle; - iRequestComplete = ETrue; - } - } - break; - case TRequestUsimAuth: - { - #ifdef _DEBUG - RMobilePhone::TAuthorizationDataSource source( - iAuthData->iAuthenticationDataSource ); - TBuf8<4> sourceDesc( source == RMobilePhone::EFromUSIM - ? _L8( "USIM" ) : _L8( "ISIM" ) ); - WriteToLog( _L8( " USIM auth retrieved" ) ); - WriteToLog( _L8( " IMPI: %S" ), &iAuthData->iIMPI ); - WriteToLog( _L8( " IMPU: %S" ), &iAuthData->iIMPUArray[0] ); - WriteToLog( _L8( " Domain: %S" ), &iAuthData->iHomeNetworkDomainName ); - WriteToLog( _L8( " AuthDataSource: %S" ), &sourceDesc ); - #endif - iObserver->RequestComplete( KErrNone ); - iRequestPhase = TRequestIdle; - iRequestComplete = ETrue; - } - break; - default: - break; - } - } - else iObserver->RequestComplete( iStatus.Int() ); - #endif - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::DoCancel -// -// ---------------------------------------------------------- -// -void CXcapEarlyIms::DoCancel() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapEarlyIms::DoCancel() - State: %d" ), iRequestPhase ); - #endif - switch( iRequestPhase ) - { - case TRequestIdle: - break; - case TRequestAuth: - iPhone.CancelAsyncRequest( EMobilePhoneGetSubscriberId ); - break; - case TRequestNetwork: - iPhone.CancelAsyncRequest( EMobilePhoneGetHomeNetwork ); - break; - case TRequestUsimAuth: - delete iRetriever; - iRetriever = NULL; - break; - default: - break; - } - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::ModuleNameL -// -// ---------------------------------------------------------- -// -void CXcapEarlyIms::ModuleNameL( TDes& aModuleName ) const - { - __ASSERT_ALWAYS( aModuleName.MaxSize() >= KCommsDbSvrMaxFieldLength, User::Leave( KErrArgument ) ); - using namespace CommsDat; - CMDBSession* db = CMDBSession::NewLC( KCDLatestVersion ); - CMDBField* field = new ( ELeave ) CMDBField( KCDTIdModemPhoneServicesSMS ); - CleanupStack::PushL( field ); - field->SetRecordId( 1 ); - field->LoadL( *db ); - TUint32 modemId = *field; - CMDBField* tsyField = new ( ELeave ) CMDBField( KCDTIdTsyName ); - CleanupStack::PushL( tsyField ); - tsyField->SetRecordId( modemId ); - tsyField->LoadL( *db ); - aModuleName = *tsyField; - CleanupStack::PopAndDestroy( 3 ); //tsyField, field, db - } - -#ifdef _DEBUG -// ---------------------------------------------------- -// CXcapEarlyIms::WriteToLog -// -// ---------------------------------------------------- -// -void CXcapEarlyIms::WriteToLog( TRefByValue aFmt,... ) - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - RFileLogger::Write( KUtilsLogDir, KUtilsLogFile, EFileLoggingModeAppend, buf ); - } - -// ---------------------------------------------------------- -// CXcapEarlyIms::DeleteLogFileL -// -// ---------------------------------------------------------- -// -void CXcapEarlyIms::DeleteLogFileL() - { - RFs session; - TBuf<32> log( _L( "C:\\logs\\XDM\\" ) ); - User::LeaveIfError( session.Connect() ); - CFileMan* manager = CFileMan::NewL( session ); - log.Append( KUtilsLogFile ); - manager->Delete( log ); - session.Close(); - delete manager; - manager = NULL; - } -#endif //_DEBUG - - - - - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapUtils/src/XcapStaticUtils.cpp --- a/xdmprotocols/XcapProtocol/XcapUtils/src/XcapStaticUtils.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -/* -* Copyright (c) 2007 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: XcapStaticUtils -* -*/ - - - - -#include -#include "XcapStaticUtils.h" - -// ---------------------------------------------------------- -// XcapStaticUtils::CheckFileExistsL -// -// ---------------------------------------------------------- -// -EXPORT_C TBool XcapStaticUtils::CheckFileExistsL( RFs& aFileSession, const TDesC& aFileName ) - { - TBool found = EFalse; - CDir* directory = NULL; - const TInt KBackSlash = 92; - TInt index = aFileName.LocateReverse( KBackSlash ); - TPtrC dir( aFileName.Left( index + 1 ) ); - TPtrC name( aFileName.Right( aFileName.Length() - index - 1 ) ); - User::LeaveIfError( aFileSession.GetDir( dir, KEntryAttNormal, ESortNone, directory ) ); - CleanupStack::PushL( directory ); - const TInt count = directory->Count(); - for( TInt i = 0;!found && i < count;i++ ) - { - if( name.CompareF( ( *directory )[i].iName ) == 0 ) - found = ETrue; - } - CleanupStack::PopAndDestroy(); //directory - return found; - } - -// ---------------------------------------------------------- -// XcapStaticUtils::GenerateFileNameLC -// -// ---------------------------------------------------------- -// -EXPORT_C HBufC* XcapStaticUtils::GenerateFileNameLC( RFs& aFileSession, const TDesC& aFileName, - const TDesC& aExtension ) - { - TBuf name; - name.Copy( aFileName ); - name.Append( aExtension ); - TBool exists = XcapStaticUtils::CheckFileExistsL( aFileSession, name ); - for( TInt i = 1;exists;i++ ) - { - name.Zero(); - name.Copy( aFileName ); - name.AppendNum( i ); - name.Append( aExtension ); - exists = XcapStaticUtils::CheckFileExistsL( aFileSession, name ); - } - return name.AllocLC(); - } - - - - - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/bwinscw/XcapProtocolU.DEF --- a/xdmprotocols/XcapProtocol/bwinscw/XcapProtocolU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -EXPORTS - ?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &) - ??1CXcapDocumentNode@@UAE@XZ @ 2 NONAME ; CXcapDocumentNode::~CXcapDocumentNode(void) - ??1CXdmNamespace@@UAE@XZ @ 3 NONAME ; CXdmNamespace::~CXdmNamespace(void) - ?ApplicationUsage@CXcapDocument@@QBEAAVCXcapAppUsage@@XZ @ 4 NONAME ; class CXcapAppUsage & CXcapDocument::ApplicationUsage(void) const - ?Cache@CXcapProtocol@@QAEPAVRXcapCache@@XZ @ 5 NONAME ; class RXcapCache * CXcapProtocol::Cache(void) - ?DataLength@CXcapDocument@@QBEHXZ @ 6 NONAME ; int CXcapDocument::DataLength(void) const - ?ETag@CXcapDocument@@QAEAAVTDesC8@@XZ @ 7 NONAME ; class TDesC8 & CXcapDocument::ETag(void) - ?IsNetworkAvailable@CXcapProtocol@@QAEHXZ @ 8 NONAME ; int CXcapProtocol::IsNetworkAvailable(void) - ?NewL@CXdmNamespace@@SAPAV1@ABVTDesC8@@0@Z @ 9 NONAME ; class CXdmNamespace * CXdmNamespace::NewL(class TDesC8 const &, class TDesC8 const &) - ?Parser@CXcapProtocol@@QAEAAVCXdmXmlParser@@XZ @ 10 NONAME ; class CXdmXmlParser & CXcapProtocol::Parser(void) - ?Prefix@CXdmNamespace@@QBE?AVTPtrC8@@XZ @ 11 NONAME ; class TPtrC8 CXdmNamespace::Prefix(void) const - ?Protocol@CXcapDocument@@QBEAAVCXcapProtocol@@XZ @ 12 NONAME ; class CXcapProtocol & CXcapDocument::Protocol(void) const - ?PublicID@CXcapProtocol@@QAE?AVTPtrC8@@XZ @ 13 NONAME ; class TPtrC8 CXcapProtocol::PublicID(void) - ?RemoveData@CXcapDocument@@QAEXPAVCXcapDocumentNode@@@Z @ 14 NONAME ; void CXcapDocument::RemoveData(class CXcapDocumentNode *) - ?ResetSubset@CXcapDocument@@UAEXXZ @ 15 NONAME ; void CXcapDocument::ResetSubset(void) - ?SetETag@CXcapDocument@@QAEXABVTDesC8@@@Z @ 16 NONAME ; void CXcapDocument::SetETag(class TDesC8 const &) - ?TempCopyL@CXcapDocument@@QAEPAV1@XZ @ 17 NONAME ; class CXcapDocument * CXcapDocument::TempCopyL(void) - ?Transport@CXcapProtocol@@QAEAAVCXcapHttpTransport@@XZ @ 18 NONAME ; class CXcapHttpTransport & CXcapProtocol::Transport(void) - ?Uri@CXdmNamespace@@QBE?AVTPtrC8@@XZ @ 19 NONAME ; class TPtrC8 CXdmNamespace::Uri(void) const - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/eabi/XcapProtocolU.DEF --- a/xdmprotocols/XcapProtocol/eabi/XcapProtocolU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -EXPORTS - _Z24ImplementationGroupProxyRi @ 1 NONAME - _ZN13CXcapDocument10RemoveDataEP17CXcapDocumentNode @ 2 NONAME - _ZN13CXcapDocument11ResetSubsetEv @ 3 NONAME - _ZN13CXcapDocument4ETagEv @ 4 NONAME - _ZN13CXcapDocument7SetETagERK6TDesC8 @ 5 NONAME - _ZN13CXcapDocument9TempCopyLEv @ 6 NONAME - _ZN13CXcapProtocol18IsNetworkAvailableEv @ 7 NONAME - _ZN13CXcapProtocol5CacheEv @ 8 NONAME - _ZN13CXcapProtocol6ParserEv @ 9 NONAME - _ZN13CXcapProtocol8PublicIDEv @ 10 NONAME - _ZN13CXcapProtocol9TransportEv @ 11 NONAME - _ZN13CXdmNamespace4NewLERK6TDesC8S2_ @ 12 NONAME - _ZN13CXdmNamespaceD0Ev @ 13 NONAME - _ZN13CXdmNamespaceD1Ev @ 14 NONAME - _ZN13CXdmNamespaceD2Ev @ 15 NONAME - _ZN17CXcapDocumentNodeD0Ev @ 16 NONAME - _ZN17CXcapDocumentNodeD1Ev @ 17 NONAME - _ZN17CXcapDocumentNodeD2Ev @ 18 NONAME - _ZNK13CXcapDocument10DataLengthEv @ 19 NONAME - _ZNK13CXcapDocument16ApplicationUsageEv @ 20 NONAME - _ZNK13CXcapDocument8ProtocolEv @ 21 NONAME - _ZNK13CXdmNamespace3UriEv @ 22 NONAME - _ZNK13CXdmNamespace6PrefixEv @ 23 NONAME - _ZTI13CXcapDocument @ 24 NONAME ; ## - _ZTI13CXcapProtocol @ 25 NONAME ; ## - _ZTV13CXcapDocument @ 26 NONAME ; ## - _ZTV13CXcapProtocol @ 27 NONAME ; ## - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/group/XcapProtocol.mmp --- a/xdmprotocols/XcapProtocol/group/XcapProtocol.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* Copyright (c) 2005 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: XdmProtocol.dll from XdmProtocol.mmp -* -*/ - - - -#include - -TARGET xcapprotocol.dll -UID 0x10009D8D 0x1020740F -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT -TARGETTYPE PLUGIN - -SOURCEPATH ../src - -START RESOURCE 1020740F.rss - -TARGET xcapprotocol.rsc - -END - -SOURCE XcapProtocol.cpp -SOURCE XcapDocument.cpp -SOURCE XcapDirectory.cpp -SOURCE XcapDocumentNode.cpp -SOURCE XcapNodeAttribute.cpp - -//Sources common to all protocols -SOURCEPATH ../../src -SOURCE XdmNamespace.cpp -SOURCE XdmShutdownTimer.cpp - -//Internal XCAP includes -USERINCLUDE ../XcapUtils/inc -USERINCLUDE ../XcapCache/inc -USERINCLUDE ../XcapAppUsage/inc -USERINCLUDE ../XcapOperations/inc -USERINCLUDE ../XcapHttpTransport/inc - -//Common XDM includes -USERINCLUDE ../inc -USERINCLUDE ../../inc -USERINCLUDE ../../XdmXmlParser/inc - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/xml -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../inc - -LIBRARY hal.lib -LIBRARY ecom.lib -LIBRARY efsrv.lib -LIBRARY euser.lib -LIBRARY charconv.lib -LIBRARY xdmengine.lib -LIBRARY xdmxmlparser.lib -LIBRARY xdmsettingsapi.lib -LIBRARY msgconnmanager.lib -LIBRARY xcapcacheclient.lib -LIBRARY xcaphttptransport.lib -LIBRARY xcaputils.lib -DEBUGLIBRARY flogger.lib - - -#if defined( ARMCC ) -DEFFILE ../eabi/ -#elif defined ( WINSCW ) -deffile ../bwinscw/ -#elif defined (WINS ) -deffile ../bwins/ -#endif - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/group/bld.inf --- a/xdmprotocols/XcapProtocol/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapProtocol bld.inf -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- -XcapProtocol.mmp - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/inc/XcapDirectory.h --- a/xdmprotocols/XcapProtocol/inc/XcapDirectory.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,202 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDirectory -* -*/ - - - - -#ifndef __XCAPDIRECTORY__ -#define __XCAPDIRECTORY__ - -#include -#include "XdmDirectory.h" -#include "XdmDocument.h" - -//CONSTANTS -_LIT( KDirectoryEntry, "entry" ); -_LIT( KAuidAttribute, "auid" ); -_LIT( KDocumentUri, "uri" ); -_LIT( KDocumentETag, "etag" ); - -//AUIDs -_LIT( KCapabilities, "/services/org.openmobilealliance.xcap-caps/" ); -_LIT( KPocRules, "/services/org.openmobilealliance.poc-rules" ); -_LIT( KPocGroup, "/services/org.openmobilealliance.poc-groups" ); -_LIT( KResourceLists, "/services/org.openmobilealliance.resource-lists/" ); -_LIT( KPresenceRules, "/services/org.openmobilealliance.pres-rules/" ); -_LIT( KDirectoryUsage, "/services/org.openmobilealliance.xcap-directory/" ); -_LIT( KSharedXDMS, "/services/org.openmobilealliance.resource-lists/" ); -_LIT( KRlsServices, "/services/org.openmobilealliance.rls-services/" ); - -//FORWARD DECLARATIONS -class CXdmDocument; -class CXcapProtocol; -class CXcapRetrieval; -class CXcapHttpReqGet; -class CXcapOperationFactory; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapDirectory ) : public CXdmDirectory - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CXcapDirectory* NewL( const TDesC& aAUID, - CXdmEngine& aXdmEngine, - CXdmDocument*& aDirectoryDoc, - CXcapProtocol& aXcapProtocol ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void CancelUpdate(); - - /** - * Destructor. - */ - virtual ~CXcapDirectory(); - - private: //From CXdmDirectory - - /** - * Destructor. - */ - TInt DocumentCount(); - - /** - * Return the root element of this document - */ - TPtrC Document( TInt aIndex ) const; - - /** - * Returns the path to this directory - * - * @return TPtrC8 The path to the directory this object models - */ - TPtrC DirectoryPath() const; - - /** - * Returns the path to this directory - * - * @return TPtrC8 The path to the directory this object models - */ - TXdmDocType DocumentTypeL( TInt aIndex ) const; - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapDirectory( CXdmDocument*& aDirectoryDoc, - CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL( const TDesC& aAUID ); - - /** - * From CActive. - * @return void - */ - void RunL(); - - /** - * From CActive. - * @return void - */ - void DoCancel(); - - /** - * From CXdmDirectory. - * @return void - */ - void StartUpdateL(); - - /** - * Save the client's request status and update status - * @param TDirUpdatePhase The update phase - * @param TRequestStatus The client's request status - * @return void - */ - void SaveRequestData( TDirUpdatePhase aUpdatePhase, - TRequestStatus& aClientStatus ); - - /** - * From CXdmDirectory. - * @return void - */ - void HandleDocumentListRequestL(); - - /** - * From CXdmDirectory. - * @return void - */ - void HandleRefreshRequestL(); - - /** - * From CXdmDirectory. - * @return void - */ - void UpdateNextDocumentL(); - - /** - * From CXdmDirectory. - * @return void - */ - TBool CheckLocalCopyL( const CXdmDocumentNode* aDocumentNode ); - - /** - * From CXdmDirectory. - * @return void - */ - TPtrC ExtractDocumentUriL( const TDesC8& aRootUri, - const CXdmDocumentNode* aDocumentNode ); - - /** - * From CXdmDirectory. - * @return void - */ - TXdmDocType FindAUID( const CXdmDocumentNode& aEntryNode ) const; - - private: //Data - - TInt iUpdateIndex; - TInt iDocumentCount; - HBufC* iAUID; - CXcapDocument* iDirectoryDoc; - TRequestStatus* iClientStatus; - TDirUpdatePhase iUpdatePhase; - CXcapHttpReqGet* iHttpRetrieval; - CXcapProtocol& iXcapProtocol; - RPointerArray iUpdateList; - RPointerArray iDocumentList; - }; - -#endif //__XCAPDIRECTORY__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/inc/XcapDocument.h --- a/xdmprotocols/XcapProtocol/inc/XcapDocument.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,440 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDocument -* -*/ - - - - -#ifndef __XCAPDOCUMENT__ -#define __XCAPDOCUMENT__ - -#include -#include - -//CONSTANTS -const TUint KETagBufferMaxLength = 64; -_LIT8( KSlash, "/" ); -_LIT8( KUserDirName, "users/" ); -_LIT8( KGlobalDirName, "global/" ); -_LIT8( KXcapGlobalDocName, "index" ); - -//FORWARD DECLARATIONS -class RXcapCache; -class CXdmEngine; -class CXdmNamespace; -class CXcapProtocol; -class CXcapAppUsage; -class MXdmOperation; -class CXcapDocumentNode; -class CXdmOperationFactory; - -//CLASS DECLARATION -class CXcapDocument : public CXdmDocument - { - public: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CXcapDocument* NewL( TXdmDocType aDocumentType, - const TDesC& aDocumentName, - const CXdmEngine& aXdmEngine, - const CXcapProtocol& aXcapProtocol ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CXcapDocument* NewL( TXdmDocType aDocumentType, - const TDesC8& aDocumentName, - const CXdmEngine& aXdmEngine, - const CXcapProtocol& aXcapProtocol ); - - /** - * Set one option - * @return void - * @param The completed update operation - */ - void SetOption( TInt aOption ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - TXdmDocType DocumentType() const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void NotifyResolverCompleteL( TInt aError ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void StartInternalL( TRequestStatus& aStatus ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void CancelUpdate(); - - /** - * Destructor. - */ - virtual ~CXcapDocument(); - - public: //Exported methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C TDesC8& ETag(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C void SetETag( const TDesC8& aETagDesc ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C TInt DataLength() const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C CXcapAppUsage& ApplicationUsage() const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C CXcapDocument* TempCopyL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C void RemoveData( CXcapDocumentNode* aDocumentNode ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - IMPORT_C CXcapProtocol& Protocol() const; - - /** - * Reset the document subset - */ - IMPORT_C virtual void ResetSubset(); - - private: //From CXdmDocument - - /** - * Construct an "anonymous" entry point for this document. - * This node effectively becomes the root of this document. - * - */ - CXdmDocumentNode* CreateRootL(); - - /** - * Return the time stamp for this document - * - * @return TTime - */ - TTime TimeStamp() const; - - /** - * Return an error document for a failed update - * - * NOTE: The returning object will be NULL in case - * the used protocol does not support this feature. - * - * @return CXdmDocument* The error document - */ - CXdmDocumentNode* ErrorRoot(); - - /* - * Reset the contents of this document model. - */ - void ResetContents(); - - public: //From CXdmDocument - - /** - * Return the root element of this document - * - * @return CXdmDocumentNode The root element of the document - * - * NOTE: The returning node may or may not contain any data, - * since, in the case that this document model does not - * have content yet, the element is a simple "entry point" - * to the whole document. Thus, for instance, if the client - * application requests the Xdm Engine to fetch a particular - * document, the root element points to nothing until the - * request has been completed. - * - */ - CXdmDocumentNode* DocumentRoot() const; - - private: //From MXdmNamespaceContainer - - /** - * Return the number of namespace declarations - * @return TInt Namespace declaration count - */ - TInt Count() const; - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - void AppendNamespaceL( const TDesC8& aUri, const TDesC8& aPrefix ); - - /** - * Remove a namespace from the document - * @param TDesC8& URI of the namespace - * @param TDesC8& Prefix of the namespace - */ - void RemoveNamespace( const TDesC8& aUri ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - TPtrC8 Uri( const TDesC8& aPrefix ) const; - - /** - * Fetch the aIndex-th URI - * @param TInt The index of the desired URI string - * @return TPtrC URI string - */ - TPtrC8 Uri( TInt aIndex ) const; - - /** - * Fetch the aIndex-th prefix - * @param TDesC8 The index of the desired prefix string - * @return TPtrC Prefix string - */ - TPtrC8 Prefix( TInt aIndex ) const; - - /** - * Resets namespaces from the document - * - * @return void - */ - void ResetNamespaces(); - - private: - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapDocument( TXdmDocType aDocumentType, - const CXdmEngine& aXdmEngine, - const CXcapProtocol& aXcapProtocol ); - - /** - * From CActive. - * @return void - */ - void RunL(); - - /** - * From CActive. - * @return void - */ - void DoCancel(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void InstallAppUsageL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void UpdateDocumentInfoL( RXcapCache* aCacheClient ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void StartUpdateL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void SaveClientStatus( TRequestStatus& aClientStatus ); - - /** - * Handle a failed update operation - * @return void - * @param CXdmDocOperation* The failed operation - */ - void HandleErrorL(); - - /** - * Handle a successful update operation - * @return void - * @param The completed update operation - */ - void HandleRequestCompletionL(); - - /** - * Handle a successful update operation - * @return void - * @param The completed update operation - */ - void ResolveAsyncConflictL(); - - /** - * Handle a successful update operation - * @return void - * @param The completed update operation - */ - void CreateTempCopyL(); - - /** - * Handle a successful update operation - * @return void - * @param The completed update operation - */ - void ActivateOperationL(); - - /** - * Handle a successful update operation - * @return void - * @param The completed update operation - */ - void CheckOperationQueueL(); - - /** - * Handle a successful update operation - * @return void - * @param The completed update operation - */ - void DequeueOperation( MXdmOperation* aOperation ); - - /** - * Handle a successful update operation - * @return void - * @param The completed update operation - */ - void DequeueAll(); - - /** - * Append an element to the path identifying the - * the current document subset - * @return void - */ - void AppendPathPartL( const TDesC& aString ); - - /** - * Return the current document subset (including descendants) - * @return void - */ - CXdmDocumentNode* CurrentExtent() const; - - /** - * Handle a successful update operation - * @return void - * @param The completed update operation - */ - HBufC8* EightBitNameLC(); - - /** - * Handle a successful update operation - * @return void - * @param The completed update operation - */ - TBool IsGlobalTree( const TDesC8& aAuid ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL( const TDesC8& aDocumentName ); - - private: //Data - - enum TXcapDocumentState - { - EXdmDocIdle = 0, - EXdmDocUpdating, - EResolvingAsyncConflict, - ERetryingFailedOperation - }; - - TInt iDataLength; - TInt iUpdateIndex; - TInt iOperationCount; - TUint iOptions; - TTime iLastAccess; - TTime iLastModification; - HBufC8* iEightBitName; - TXdmDocType iDocumentType; - CXcapDocument* iTempCopy; - CXcapAppUsage* iAppUsage; - CXcapDocumentNode* iDocumentRoot; - CXdmDocumentNode* iErrorRoot; - TXcapDocumentState iDocumentState; - CXcapProtocol& iXcapProtocol; - TBuf8 iETagBuffer; - RPointerArray iNamespaces; - }; - -#endif //__XCAPDOCUMENT__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/inc/XcapDocumentNode.h --- a/xdmprotocols/XcapProtocol/inc/XcapDocumentNode.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,219 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDocumentNode -* -*/ - - - - -#ifndef __XCAPDOCUMENTNODE__ -#define __XCAPDOCUMENTNODE__ - -#include "XdmNodeFactory.h" -#include "XdmDocumentNode.h" - -class CXdmEngine; -class CXcapProtocol; -class CXcapProtocol; -class CXdmNodeAttribute; - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapDocumentNode ) : public CXdmDocumentNode, public MXdmNodeFactory - { - public: // Constructors and destructor - - /** - * Destructor. - */ - virtual ~CXcapDocumentNode(); - - public: // New functions - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - static CXcapDocumentNode* NewL( CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol ); - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - static CXcapDocumentNode* NewL( CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CXcapProtocol& aXcapProtocol ); - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - static CXcapDocumentNode* NewL( CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol, - const CXdmDocumentNode& aAnotherNode, - const CXdmDocumentNode& aParentNode ); - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of the new element - * @param CXdmDocumentNode* The parent of the new node - * @return CXdmDocumentNode* - */ - static CXcapDocumentNode* NewL( CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ); - - /** - * Two-phased constructor. - * - * @param TBool Leaf node indicator - * @param TDesC8& Name of the new element - * @param CXdmDocumentNode* The parent of the new node - * @return CXdmDocumentNode* - */ - static CXcapDocumentNode* NewL( CXdmEngine& aXdmEngine, TBool aLeafNode, - const TDesC& aNodeName, CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ); - - /** - * Two-phased constructor. - * - * @param TBool Leaf node indicator - * @param TDesC8& Name of the new element - * @param CXdmDocumentNode* The parent of the new node - * @return CXdmDocumentNode* - */ - static CXcapDocumentNode* NewL( CXdmEngine& aXdmEngine, - const TBool aLeafNode, - CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ); - - /** - * Set the next node in the list - * @param The next node in the list - * @return void - */ - void RemoveNode( CXcapDocumentNode* aChileNode ); - - private: - - /** - * C++ constructor, private version. - */ - CXcapDocumentNode( CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol ); - - /** - * C++ constructor, protected version. - * - * @param CXdmDocumentNode* The parent node of this element - */ - CXcapDocumentNode( CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ); - - /** - * C++ constructor, another private version. - */ - CXcapDocumentNode( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ); - - /** - * By default Symbian OS constructor is private. - * - * @param TDesC8& Name of this node - * @return void - */ - void CopyConstructL( const CXdmDocumentNode& aAnotherNode, - const CXdmDocumentNode& aParentNode ); - - private: //From MXdmNodeFactory - - /** - * Create a new child element - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - CXdmDocumentNode* ChileNodeL(); - - /** - * Create a new child element - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - CXdmDocumentNode* ChileNodeL( const TDesC& aChildName ); - - /** - * Create a new child element - * - * @param TDesC8& Name of the new element - * @return CXdmDocumentNode* - */ - CXdmDocumentNode* ChileNodeL( const CXdmDocumentNode* aAnotherNode ); - - /** - * Create a new attribute - * - * @param TDesC8& Name of the new attribute - * @return CXdmNodeAttribute* - */ - CXdmNodeAttribute* AttributeL(); - - /** - * Create a new attribute - * - * @param TDesC8& Name of the new attribute - * @return CXdmNodeAttribute* - */ - CXdmNodeAttribute* AttributeL( const TDesC& aAttributeName ); - - private: //From MXdmNodeInterface - - /** - * Two-phased constructor. - * - * @param TDesC& Namespace prefix string - * @return void - */ - void SetPrefixL( const TDesC8& aNamespace ); - - /** - * Returns the namespace string for this element - * - * @return TPtrC Namespace string of this element - */ - TPtrC8 Prefix() const; - - private: - - HBufC8* iPrefix; - CXcapProtocol& iXcapProtocol; - }; - -#endif //__XCAPDOCUMENTNODE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/inc/XcapEngineDefines.h --- a/xdmprotocols/XcapProtocol/inc/XcapEngineDefines.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2005 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: XcapEngine literals -* -*/ - - - - -#ifndef __XCAPENGINEDEFINES__ -#define __XCAPENGINEDEFINES__ - -#include - -//Xdm specific defines -const TInt KXcapPathSeparatorChar = 47; - -//XCAP specific defines -_LIT8( KXCAPEquality, "=" ); -_LIT8( KXCAPNodeSeparator, "~~" ); -_LIT8( KXCAPPathSeparator, "/" ); -_LIT8( KXCAPAttributeIdentifier, "@" ); -_LIT8( KHTTPBracketOpen, "["); -_LIT8( KHTTPBracketClose, "]"); -_LIT8( KHTTPQuotationMark, "\""); - -//Escape coded HTTP specific defines -_LIT8( KHTTPBracketOpenEsc, "%5b"); -_LIT8( KHTTPBracketCloseEsc, "%5d"); -_LIT8( KHTTPQuotationMarkEsc, "%22"); - -//XML specific defines -_LIT8( KXmlSpace, " "); -#endif //__XCAPENGINEDEFINES__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/inc/XcapNodeAttribute.h --- a/xdmprotocols/XcapProtocol/inc/XcapNodeAttribute.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapNodeAttribute -* -*/ - - - - -#ifndef __XCAPNODEATTRIBUTE__ -#define __XCAPNODEATTRIBUTE__ - -#include "XdmNodeAttribute.h" - -//CLASS DECLARATION -NONSHARABLE_CLASS( CXcapNodeAttribute ) : public CXdmNodeAttribute - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - * - * @param TDesC8& Name of this attribute - * @param CXdmDocumentNode* Parent of this attribute - * - * NOTE! "Parent", in this case, denotes the - * element this attribute attributes. - * - * @return CXdmNodeAttribute* - */ - static CXcapNodeAttribute* NewL( CXdmEngine& aXdmEngine, - const TDesC& aAttributeName, - CXdmDocumentNode* aParentNode ); - - /** - * Two-phased constructor. - * - * @param CXdmDocumentNode* Parent of this attribute - * - * NOTE! "Parent", in this case, denotes the - * element this attribute attributes. - * - * @return CXdmNodeAttribute* - */ - static CXcapNodeAttribute* NewL( CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode ); - - /** - * Destructor. - */ - virtual ~CXcapNodeAttribute(); - - public: // New functions - - - - private: - - /** - * C++ constructor, private version. - */ - CXcapNodeAttribute( CXdmEngine& aXdmEngine ); - - /** - * C++ constructor, protected version. - * - * @param CXdmDocumentNode* The parent node of this element - */ - CXcapNodeAttribute( CXdmEngine& aXdmEngine, CXdmDocumentNode* aParentNode ); - - /** - * By default Symbian OS constructor is private. - * - * @param TDesC8& Name of this node - * @return void - */ - void ConstructL( const TDesC& aNodeName ); - - /** - * C++ constructor, another private version. - */ - CXcapNodeAttribute( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode ); - - private: //From MXdmNodeInterface - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - TPtrC8 Prefix() const; - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - void SetPrefixL( const TDesC& aNamespacePrefix ); - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - void SetPrefixL( const TDesC8& aNamespacePrefix ); - - - private: - }; - -#endif //__XCAPNODEATTRIBUTE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/inc/XcapProtocol.h --- a/xdmprotocols/XcapProtocol/inc/XcapProtocol.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,337 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapProtocol -* -*/ - - - - -#ifndef __XCAPPROTOCOL__ -#define __XCAPPROTOCOL__ - -#include -#include -#include -#include "XcapCache.h" -#include "XdmProtocol.h" -#include "XdmShutdownSwitch.h" -#include "XcapUtilsInterface.h" - -enum TXcapAuthType - { - EXcapAuthGaa = 0, - EXcapAuthEarlyIms, - EXcapAuthHttpDigest - }; - -//CONSTANTS -_LIT( KHttp, "http://" ); -_LIT( KHttps, "https://" ); -_LIT( KHostSeparator, "/" ); -_LIT( KXcapEngLogDir, "XDM" ); -_LIT( KXcapEngLogFile, "XcapProtocol" ); -const TInt KXcapEngLogBufferMaxSize = 2000; - -//FORWARD DECLARATIONS -class CXdmLogWriter; -class CXcapDocument; -class CXdmXmlParser; -class CXcapEarlyIms; -class MMsgConnManager; -class CXdmShutdownTimer; -class CXcapHttpTransport; -class CXdmOperationFactory; -class CXdmSettingsCollection; - -//CLASS DECLARATION -class CXcapProtocol : public CXdmProtocol, - public MXcapEarlyImsObs, - public MXdmShutdownSwitch, - public MMsgBearerObsCallback - { - - public: - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - IMPORT_C TPtrC8 PublicID(); - - /** - * Return a pointer to the cache client interface - * @return RXcapCache* Pointer to the cache interface - */ - IMPORT_C RXcapCache* Cache(); - - /** - * Return a reference to the XML Parser - * @return CXdmXmlParser& Reference to XML Parser - */ - IMPORT_C CXdmXmlParser& Parser(); - - /** - * Return a reference to the XML Parser - * @return CXdmXmlParser& Reference to XML Parser - */ - IMPORT_C CXcapHttpTransport& Transport(); - - /** - * Check whether network is available - * @return TBool Is network available - */ - IMPORT_C TBool IsNetworkAvailable(); - - public: //Not exported - - /** - * Check whether there are requests being carried out - * and start the idle timer if appropriate - * - * @return void - */ - void CheckActivity(); - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - TPtrC8 UserName() const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - TXcapAuthType AuthType() const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - TBool IsSimRequestPending( TInt& aError ) const; - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - void AppendNotifyeeL( CXcapDocument* aPendingDoc ); - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - void CancelImsResolver(); - - /** - * Logging function - * @param TRefByValue aFmt,... - * @return void - */ - void WriteToLog( TRefByValue aFmt,... ) const; - - private: //From CXdmProtocol - - /** - * Initialise the media used to transfer Xdm data - */ - void InitTransferMedium( TInt aIdleTimeout, TRequestStatus& aStatus ); - - /** - * Cancel initialisation of the transfer media. - */ - void CancelTransferMediumInit(); - - /** - * Cancel initialisation of the transfer media. - */ - TBool IsTransferAvailable() const; - - /** - * Create a new document node. - */ - CXdmDocumentNode* CreateDocumentNodeL(); - - /** - * Create a new protocol dependent document model - */ - CXdmDocument* CreateDocumentL( const TDesC& aDocumentName, - const TXdmDocType aDocumentType ); - - /** - * Create a new protocol dependent document model - */ - CXdmDirectory* CreateDirectoryL( const TDesC& aDirectoryPath ); - - /** - * Destructor. - */ - virtual ~CXcapProtocol(); - - private: - - /** - * From MXdmShutdownSwitch - * @return void - */ - void SwitchOff(); - - /** - * From MXcapEarlyImsObs. - * @param TInt Error - * @return void - */ - void RequestComplete( TInt aError ); - - public: //Static - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - static CXcapProtocol* NewL( const TXdmProtocolParams& aProtocolInfo ); - - /** - * A Global logging function - * @param TRefByValue aFmt,... - * @return void - */ - static TInt GenerateUniqueIdL(); - - private: //Methods - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - CXcapProtocol(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void ConstructL( const TXdmProtocolParams& aProtocolParams ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - void DeleteLogFileL(); - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - TInt SaveSettingsL(); - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - void SaveFromCollectionL( const CXdmSettingsCollection& aSettings ); - - /** - * Return an operation object that knows how to manipulate - * partial document - */ - void ResolveIdentityL(); - - /** - * Select the type of the authentication - */ - void SelectAuthTypeL( const CXdmSettingsCollection& aSettings ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - RXcapCache* CacheHandle(); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - TPtrC8 Impu() const; - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - HBufC* ParseRootLocationLC( const TBool aSecurity, - const TDesC& aRootLocation ); - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - HBufC* CheckProtocolPrefixL( const TDesC& aRootLocation ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - HBufC* ConstructSecureUriL( const TDesC& aBasicUri ); - - /** - * Symbian OS default constructor. - * @param TInt Default Access Point ID - * @return CXdmDocOperation* - */ - HBufC* ConstructStandardUriL( const TDesC& aBasicUri ); - - /** - * Handle a bearer event - * @param TMsgBearerEvent The type of the event - */ - void HandleBearerEventL( TBool aAuthoritativeClose, - TMsgBearerEvent aBearerEvent ); - - private: //Data - - TInt iIdleTimeout; - TInt iAccessPoint; - TInt iImsResolverError; - TBool iSuspend; - TBool iCacheUsage; - TBool iTransferMediaOpen; - TBool iSimRequestPending; - HBufC* iRootUri; - HBufC8* iPublicId; - RXcapCache iCacheClient; - CXdmEngine* iXdmEngine; - CXdmDocument* iCapabilities; - CXdmLogWriter* iLogWriter; - TXcapAuthType iAuthType; - CXdmXmlParser* iXmlParser; - CXcapEarlyIms* iImsResolver; - TXdmCredentials iCredentials; - MMsgConnManager* iConnectionManager; - CXdmShutdownTimer* iIdleTimer; - CXcapHttpTransport* iHttpTransport; - const CXdmProtocolInfo* iProtocolInfo; - TBuf8 iUserName; - RPointerArray iNotifyeeQueue; - }; - -#endif //__XCAPPROTOCOL__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/inc/XcapUriInterface.h --- a/xdmprotocols/XcapProtocol/inc/XcapUriInterface.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2005 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: MXcapUriInterface -* -*/ - - - - -#ifndef __XCAPURIINTERFACE__ -#define __XCAPURIINTERFACE__ - -#include - -//CLASS DECLARATION -NONSHARABLE_CLASS( MXcapUriInterface ) - { - public: - - /** - * Add new namespace mapping - * @param TDesC8& Namespace URI - * @param TDesC8& Namespace prefix - * @return void - */ - virtual void AddNamespaceMappingL( const TDesC8& aUri, const TDesC8& aPrefix ) = 0; - }; - - - -#endif //__XCAPURIINTERFACE__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/src/1020740F.rss --- a/xdmprotocols/XcapProtocol/src/1020740F.rss Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 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: XdmProtocolInfo -* -*/ - - -// 1020740F.RSS -// -#include "registryinfo.rh" - -//Declares the interface implementations provided -RESOURCE REGISTRY_INFO XdmProtocolInfo - { - dll_uid = 0x1020740F; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x10207422; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x10207423; - version_no = 1; - display_name = "XDM Engine XCAP Protocol||Copyright © 2005 Nokia Ltd. All rights reserved."; - default_data = ""; - opaque_data = ""; - } - }; - } - }; - } - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/src/XcapDirectory.cpp --- a/xdmprotocols/XcapProtocol/src/XcapDirectory.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,501 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDirectory -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include "XcapAppUsageDef.h" -#include "XdmProtocol.h" -#include "XcapDocument.h" -#include "XcapProtocol.h" -#include "XcapAppUsage.h" -#include "XcapRetrieval.h" -#include "XcapDirectory.h" -#include "XdmXmlParser.h" -#include "XcapHttpReqGet.h" -#include "XdmDocumentNode.h" -#include "XdmNodeAttribute.h" -#include "XcapHttpTransport.h" -#include "XdmOperationFactory.h" - -// ---------------------------------------------------------- -// CXcapDirectory::CXcapDirectory -// -// ---------------------------------------------------------- -// -CXcapDirectory::CXcapDirectory( CXdmDocument*& aDirectoryDoc, - CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol ) : - CXdmDirectory( aXdmEngine ), - iDirectoryDoc( ( CXcapDocument* )aDirectoryDoc ), - iXcapProtocol( aXcapProtocol ) - { - } - -// ---------------------------------------------------------- -// CXcapDirectory::NewL -// -// ---------------------------------------------------------- -// -CXcapDirectory* CXcapDirectory::NewL( const TDesC& aAUID, - CXdmEngine& aXdmEngine, - CXdmDocument*& aDirectoryDoc, - CXcapProtocol& aXcapProtocol ) - { - CXcapDirectory* self = new ( ELeave ) CXcapDirectory( aDirectoryDoc, aXdmEngine, aXcapProtocol ); - CleanupStack::PushL( self ); - self->ConstructL( aAUID ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------- -// CXcapDirectory::~CXcapDirectory -// -// ---------------------------------------------------- -// -CXcapDirectory::~CXcapDirectory() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::~CXcapDirectory()" ) ); - #endif - Cancel(); - delete iAUID; - delete iDirectoryDoc; - delete iHttpRetrieval; - iUpdateList.Close(); - iDocumentList.Close(); - } - -// ---------------------------------------------------------- -// CXcapDirectory::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapDirectory::ConstructL( const TDesC& aAUID ) - { - if( aAUID.Length() > 0 ) - { - _LIT( KNodePath, "xcap-directory/folder" ); - iAUID = HBufC::NewL( aAUID.Length() ); - iAUID->Des().Copy( aAUID ); - CXdmDocumentNode* node = iDirectoryDoc->DocumentSubsetL( KNodePath ); - CleanupStack::PushL( node ); - CXdmNodeAttribute* auid = node->CreateAttributeL( KAuidAttribute ); - CleanupStack::PushL( auid ); - auid->SetAttributeValueL( aAUID ); - iDirectoryDoc->FetchDataL( node ); - //Set the option that prohibits caching - iDirectoryDoc->SetOption( KXdmOption3 ); - CleanupStack::Pop( 2 ); //auid, node - } - else iDirectoryDoc->FetchDataL(); - CActiveScheduler::Add( this ); - } - -// ---------------------------------------------------------- -// CXcapDirectory::StartUpdateL -// -// ---------------------------------------------------------- -// -void CXcapDirectory::StartUpdateL() - - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::StartUpdateL()" ) ); - #endif - switch( iUpdatePhase ) - { - case EDirPhaseIdle: - User::RequestComplete( iClientStatus, KErrArgument ); - break; - case EUpdateDocumentList: - HandleDocumentListRequestL(); - break; - case ERefreshDocuments: - HandleRefreshRequestL(); - break; - default: - break; - } - } - -// ---------------------------------------------------------- -// CXcapDirectory::SaveRequestData -// -// ---------------------------------------------------------- -// -void CXcapDirectory::SaveRequestData( TDirUpdatePhase aUpdatePhase, - TRequestStatus& aClientStatus ) - { - iUpdatePhase = aUpdatePhase; - iClientStatus = &aClientStatus; - } - -// ---------------------------------------------------- -// CXcapDirectory::HandleDocumentListRequestL -// -// ---------------------------------------------------- -// -void CXcapDirectory::HandleDocumentListRequestL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::HandleDocumentListRequestL()" ) ); - #endif - if( !IsActive() ) - { - CXcapDocument* doc = ( CXcapDocument* )iDirectoryDoc; - doc->StartInternalL( iStatus ); - iUpdatePhase = EUpdateDocumentList; - SetActive(); - } - } - -// ---------------------------------------------------- -// CXcapDirectory::HandleRefreshRequestL -// -// ---------------------------------------------------- -// -void CXcapDirectory::HandleRefreshRequestL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::HandleRefreshRequestL()" ) ); - #endif - if( iUpdatePhase == EUpdateDocumentList ) - { - if( iUpdateList.Count() > 0 ) - { - iUpdateIndex = -1; - iHttpRetrieval = iXcapProtocol.Transport().GetL( TPtrC() ); - UpdateNextDocumentL(); - iUpdatePhase = ERefreshDocuments; - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " All documents are up to date" ) ); - #endif - User::RequestComplete( iClientStatus, KErrNone ); - } - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Wrong state [%d]" ), iUpdatePhase ); - #endif - User::RequestComplete( iClientStatus, KErrNotReady ); - } - } - -// ---------------------------------------------------- -// CXcapDirectory::UpdateNextDocumentL -// -// ---------------------------------------------------- -// -void CXcapDirectory::UpdateNextDocumentL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::UpdateNextDocumentL()" ) ); - #endif - iUpdateIndex++; - if( iUpdateIndex < iUpdateList.Count() ) - { - CXdmDocumentNode* node = iUpdateList[iUpdateIndex]; - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Index: %d Document: %x" ), iUpdateIndex, node ); - #endif - TPtrC8 root = iXcapProtocol.Transport().RootUri(); - TPtrC docUri( ExtractDocumentUriL( root, node ) ); - HBufC* uri = HBufC::NewLC( root.Length() + docUri.Length() ); - uri->Des().Copy( root ); - uri->Des().Append( docUri ); - iHttpRetrieval->ResetUriL( uri->Des() ); - iHttpRetrieval->SetExpiryTimeL( NULL, KDefaultHttpRequestTimeout * 1000000 ); - iHttpRetrieval->DispatchRequestL( iStatus ); - CleanupStack::PopAndDestroy(); //uri - SetActive(); - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Directory sync complete" ) ); - #endif - User::RequestComplete( iClientStatus, KErrNone ); - } - } - -// --------------------------------------------------------- -// CXcapDirectory::RunL() -// -// --------------------------------------------------------- -// -void CXcapDirectory::RunL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::RunL() - Request: %d" ), iStatus.Int() ); - #endif - if( iStatus == KErrNone ) - { - switch( iUpdatePhase ) - { - case EUpdateDocumentList: - { - iDocumentCount = iDirectoryDoc->Find( KDirectoryEntry, iDocumentList ); - if( iDocumentCount > 0 ) - { - TInt index = 0; - while( index < iDocumentCount ) - { - TBool uptodate = CheckLocalCopyL( iDocumentList[index] ); - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Cache: %d" ), uptodate ); - #endif - if( !uptodate ) - User::LeaveIfError( iUpdateList.Append( iDocumentList[index] ) ); - index++; - } - } - User::RequestComplete( iClientStatus, iStatus.Int() ); - } - break; - case ERefreshDocuments: - { - CXdmDocumentNode* node = iUpdateList[iUpdateIndex]; - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Index: %d" ), iUpdateIndex ); - iXcapProtocol.WriteToLog( _L8( " Document: %x" ), node ); - iXcapProtocol.WriteToLog( _L8( " Error: %d" ), iStatus.Int() ); - #endif - TPtrC8 root = iXcapProtocol.Transport().RootUri(); - TPtrC docName = ExtractDocumentUriL( root, node ); - TXdmCompletionData* data = iHttpRetrieval->ResponseData(); - TPtrC8 responseData( data->iResponseData->Des() ); - TPtrC8 eTag( data->iETag->Des() ); - RXcapCache* cache = iXcapProtocol.Cache(); - cache->Store( eTag, docName, root, responseData ); - iHttpRetrieval->ReleaseResponseData(); - UpdateNextDocumentL(); - } - break; - default: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Default case, unknown state %d - Status: %d" ), - iUpdatePhase, iStatus.Int() ); - #endif - if( iClientStatus != NULL ) - User::RequestComplete( iClientStatus, KErrUnknown ); - break; - } - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Operation failed with %d" ), iStatus.Int() ); - #endif - User::RequestComplete( iClientStatus, iStatus.Int() ); - } - } - -// --------------------------------------------------------- -// CXcapDirectory::CheckLocalCopyL -// -// --------------------------------------------------------- -// -TBool CXcapDirectory::CheckLocalCopyL( const CXdmDocumentNode* aDocumentNode ) - { - /*#ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::CheckLocalCopyL()" ) ); - #endif*/ - TBool ret = EFalse; - TPtrC8 root = iXcapProtocol.Transport().RootUri(); - TPtrC docName = ExtractDocumentUriL( root, aDocumentNode ); - TPtrC etag( aDocumentNode->Attribute( KDocumentETag )->AttributeValue() ); - HBufC8* etag8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( etag ); - CleanupStack::PushL( etag8 ); - RXcapCache* cache = iXcapProtocol.Cache(); - ret = cache != NULL ? cache->IsCurrent( etag8->Des(), docName, root ) == KErrNone : ETrue; - CleanupStack::PopAndDestroy(); //etag8 - return ret; - } - -// --------------------------------------------------------- -// CXcapDirectory::ExtractDocumentUriL -// -// --------------------------------------------------------- -// -TPtrC CXcapDirectory::ExtractDocumentUriL( const TDesC8& aRootUri, - const CXdmDocumentNode* aDocumentNode ) - { - /*#ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::ExtractDocumentUri()" ) ); - #endif*/ - const TUint8 KHttpHostSeparator = 47; - _LIT8( KHttpDoubleHostSeparator, "//" ); - TPtrC uri( aDocumentNode->Attribute( KDocumentUri )->AttributeValue() ); - if( uri[0] == KHttpHostSeparator ) //Relative URI - return uri; - else - { - TInt index = aRootUri.Find( KHttpDoubleHostSeparator ); - TPtrC8 root( aRootUri.Right( aRootUri.Length() - index - 2 ) ); - HBufC8* uri8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( uri ); - CleanupStack::PushL( uri8 ); - TPtr8 desc( uri8->Des() ); - index = desc.Find( root ); - CleanupStack::PopAndDestroy(); //uri8 - return index >= 0 ? uri.Right( uri.Length() - root.Length() - index ) : TPtrC(); - } - } - -// ---------------------------------------------------- -// CXcapDirectory::DocumentCount -// -// ---------------------------------------------------- -// -TInt CXcapDirectory::DocumentCount() - { - return iDocumentCount; - } - -// ---------------------------------------------------- -// CXcapDirectory::DocumentType -// -// ---------------------------------------------------- -// -TXdmDocType CXcapDirectory::DocumentTypeL( TInt aIndex ) const - { - TXdmDocType type = EXdmDocGeneral; - if( iUpdatePhase <= EDirPhaseIdle ) - User::Leave( KErrNotReady ); - else if( iDocumentCount > 0 && ( aIndex >= 0 && aIndex < iDocumentCount ) ) - type = FindAUID( *iDocumentList[aIndex] ); - return type; - } - -// ---------------------------------------------------- -// CXcapDirectory::FindAUID -// -// ---------------------------------------------------- -// -TXdmDocType CXcapDirectory::FindAUID( const CXdmDocumentNode& aEntryNode ) const - { - TXdmDocType documentType = EXdmDocGeneral; - HBufC8* buf = aEntryNode.Attribute( KDocumentUri )->EightBitValueLC(); - if( buf ) - { - TPtrC8 uri( buf->Des() ); - if( uri.Find( KXdmCapabilityUsageAUID ) >= 0 ) - documentType = EXdmCapabilities; - else if( uri.Find( KXdmPocUserAccessUsageAUID ) >= 0 ) - documentType = EXdmPoCUserAccessPolicy; - else if( uri.Find( KXdmPocGroupUsageAUID ) >= 0 ) - documentType = EXdmPoCGroup; - else if( uri.Find( KXdmResourceListsUsageAUID ) >= 0 ) - documentType = EXdmResourceLists; - else if( uri.Find( KXdmOmaPresRulesUsageAUID ) >= 0 ) - documentType = EXdmIetfPresenceRules; - else if( uri.Find( KXdmDirectoryUsageAUID ) >= 0 ) - documentType = EXdmDirectory; - else if( uri.Find( KXdmSharedXDMUsageAUID ) >= 0 ) - documentType = EXdmSharedXdm; - else if( uri.Find( KXdmRlsServicesUsageAUID ) >= 0 ) - documentType = EXdmRlsServices; - CleanupStack::PopAndDestroy(); //EightBitValueLC() - } - return documentType; - } - -// ---------------------------------------------------- -// CXcapDirectory::Document -// -// ---------------------------------------------------- -// -TPtrC CXcapDirectory::Document( TInt aIndex ) const - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::Document() - Index: %d" ), aIndex ); - #endif - TChar slash = 47; - if( aIndex >= 0 && aIndex < iDocumentList.Count() ) - { - TPtrC ret; - TPtrC uri = iDocumentList[aIndex]->Attribute( KDocumentUri )->AttributeValue(); - TInt index = uri.LocateReverse( slash ); - index > 0 ? ret.Set( uri.Right( uri.Length() - index - 1 ) ) : ret.Set( uri ); - return ret; - } - else return TPtrC(); - } - -// ---------------------------------------------------- -// CXcapDirectory::DirectoryPath -// -// ---------------------------------------------------- -// -TPtrC CXcapDirectory::DirectoryPath() const - { - return iAUID != NULL ? iAUID->Des() : TPtrC(); - } - -// ---------------------------------------------------- -// CXcapDirectory::CancelUpdate -// -// ---------------------------------------------------- -// -void CXcapDirectory::CancelUpdate() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::CancelUpdate()" ) ); - #endif - Cancel(); - } - -// --------------------------------------------------------- -// CXcapDirectory::DoCancel -// -// --------------------------------------------------------- -// -void CXcapDirectory::DoCancel() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDirectory::DoCancel()" ) ); - #endif - switch( iUpdatePhase ) - { - case EDirPhaseIdle: - break; - case EUpdateDocumentList: - { - CXcapDocument* doc = ( CXcapDocument* )iDirectoryDoc; - doc->CancelUpdate(); - } - break; - case ERefreshDocuments: - iHttpRetrieval->CancelRequest(); - break; - default: - break; - } - User::RequestComplete( iClientStatus, KErrCancel ); - } - - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/src/XcapDocument.cpp --- a/xdmprotocols/XcapProtocol/src/XcapDocument.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1097 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDocument -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include "XdmOperationFactory.h" -#include "XcapProtocol.h" -#include "XcapDocument.h" -#include "XcapAppUsage.h" -#include "XdmXmlParser.h" -#include "XdmNamespace.h" -#include "CommonDefines.h" -#include "XcapDocumentNode.h" -#include "XcapHttpRequest.h" -#include "XcapHttpOperation.h" -#include "XcapHttpTransport.h" - -// ================= MEMBER FUNCTIONS ======================= -// - - -// ---------------------------------------------------------- -// CXcapDocument::CXcapDocument -// -// ---------------------------------------------------------- -// -CXcapDocument::CXcapDocument( TXdmDocType aDocumentType, - const CXdmEngine& aXdmEngine, - const CXcapProtocol& aXcapProtocol ) : - CXdmDocument( CONST_CAST( CXdmEngine&, aXdmEngine ) ), - iDocumentType( aDocumentType ), - iXcapProtocol( CONST_CAST( CXcapProtocol&, aXcapProtocol ) ) - - { - } - -// ---------------------------------------------------------- -// CXcapDocument::NewL -// -// ---------------------------------------------------------- -// -CXcapDocument* CXcapDocument::NewL( TXdmDocType aDocumentType, - const TDesC& aDocumentName, - const CXdmEngine& aXdmEngine, - const CXcapProtocol& aXcapProtocol ) - { - CXcapDocument* self = new ( ELeave ) CXcapDocument( aDocumentType, aXdmEngine, aXcapProtocol ); - CleanupStack::PushL( self ); - self->BaseConstructL( KXcapOperationFactory, aDocumentName ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapDocument::NewL -// -// ---------------------------------------------------------- -// -CXcapDocument* CXcapDocument::NewL( TXdmDocType aDocumentType, - const TDesC8& aDocumentName, - const CXdmEngine& aXdmEngine, - const CXcapProtocol& aXcapProtocol ) - { - CXcapDocument* self = new ( ELeave ) CXcapDocument( aDocumentType, aXdmEngine, aXcapProtocol ); - CleanupStack::PushL( self ); - self->ConstructL( aDocumentName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapDocument::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapDocument::ConstructL( const TDesC8& aDocumentName ) - { - BaseConstructL( KXcapOperationFactory, aDocumentName ); - ConstructL(); - } - -// ---------------------------------------------------------- -// CXcapDocument::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapDocument::ConstructL() - { - InstallAppUsageL(); - iErrorRoot = CXcapDocumentNode::NewL( iXdmEngine, iXcapProtocol ); - TPtrC8 root( iXcapProtocol.Transport().RootUri() ); - #ifdef _DEBUG - HBufC8* buf = HBufC8::NewLC( iDocumentName->Des().Length() ); - buf->Des().Copy( iDocumentName->Des() ); - TPtr8 nameDesc( buf->Des() ); - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::ConstructL()" ) ); - iXcapProtocol.WriteToLog( _L8( " Root URI: %S" ), &root ); - iXcapProtocol.WriteToLog( _L8( " Document: %S" ), &nameDesc ); - CleanupStack::PopAndDestroy(); //buf - #endif - RXcapCache* cache = iXcapProtocol.Cache(); - if( cache ) - UpdateDocumentInfoL( cache ); - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Cache disabled, no info for the document" ) ); - #endif - } - CActiveScheduler::Add( this ); - } - -// ---------------------------------------------------- -// CXcapDocument::~CXcapDocument -// -// ---------------------------------------------------- -// -CXcapDocument::~CXcapDocument() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::~CXcapDocument()" ) ); - #endif - Cancel(); - delete iTempCopy; - delete iEightBitName; - delete iDocumentRoot; - delete iErrorRoot; - delete iAppUsage; - iNamespaces.ResetAndDestroy(); - iNamespaces.Close(); - } - -// ---------------------------------------------------------- -// CXcapDocument::ResetContents -// -// ---------------------------------------------------------- -// -void CXcapDocument::ResetContents() - { - iOptions = 0; - delete iDocumentRoot; - iDocumentRoot = NULL; - delete iErrorRoot; - iErrorRoot = NULL; - delete iTempCopy; - iTempCopy = NULL; - iNamespaces.ResetAndDestroy(); - } - -// ---------------------------------------------------------- -// CXcapDocument::UpdateDocumentInfoL -// -// ---------------------------------------------------------- -// -void CXcapDocument::UpdateDocumentInfoL( RXcapCache* aCacheClient ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::UpdateDocumentInfo()" ) ); - #endif - iETagBuffer.Zero(); - TCacheEntryInfo cacheEntryInfo; - TPtrC8 root( iXcapProtocol.Transport().RootUri() ); - TInt error = aCacheClient->FetchDocumentInfo( - iETagBuffer, iDocumentName->Des(), root, cacheEntryInfo ); - if( error == KErrNone ) - { - iLastAccess = cacheEntryInfo.iLastAccess; - iLastModification = cacheEntryInfo.iLastUpdate; - iDataLength = cacheEntryInfo.iDataLength; - #ifdef _DEBUG - const TInt KDateTimeMaxSize = 100; - TBuf8 printBuffer; - TBuf dateTimeBuffer; - _LIT( KDateTimeFormat, "%D%M%Y%/0%1%/1%2%/2%3%/3 %:0%H%:1%T%:2%S"); - iLastModification.FormatL( dateTimeBuffer, KDateTimeFormat ); - printBuffer.Copy( dateTimeBuffer ); - iXcapProtocol.WriteToLog( _L8( " ETag: %S" ), &iETagBuffer ); - iXcapProtocol.WriteToLog( _L8( " Size: %d bytes" ), iDataLength ); - iXcapProtocol.WriteToLog( _L8( " Time stamp: %S" ), &printBuffer ); - #endif - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Cache read complete - Error: %d" ), error ); - #endif - } - } - -// ---------------------------------------------------- -// CXcapDocument::InstallAppUsageL -// -// ---------------------------------------------------- -// -void CXcapDocument::InstallAppUsageL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::InstallAppUsageL()" ) ); - #endif - HBufC8* docName = NULL; - iAppUsage = CXcapAppUsage::NewL( iXdmEngine, iDocumentType ); - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::InstallAppUsageL() type = %d" ), iDocumentType ); - #endif - TPtrC8 auid = iAppUsage->AUID(); - if( IsGlobalTree( auid ) ) - { - docName = HBufC8::NewLC( auid.Length() + KGlobalDirName().Length() + - KXcapGlobalDocName().Length() ); - docName->Des().Copy( auid ); - docName->Des().Append( KGlobalDirName ); - docName->Des().Append( KXcapGlobalDocName ); - delete iDocumentName; - iDocumentName = NULL; - iDocumentName = HBufC::NewL( docName->Des().Length() ); - iDocumentName->Des().Copy( docName->Des() ); - CleanupStack::PopAndDestroy(); //docName - } - else - { - TPtrC8 user = iXcapProtocol.UserName(); - docName = HBufC8::NewLC( auid.Length() + user.Length() + - KUserDirName().Length() + 1 /*'/'*/ + - iDocumentName->Des().Length() ); - docName->Des().Copy( auid ); - docName->Des().Append( KUserDirName ); - docName->Des().Append( user ); - docName->Des().Append( KSlash ); - docName->Des().Append( iDocumentName->Des() ); - delete iDocumentName; - iDocumentName = NULL; - iDocumentName = HBufC::NewL( docName->Des().Length() ); - iDocumentName->Des().Copy( docName->Des() ); - CleanupStack::PopAndDestroy(); //docName - } - - } - -// ---------------------------------------------------- -// CXcapDocument::IsGlobalTree -// -// ---------------------------------------------------- -// -TBool CXcapDocument::IsGlobalTree( const TDesC8& aAuid ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::IsGlobalTree()" ) ); - #endif - TBool found = EFalse; - //Update this array when necessary - const TPtrC8 KGlobalTreeAuids[] = { TPtrC8( KXdmCapabilityUsageAUID ) }; - const TInt count = sizeof( KGlobalTreeAuids ) / sizeof( KGlobalTreeAuids[0] ); - for( TInt i = 0;!found && i < count;i++ ) - found = aAuid.Compare( KGlobalTreeAuids[i] ) == 0; - return found; - } - -// ---------------------------------------------------- -// CXcapDocument::CreateTempCopyL -// -// ---------------------------------------------------- -// -void CXcapDocument::CreateTempCopyL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::CreateTempCopyL()" ) ); - #endif - CXdmDocument* copy = iXdmEngine.CreateDocumentModelL( Name(), iDocumentType ); - iTempCopy = ( CXcapDocument* )copy; - } - -// ---------------------------------------------------- -// CXcapDocument::TempCopyL -// -// ---------------------------------------------------- -// -EXPORT_C CXcapDocument* CXcapDocument::TempCopyL() - { - return CXcapDocument::NewL( iDocumentType, Name(), iXdmEngine, iXcapProtocol ); - } - -// ---------------------------------------------------- -// CXcapDocument::CreateRootL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CXcapDocument::CreateRootL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXdmDocument::CreateRootL()" ) ); - #endif - delete iDocumentRoot; - iDocumentRoot = NULL; - iDocumentRoot = CXcapDocumentNode::NewL( iXdmEngine, iXcapProtocol ); - return iDocumentRoot; - } - -// ---------------------------------------------------- -// CXcapDocument::AppendPathPartL -// -// ---------------------------------------------------- -// -void CXcapDocument::AppendPathPartL( const TDesC& aString ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::PathPartL()" ) ); - #endif - if( iDocumentRoot != NULL ) - { - CXdmDocumentNode* node = NULL; - CXdmDocumentNode* parent = iDocumentRoot; - while( parent->NextNode() != NULL ) - parent = parent->NextNode(); - node = CXcapDocumentNode::NewL( iXdmEngine, aString, iXcapProtocol, parent ); - parent->SetNextNode( node ); - } - else iDocumentRoot = CXcapDocumentNode::NewL( iXdmEngine, aString, iXcapProtocol ); - } - -// ---------------------------------------------------- -// CXcapDocument::CurrentExtent -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CXcapDocument::CurrentExtent() const - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXdmDocument::CurrentExtent()" ) ); - #endif - CXdmDocumentNode* ret = NULL; - if( iDocumentRoot != NULL ) - { - CXdmDocumentNode* node = iDocumentRoot; - while( node->NextNode() != NULL ) - node = node->NextNode(); - ret = node; - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " This document does not yet have a root, leave with KErrGeneral" ) ); - #endif - User::Leave( KErrGeneral ); - } - return ret; - } - -// ---------------------------------------------------- -// CXcapDocument::DocumentRoot -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CXcapDocument::DocumentRoot() const - { - return iDocumentRoot; - } - -// ---------------------------------------------------- -// CXcapDocument::ErrorRoot -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CXcapDocument::ErrorRoot() - { - if( !iErrorRoot ) - { - iErrorRoot = CXcapDocumentNode::NewL( iXdmEngine, iXcapProtocol ); - } - return iErrorRoot; - } - -// ---------------------------------------------------- -// CXcapDocument::ResetSubset -// -// ---------------------------------------------------- -// -EXPORT_C void CXcapDocument::ResetSubset() - { - CXdmDocument::ResetSubset(); - delete iDocumentRoot; - iDocumentRoot = NULL; - iOptions = 0; - } - -// ---------------------------------------------------- -// CXcapDocument::ETag -// -// ---------------------------------------------------- -// -EXPORT_C TDesC8& CXcapDocument::ETag() - { - return iETagBuffer; - } - -// ---------------------------------------------------- -// CXcapDocument::SetETag -// -// ---------------------------------------------------- -// -EXPORT_C void CXcapDocument::SetETag( const TDesC8& aETagDesc ) - { - iETagBuffer.Zero(); - iETagBuffer.Copy( aETagDesc ); - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::SetETag()" ) ); - iXcapProtocol.WriteToLog( _L8( " New ETag: %S" ), &iETagBuffer ); - #endif - } - -// ---------------------------------------------------- -// CXcapDocument::DataLength -// -// ---------------------------------------------------- -// -EXPORT_C TInt CXcapDocument::DataLength() const - { - return iDataLength; - } - -// ---------------------------------------------------- -// CXcapDocument::ApplicationUsage -// -// ---------------------------------------------------- -// -EXPORT_C CXcapAppUsage& CXcapDocument::ApplicationUsage() const - { - return *iAppUsage; - } - -// ---------------------------------------------------- -// CXcapDocument::Protocol -// -// ---------------------------------------------------- -// -EXPORT_C CXcapProtocol& CXcapDocument::Protocol() const - { - return iXcapProtocol; - } - -// ---------------------------------------------------- -// CXcapDocument::RemoveData -// -// ---------------------------------------------------- -// -EXPORT_C void CXcapDocument::RemoveData( CXcapDocumentNode* aDocumentNode ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::RemoveData()" ) ); - #endif - CXcapDocumentNode* parent = ( CXcapDocumentNode* )aDocumentNode->Parent(); - if( parent != NULL ) - parent->RemoveNode( aDocumentNode ); - } - -// ---------------------------------------------------- -// CXcapDocument::StartUpdateL -// -// ---------------------------------------------------- -// -void CXcapDocument::StartUpdateL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::StartUpdateL()" ) ); - #endif - TInt resolverError = 0; - if( iXcapProtocol.IsSimRequestPending( resolverError ) ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " IMS Resolver pending => add to queue" ) ); - #endif - iXcapProtocol.AppendNotifyeeL( this ); - } - else - { - if( resolverError == KErrNone && !IsActive() && iChangeRequests.Count() > 0 ) - { - iUpdateIndex = 0; - iDocumentState = EXdmDocUpdating; - iOperationCount = iChangeRequests.Count(); - ActivateOperationL(); - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( - " Already active, no operations or IMS resolver failed => complete with error" ) ); - #endif - TInt error = resolverError == KErrNone ? KErrNotReady : resolverError; - User::RequestComplete( iClientStatus, error ); - } - } - } - -// ---------------------------------------------------- -// CXcapDocument::StartInternalL -// -// ---------------------------------------------------- -// -void CXcapDocument::StartInternalL( TRequestStatus& aStatus ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::StartInternalL()" ) ); - #endif - aStatus = KRequestPending; - iClientStatus = &aStatus; - StartUpdateL(); - } - -// ---------------------------------------------------- -// CXcapDocument::NotifyResolverCompleteL -// -// ---------------------------------------------------- -// -void CXcapDocument::NotifyResolverCompleteL( TInt aError ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::NotifyResolverCompleteL()" ) ); - #endif - if( aError == KErrNone ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " IMS Resolver ready" ) ); - #endif - StartUpdateL(); - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " IMS Resolver failed => complete with %d" ), aError ); - #endif - DequeueAll(); - User::RequestComplete( iClientStatus, aError ); - } - } - -// ---------------------------------------------------- -// CXcapDocument::ActivateOperationL -// -// ---------------------------------------------------- -// -void CXcapDocument::ActivateOperationL() - { - MXdmOperation* request = iChangeRequests[iUpdateIndex]; - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::ActivateOperation() - Operation: %x" ), request ); - #endif - if( iDocSubset ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Document subset => set KXdmOption1 and KXdmOption2" ) ); - #endif - SetOption( KXdmOption1 ); - SetOption( KXdmOption2 ); - } - if( iXcapProtocol.AuthType() == EXcapAuthEarlyIms ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " EarlyIMS is in use => set KXdmOption4" ) ); - #endif - SetOption( KXdmOption4 ); - } - request->ExecuteL( iStatus, iOptions ); - SetActive(); - } - -// ---------------------------------------------------- -// CXcapDocument::SetOption -// -// ---------------------------------------------------- -// -void CXcapDocument::SetOption( TInt aOption ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::SetOption()" ) ); - #endif - iOptions |= aOption; - } - -// ---------------------------------------------------- -// CXcapDocument::CancelUpdate -// -// ---------------------------------------------------- -// -void CXcapDocument::CancelUpdate() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::CancelUpdate()" ) ); - #endif - TInt resolverError = 0; - if( iXcapProtocol.IsSimRequestPending( resolverError ) ) - { - iXcapProtocol.CancelImsResolver(); - } - else - { - switch( iDocumentState ) - { - case EResolvingAsyncConflict: - iTempCopy->CancelUpdate(); - break; - default: - { - TInt count = iChangeRequests.Count(); - if( count > 0 ) - { - MXdmOperation* request = iChangeRequests[iUpdateIndex]; - request->CancelOperation(); - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Operation %x cancelled" ), request ); - #endif - } - } - } - } - User::RequestComplete( iClientStatus, KErrCancel ); - } - -// --------------------------------------------------------- -// CXcapDocument::RunL() -// -// --------------------------------------------------------- -// -void CXcapDocument::RunL() - { - #ifdef _DEBUG - HBufC8* buf = HBufC8::NewLC( iDocumentName->Des().Length() ); - buf->Des().Copy( iDocumentName->Des() ); - TPtr8 nameDesc( buf->Des() ); - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::RunL()" ) ); - iXcapProtocol.WriteToLog( _L8( " Name: %S" ), &nameDesc ); - iXcapProtocol.WriteToLog( _L8( " Error: %d" ), iStatus.Int() ); - iXcapProtocol.WriteToLog( _L8( " Update index: %d" ), iUpdateIndex ); - CleanupStack::PopAndDestroy(); //buf - #endif - if( iStatus == KErrNone ) - { - switch( iDocumentState ) - { - case EXdmDocUpdating: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Document state: EXdmDocUpdating" ) ); - #endif - HandleRequestCompletionL(); - break; - case EResolvingAsyncConflict: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Document state: EResolvingAsyncConflict" ) ); - #endif - ResolveAsyncConflictL(); - break; - case ERetryingFailedOperation: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Document state: ERetryingFailedOperation" ) ); - #endif - ResolveAsyncConflictL(); - break; - default: - break; - } - } - else HandleErrorL(); - #ifdef _DEBUG - TInt biggestBlock( 0 ); - TInt memory( User::Available( biggestBlock ) ); - iXcapProtocol.WriteToLog( _L8( "** RunL() completes - Available memory: %d" ), memory ); - #endif - } - -// --------------------------------------------------------- -// CXcapDocument::HandleRequestCompletionL -// -// --------------------------------------------------------- -// -void CXcapDocument::HandleRequestCompletionL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::HandleRequestCompletionL()" ) ); - #endif - MXdmOperation* request = iChangeRequests[iUpdateIndex]; - const TXdmCompletionData& data = request->CompletionData(); - switch( data.iCompletion ) - { - case KInsertConflict: - ResolveAsyncConflictL(); - break; - default: - { - RXcapCache* cache = iXcapProtocol.Cache(); - if( cache ) - UpdateDocumentInfoL( cache ); - DequeueOperation( request ); - CheckOperationQueueL(); - break; - } - } - } - -// --------------------------------------------------------- -// CXcapDocument::ResolveAsyncConflictL -// -// --------------------------------------------------------- -// -void CXcapDocument::ResolveAsyncConflictL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::ResolveAsyncConflictL()" ) ); - #endif - switch( iDocumentState ) - { - //This means the cached version of this document - //is out-of-date and that it needs to be updated. - case EXdmDocUpdating: - { - CreateTempCopyL(); - iTempCopy->SetETag( iETagBuffer ); - iTempCopy->FetchDataL(); - iTempCopy->SaveClientStatus( iStatus ); - iTempCopy->StartUpdateL(); - iDocumentState = EResolvingAsyncConflict; - SetActive(); - } - break; - case EResolvingAsyncConflict: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Async conflict resolved, retry insert" ) ); - #endif - //CheckOperationQueueL() will increment the index - iUpdateIndex--; - SetETag( iTempCopy->ETag() ); - iDocumentState = ERetryingFailedOperation; - CheckOperationQueueL(); - break; - case ERetryingFailedOperation: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Operation retry ready" ) ); - #endif - //Nothing can be done now but instruct the - //client to re-fetch the whole document and - //retry the failed operation. - User::RequestComplete( iClientStatus, KErrPathNotFound ); - break; - default: - break; - } - } - -// --------------------------------------------------------- -// CXcapDocument::HandleErrorL -// -// --------------------------------------------------------- -// -void CXcapDocument::HandleErrorL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::HandleErrorL()" ) ); - #endif - TInt clientCode = KErrGeneral; - MXdmOperation* request = request = iChangeRequests[iUpdateIndex]; - //The TXdmCompletionData is guaranteed to point at something - const TXdmCompletionData& data = request->CompletionData(); - switch( data.iCompletion ) - { - case KErrCancel: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Update cancelled" ) ); - #endif - clientCode = KErrCancel; - break; - case ERetryingFailedOperation: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Operation retry failed" ) ); - #endif - //Nothing can be done now but instruct the - //client to re-fetch the whole document and - //retry the failed operation. - User::RequestComplete( iClientStatus, KXcapErrorUnrecoverableConflict ); - break; - case KXcapErrorHttpConflict: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Conflict, parse error document if available" ) ); - #endif - if( data.iResponseData != NULL ) - { - TInt error = KErrNone; - TPtrC8 errorData( data.iResponseData->Des() ); - TRAP( error, iXcapProtocol.Parser().ParseDocumentL( errorData, ErrorRoot() ) ); - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Parsing completed: %d" ), error ); - ErrorRoot()->Print(); - #endif - //Suppress build warning - error = KErrNone; - } - User::RequestComplete( iClientStatus, KXcapErrorHttpConflict ); - break; - case KXcapErrorNetworkNotAvailabe: - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Network not available, check cache" ) ); - #endif - if( iDataLength > 0 ) - { - RXcapCache* cache = iXcapProtocol.Cache(); - if( cache != NULL ) - { - TPtrC name( Name() ); - TInt error = KErrNone; - TPtrC8 root = iXcapProtocol.Transport().RootUri(); - HBufC8* data = HBufC8::NewLC( iDataLength ); - TPtr8 dataPtr( data->Des() ); - cache->FetchDocumentContent( dataPtr, name, root ); - TRAP( error, iXcapProtocol.Parser().ParseDocumentL( this, dataPtr ) ); - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Parsing completed: %d" ), error ); - #endif - //Suppress build warning - error = KErrNone; - CleanupStack::PopAndDestroy(); //data - } - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " No data in cache, nothing to do" ) ); - #endif - } - User::RequestComplete( iClientStatus, KXcapErrorNetworkNotAvailabe ); - } - break; - default: - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Default case - Result: %d" ), data.iCompletion ); - #endif - clientCode = iStatus.Int(); - User::RequestComplete( iClientStatus, clientCode ); - } - DequeueOperation( request ); - } - -// --------------------------------------------------------- -// CXcapDocument::CheckOperationQueueL -// -// --------------------------------------------------------- -// -void CXcapDocument::CheckOperationQueueL() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::CheckOperationQueueL()" ) ); - #endif - iUpdateIndex++; - if( iUpdateIndex < iOperationCount ) - ActivateOperationL(); - else - { - DequeueAll(); - iUpdateIndex = 0; - iXcapProtocol.CheckActivity(); - User::RequestComplete( iClientStatus, KErrNone ); - } - } - -// --------------------------------------------------------- -// CXcapDocument::DequeueOperation -// -// --------------------------------------------------------- -// -void CXcapDocument::DequeueOperation( MXdmOperation* aOperation ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::DequeueOperation()" ) ); - #endif - TInt index = iChangeRequests.Find( aOperation ); - if( index >= 0 ) - { - iChangeRequests.Remove( index ); - aOperation->Destroy(); - aOperation = NULL; - } - iOperationCount = iChangeRequests.Count(); - } - -// --------------------------------------------------------- -// CXcapDocument::DequeueAll -// -// --------------------------------------------------------- -// -void CXcapDocument::DequeueAll() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::DequeueAll()" ) ); - #endif - - while (iChangeRequests.Count() ) - { - MXdmOperation* request = iChangeRequests[0]; - iChangeRequests.Remove( 0 ); - request->Destroy(); - request = NULL; - } - } - -// --------------------------------------------------------- -// CXcapDocument::EightBitNameLC -// -// --------------------------------------------------------- -// -HBufC8* CXcapDocument::EightBitNameLC() - { - /*#ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::EightBitNameLC()" ) ); - #endif*/ - __ASSERT_DEBUG( Name().Length() > 0, User::Panic( _L( "CXcapDocument" ), 1 ) ); - HBufC8* buf = HBufC8::NewLC( Name().Length() ); - buf->Des().Copy( Name() ); - return buf; - } - -// --------------------------------------------------------- -// CXcapDocument::DocumentType -// -// --------------------------------------------------------- -// -TXdmDocType CXcapDocument::DocumentType() const - { - return iDocumentType; - } - -// --------------------------------------------------------- -// CXcapDocument::AppendNamespaceL -// -// --------------------------------------------------------- -// -void CXcapDocument::AppendNamespaceL( const TDesC8& aUri, const TDesC8& aPrefix ) - { - CXdmNamespace* ns = CXdmNamespace::NewL( aUri, aPrefix ); - CleanupStack::PushL( ns ); - User::LeaveIfError( iNamespaces.Append( ns ) ); - CleanupStack::Pop(); //ns - } - -// --------------------------------------------------------- -// CXcapDocument::RemoveNamespace -// -// --------------------------------------------------------- -// -void CXcapDocument::RemoveNamespace( const TDesC8& aUri ) - { - TBool found = EFalse; - CXdmNamespace* ns = NULL; - TInt count = iNamespaces.Count(); - for( TInt i = 0;!found && i < count;i++ ) - { - ns = iNamespaces[i]; - if( ns->Uri().Compare( aUri ) == 0 ) - { - found = ETrue; - iNamespaces.Remove( i ); - delete ns; - ns = NULL; - } - } - } - -// --------------------------------------------------------- -// CXcapDocument::Uri -// -// --------------------------------------------------------- -// -TPtrC8 CXcapDocument::Uri( const TDesC8& aPrefix ) const - { - TPtrC8 uri( _L8( "" ) ); - TBool found = EFalse; - TInt count = iNamespaces.Count(); - for( TInt i = 0;!found && i < count ;i++ ) - { - if( iNamespaces[i]->Prefix().Compare( aPrefix ) == 0 ) - { - uri.Set( iNamespaces[i]->Uri() ); - found = ETrue; - } - } - return uri; - } - -// --------------------------------------------------------- -// CXcapDocument::Count -// -// --------------------------------------------------------- -// -TInt CXcapDocument::Count() const - { - return iNamespaces.Count(); - } - -// --------------------------------------------------------- -// CXcapDocument::Prefix -// -// --------------------------------------------------------- -// -TPtrC8 CXcapDocument::Prefix( TInt aIndex ) const - { - TInt count = iNamespaces.Count(); - if( count > 0 && ( aIndex >= 0 && aIndex < count ) ) - return iNamespaces[aIndex]->Prefix(); - else return TPtrC8(); - } - -// --------------------------------------------------------- -// CXcapDocument::Uri -// -// --------------------------------------------------------- -// -TPtrC8 CXcapDocument::Uri( TInt aIndex ) const - { - TInt count = iNamespaces.Count(); - if( count > 0 && ( aIndex >= 0 && aIndex < count ) ) - return iNamespaces[aIndex]->Uri(); - else return TPtrC8(); - } - -// --------------------------------------------------------- -// CXcapDocument::ResetNamespaces -// -// --------------------------------------------------------- -// -void CXcapDocument::ResetNamespaces( ) - { - iNamespaces.ResetAndDestroy(); - } - -// --------------------------------------------------------- -// CXcapDocument::TimeStamp -// -// --------------------------------------------------------- -// -TTime CXcapDocument::TimeStamp() const - { - return iLastModification; - } - -// ---------------------------------------------------- -// CXdmDocument::SaveClientStatus -// -// ---------------------------------------------------- -// -void CXcapDocument::SaveClientStatus( TRequestStatus& aClientStatus ) - { - iClientStatus = &aClientStatus; - } - -// --------------------------------------------------------- -// CXcapDocument::DoCancel -// -// --------------------------------------------------------- -// -void CXcapDocument::DoCancel() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocument::DoCancel()" ) ); - #endif - if( iClientStatus ) - { - User::RequestComplete( iClientStatus, KErrCancel ); - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " Request completed" ) ); - #endif - } - else - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( " iClientStatus == NULL => do nothing" ) ); - #endif - } - } - - - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/src/XcapDocumentNode.cpp --- a/xdmprotocols/XcapProtocol/src/XcapDocumentNode.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,281 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapDocumentNode -* -*/ - - - - -// INCLUDE FILES -#include "XdmDocument.h" -#include "XcapProtocol.h" -#include "XcapDocumentNode.h" -#include "XcapNodeAttribute.h" - -// ---------------------------------------------------------- -// CXcapDocumentNode::CXcapDocumentNode -// -// ---------------------------------------------------------- -// -CXcapDocumentNode::CXcapDocumentNode( CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol ) : - CXdmDocumentNode( aXdmEngine, ( MXdmNodeFactory& )*this ), - iXcapProtocol( aXcapProtocol ) - - { - } - - -// ---------------------------------------------------------- -// CXcapDocumentNode::CXcapDocumentNode -// -// ---------------------------------------------------------- -// -CXcapDocumentNode::CXcapDocumentNode( CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ) : - CXdmDocumentNode( aXdmEngine, - ( MXdmNodeFactory& )*this, aParentNode ), - iXcapProtocol( aXcapProtocol ) - - { - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::CXcapDocumentNode -// -// ---------------------------------------------------------- -// -CXcapDocumentNode::CXcapDocumentNode( const TBool aLeafNode, - CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ) : - CXdmDocumentNode( aLeafNode, aXdmEngine, - ( MXdmNodeFactory& )*this, aParentNode ), - iXcapProtocol( aXcapProtocol ) - { - - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol ) - { - return new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol ); - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CXcapProtocol& aXcapProtocol ) - { - CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol ); - CleanupStack::PushL( self ); - self->BaseConstructL( aNodeName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine, - CXcapProtocol& aXcapProtocol, - const CXdmDocumentNode& aAnotherNode, - const CXdmDocumentNode& aParentNode ) - { - CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol ); - CleanupStack::PushL( self ); - self->BaseConstructL( aAnotherNode.NodeName() ); - self->CopyConstructL( aAnotherNode, aParentNode ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine, - const TDesC& aNodeName, - CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ) - { - CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol, aParentNode ); - CleanupStack::PushL( self ); - self->BaseConstructL( aNodeName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine, - const TBool aLeafNode, - const TDesC& aNodeName, - CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ) - { - CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aLeafNode, aXdmEngine, aXcapProtocol, aParentNode ); - CleanupStack::PushL( self ); - self->BaseConstructL( aNodeName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXdmDocumentNode::NewL -// -// ---------------------------------------------------------- -// -CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine, - const TBool aLeafNode, - CXcapProtocol& aXcapProtocol, - CXdmDocumentNode* aParentNode ) - { - return new ( ELeave ) CXcapDocumentNode( aLeafNode, aXdmEngine, aXcapProtocol, aParentNode ); - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::CopyConstructL -// -// ---------------------------------------------------------- -// -void CXcapDocumentNode::CopyConstructL( const CXdmDocumentNode& aAnotherNode, - const CXdmDocumentNode& aParentNode ) - { - CXdmDocumentNode::CopyConstructL( aAnotherNode, aParentNode ); - } - -// ---------------------------------------------------- -// CXcapDocumentNode::~CXcapDocumentNode -// -// ---------------------------------------------------- -// -EXPORT_C CXcapDocumentNode::~CXcapDocumentNode() - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocumentNode::~CXcapDocumentNode()" ) ); - #endif - delete iPrefix; - iPrefix = NULL; - } - -// ---------------------------------------------------- -// CXcapDocumentNode::ChileNodeL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CXcapDocumentNode::ChileNodeL() - { - return CXcapDocumentNode::NewL( iXdmEngine, EFalse, iXcapProtocol, this ); - } - -// ---------------------------------------------------- -// CXcapDocumentNode::ChileNodeL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CXcapDocumentNode::ChileNodeL( const TDesC& aChildName ) - { - return CXcapDocumentNode::NewL( iXdmEngine, EFalse, aChildName, iXcapProtocol, this ); - } - -// ---------------------------------------------------- -// CXcapDocumentNode::ChileNodeL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CXcapDocumentNode::ChileNodeL( const CXdmDocumentNode* aAnotherNode ) - { - return CXcapDocumentNode::NewL( iXdmEngine, iXcapProtocol, *aAnotherNode, *this ); - } - -// ---------------------------------------------------- -// CXcapDocumentNode::CreateAttributeL -// -// ---------------------------------------------------- -// -CXdmNodeAttribute* CXcapDocumentNode::AttributeL() - { - return CXcapNodeAttribute::NewL( iXdmEngine, this ); - } - -// ---------------------------------------------------- -// CXcapDocumentNode::CreateAttributeL -// -// ---------------------------------------------------- -// -CXdmNodeAttribute* CXcapDocumentNode::AttributeL( const TDesC& aAttributeName ) - { - return CXcapNodeAttribute::NewL( iXdmEngine, aAttributeName, this ); - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::RemoveNode -// -// ---------------------------------------------------------- -// -void CXcapDocumentNode::RemoveNode( CXcapDocumentNode* aChileNode ) - { - #ifdef _DEBUG - iXcapProtocol.WriteToLog( _L8( "CXcapDocumentNode::RemoveNode()" ) ); - #endif - CXdmDocumentNode* remove = NULL; - TInt index = iChildren.Find( aChileNode ); - __ASSERT_DEBUG( index >= 0, User::Panic( _L( "CXcapDocumentNode" ), 0 ) ); - remove = iChildren[index]; - iChildren.Remove( index ); - delete remove; - remove = NULL; - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::SetPrefix -// -// ---------------------------------------------------------- -// -void CXcapDocumentNode::SetPrefixL( const TDesC8& aPrefix ) - { - delete iPrefix; - iPrefix = NULL; - iPrefix = aPrefix.AllocL(); - } - -// ---------------------------------------------------------- -// CXcapDocumentNode::NamespacePrefix -// -// ---------------------------------------------------------- -// -TPtrC8 CXcapDocumentNode::Prefix() const - { - return iPrefix != NULL ? iPrefix->Des() : TPtrC8(); - } - - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/src/XcapNodeAttribute.cpp --- a/xdmprotocols/XcapProtocol/src/XcapNodeAttribute.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapNodeAttribute -* -*/ - - - - -// INCLUDE FILES -#include "XcapProtocol.h" -#include "XcapNodeAttribute.h" - -// ---------------------------------------------------------- -// CXcapNodeAttribute::CXcapNodeAttribute -// -// ---------------------------------------------------------- -// -CXcapNodeAttribute::CXcapNodeAttribute( CXdmEngine& aXdmEngine ) : - CXdmNodeAttribute( aXdmEngine, ( MXdmNodeFactory& )*this ) - - { - } - -// ---------------------------------------------------------- -// CXcapNodeAttribute::CXcapNodeAttribute -// -// ---------------------------------------------------------- -// -CXcapNodeAttribute::CXcapNodeAttribute( CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode ) : - CXdmNodeAttribute( aXdmEngine, - ( MXdmNodeFactory& )*this, aParentNode ) - - { - } - -// ---------------------------------------------------------- -// CXcapNodeAttribute::CXcapNodeAttribute -// -// ---------------------------------------------------------- -// -CXcapNodeAttribute* CXcapNodeAttribute::NewL( CXdmEngine& aXdmEngine, - const TDesC& aAttributeName, - CXdmDocumentNode* aParentNode ) - { - CXcapNodeAttribute* self = new ( ELeave ) CXcapNodeAttribute( aXdmEngine, aParentNode ); - CleanupStack::PushL( self ); - self->CXdmNodeAttribute::BaseConstructL( aAttributeName ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapNodeAttribute::CXcapNodeAttribute -// -// ---------------------------------------------------------- -// -CXcapNodeAttribute* CXcapNodeAttribute::NewL( CXdmEngine& aXdmEngine, - CXdmDocumentNode* aParentNode ) - { - CXcapNodeAttribute* self = new ( ELeave ) CXcapNodeAttribute( aXdmEngine, aParentNode ); - return self; - } - -// ---------------------------------------------------------- -// CXcapNodeAttribute::~CXcapNodeAttribute -// -// ---------------------------------------------------------- -// -CXcapNodeAttribute::~CXcapNodeAttribute() - { - } - -// ---------------------------------------------------------- -// CXcapNodeAttribute::~CXcapNodeAttribute -// -// ---------------------------------------------------------- -// -TPtrC8 CXcapNodeAttribute::Prefix() const - { - return TPtrC8(); - } - -// ---------------------------------------------------------- -// CXcapNodeAttribute::~CXcapNodeAttribute -// -// ---------------------------------------------------------- -// -void CXcapNodeAttribute::SetPrefixL( const TDesC& /*aNamespacePrefix*/ ) - { - } - -// ---------------------------------------------------------- -// CXcapNodeAttribute::~CXcapNodeAttribute -// -// ---------------------------------------------------------- -// -void CXcapNodeAttribute::SetPrefixL( const TDesC8& /*aNamespacePrefix*/ ) - { - } diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/src/XcapNodeSelector.cpp --- a/xdmprotocols/XcapProtocol/src/XcapNodeSelector.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapNodeSelector -* -*/ - - - - -// INCLUDES -//This is only for logging -#include "XcapProtocol.h" -#include "XcapNodeSelector.h" - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CXcapNodeSelector::CXcapNodeSelector() - { - } - -// --------------------------------------------------------- -// Two-phased constructor. -// -// --------------------------------------------------------- -// -CXcapNodeSelector* CXcapNodeSelector::NewL() - { - CXcapNodeSelector* self = new ( ELeave ) CXcapNodeSelector(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// Symbian OS default constructor may leave. -// -// --------------------------------------------------------- -// -void CXcapNodeSelector::ConstructL() - { - - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CXcapNodeSelector::~CXcapNodeSelector() - { - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( "CXcapNodeSelector::~CXcapNodeSelector()" ) ); - #endif - delete iSelectorString; - } - -// End of File - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/src/XcapProtocol.cpp --- a/xdmprotocols/XcapProtocol/src/XcapProtocol.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,765 +0,0 @@ -/* -* Copyright (c) 2005 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: CXcapProtocol -* -*/ - - - -#include -#include -#include -#include -#include -#include -#include -#include -#include "XcapAppUsage.h" -#include "XcapEarlyIms.h" -#include "XcapProtocol.h" -#include "XcapDocument.h" -#include "xdmlogwriter.h" -#include "XcapDocumentNode.h" -#include "XcapDirectory.h" -#include "XdmXmlParser.h" -#include "XdmCredentials.h" -#include "XcapHttpReqGet.h" -#include "XdmProtocolInfo.h" -#include "XdmShutdownTimer.h" -#include "XcapHttpTransport.h" -#include "XdmOperationFactory.h" - -// ---------------------------------------------------------- -// CXcapProtocol::CXcapProtocol -// -// ---------------------------------------------------------- -// -CXcapProtocol::CXcapProtocol() : iSuspend( EFalse ), - iCacheUsage( EFalse ), - iTransferMediaOpen( EFalse ), - iSimRequestPending( EFalse ), - iAuthType( EXcapAuthHttpDigest ) - { - } - -// ---------------------------------------------------------- -// CXcapProtocol::DeleteLogFileL -// -// ---------------------------------------------------------- -// -CXcapProtocol* CXcapProtocol::NewL( const TXdmProtocolParams& aProtocolParams ) - { - CXcapProtocol* self = new ( ELeave ) CXcapProtocol(); - CleanupStack::PushL( self ); - self->ConstructL( aProtocolParams ); - CleanupStack::Pop(); - return self; - } - -// ---------------------------------------------------------- -// CXcapProtocol::DeleteLogFileL -// -// ---------------------------------------------------------- -// -CXcapProtocol::~CXcapProtocol() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::~CXcapProtocol()" ) ); - #endif - delete iRootUri; - delete iPublicId; - delete iXmlParser; - delete iCapabilities; - delete iImsResolver; - delete iHttpTransport; - delete iIdleTimer; - if( iCacheUsage ) - { - iCacheClient.Flush(); - #ifdef _DEBUG - WriteToLog( _L8( " Cache flushed" ) ); - #endif - iCacheClient.Close(); - #ifdef _DEBUG - WriteToLog( _L8( " Cache closed" ) ); - #endif - } - if( iConnectionManager != NULL ) - iConnectionManager->Destroy(); - #ifdef _DEBUG - WriteToLog( _L8( " ConnMan destroyed" ) ); - #endif - #ifdef _DEBUG - WriteToLog( _L8( " All finished, about to delete file logger" ) ); - #endif - delete iLogWriter; - iNotifyeeQueue.Close(); - } - -// ---------------------------------------------------------- -// CXcapProtocol::ConstructL -// -// ---------------------------------------------------------- -// -void CXcapProtocol::ConstructL( const TXdmProtocolParams& aProtocolParams ) - { - #ifdef _DEBUG - iLogWriter = CXdmLogWriter::NewL( KXcapEngLogFile ); - WriteToLog( _L8( "CXcapProtocol::ConstructL()" ) ); - #endif - iXdmEngine = CONST_CAST( CXdmEngine*, &aProtocolParams.iXdmEngine ); - iProtocolInfo = &aProtocolParams.iProtocolInfo; - TInt error = SaveSettingsL(); - if( error == KErrNone ) - { - iXmlParser = CXdmXmlParser::NewL(); - iIdleTimer = new ( ELeave ) CXdmShutdownTimer( *this, this ); - iIdleTimer->ConstructL(); - if( iProtocolInfo->IsCacheEnabled() ) - { - iCacheUsage = ETrue; - TInt error = iCacheClient.Connect(); - #ifdef _DEBUG - WriteToLog( _L8( " Cache start: %d" ), error ); - #endif - __ASSERT_DEBUG( ( error == KErrNone || error == KErrAlreadyExists ), - User::Panic( _L( "CXcapProtocol" ), 1 ) ); - } - iUserName.Copy( iCredentials.iUserName ); - iConnectionManager = NewMsgConnManagerL( iAccessPoint ); - __ASSERT_DEBUG( iRootUri->Des().Length() > 0, User::Panic( _L( "CXcapProtocol" ), 1 ) ); - TBool secure = iProtocolInfo->IsSecure() || iRootUri->Des().FindF( KHttps ) == 0; - HBufC* root = ParseRootLocationLC( secure, iRootUri->Des() ); - __ASSERT_ALWAYS( root != NULL, User::Panic( _L( "CXcapProtocol" ), 1 ) ); - iHttpTransport = CXcapHttpTransport::NewL( root->Des(), *iConnectionManager, iCredentials ); - CleanupStack::PopAndDestroy(); //root - } - else User::Leave( error ); - } - -// ---------------------------------------------------------- -// CXcapProtocol::PublicID -// -// ---------------------------------------------------------- -// -EXPORT_C TPtrC8 CXcapProtocol::PublicID() - { - return iPublicId != NULL ? iPublicId->Des() : TPtrC8(); - } - -// ---------------------------------------------------------- -// CXcapProtocol::Cache -// -// ---------------------------------------------------------- -// -EXPORT_C RXcapCache* CXcapProtocol::Cache() - { - return iCacheUsage ? &iCacheClient : NULL; - } - -// --------------------------------------------------------- -// CXcapProtocol::Parser -// -// --------------------------------------------------------- -// -EXPORT_C CXdmXmlParser& CXcapProtocol::Parser() - { - return *iXmlParser; - } - -// --------------------------------------------------------- -// CXcapProtocol::Transport -// -// --------------------------------------------------------- -// -EXPORT_C CXcapHttpTransport& CXcapProtocol::Transport() - { - return *iHttpTransport; - } - -// ---------------------------------------------------------- -// CXcapProtocol::IsNetworkAvailable -// -// ---------------------------------------------------------- -// -EXPORT_C TBool CXcapProtocol::IsNetworkAvailable() - { - return iConnectionManager->Status(); - } - -// ---------------------------------------------------------- -// CXcapProtocol::SaveSettingsL -// -// ---------------------------------------------------------- -// -TInt CXcapProtocol::SaveSettingsL() - { - TInt settingsId = iProtocolInfo->SettingsID(); - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::SaveSettingsL() - ID: %d" ), settingsId ); - #endif - CXdmSettingsCollection* settings = NULL; - TRAPD( error, settings = TXdmSettingsApi::SettingsCollectionL( settingsId ) ); - if( error == KErrNone && settings != NULL ) - { - CleanupStack::PushL( settings ); - SaveFromCollectionL( *settings ); - CleanupStack::PopAndDestroy(); //settings - } - else //Default to HTTP-DIGEST - { - iAuthType = EXcapAuthHttpDigest; - iAccessPoint = iProtocolInfo->AccessPoint(); - iCredentials = iProtocolInfo->Credentials(); - iRootUri = iProtocolInfo->Root().AllocL(); - error = iRootUri->Des().Length() > 0 && - iCredentials.iUserName.Length() > 0 && - iCredentials.iPassword.Length() > 0 ? - KErrNone : KErrArgument; - } - return error; - } - -// ---------------------------------------------------------- -// CXcapProtocol::SelectAuthType -// -// ---------------------------------------------------------- -// -void CXcapProtocol::SelectAuthTypeL( const CXdmSettingsCollection& aSettings ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::SelectAuthTypeL()" ) ); - #endif - TPtrC authType( aSettings.Property( EXdmPropAuthType ) ); - if( authType.Compare( KXdmAuthGaa ) == 0 ) - { - iAuthType = EXcapAuthGaa; - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( " GAA" ) ); - #endif - } - else if( authType.Compare( KXdmAuthEarlyIms ) == 0 ) - { - #ifndef __WINSCW__ - iAuthType = EXcapAuthEarlyIms; - ResolveIdentityL(); - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( " EARLY-IMS" ) ); - #endif - #endif - #ifdef __FAKE_IMPU__ - iAuthType = EXcapAuthEarlyIms; - ResolveIdentityL(); - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( " EARLY-IMS" ) ); - #endif - #else - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( " WINS, cannot authenticate without SIM card => ignore" ) ); - #endif - iAuthType = EXcapAuthHttpDigest; - #endif - } - else - { - iAuthType = EXcapAuthHttpDigest; - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( " HTTP-DIGEST" ) ); - #endif - } - //Fallback position: in case the server challenges us even though EXcapAuthEarlyIms - //has been defined, use the credentials the client supplied regardless of what they are. - TPtrC authName( aSettings.Property( EXdmPropAuthName ) ); - TPtrC authSecret( aSettings.Property( EXdmPropAuthSecret ) ); - //But they must not exceed the stipulated length - __ASSERT_ALWAYS( authName.Length() <= KXdmMaxUserNameLength, User::Leave( KErrCorrupt ) ); - __ASSERT_ALWAYS( authSecret.Length() <= KXdmMaxPasswordLength, User::Leave( KErrCorrupt ) ); - iCredentials = TXdmCredentials( authName, authSecret ); - } - -// ---------------------------------------------------------- -// CXcapProtocol::SaveFromCollectionL -// -// ---------------------------------------------------------- -// -void CXcapProtocol::SaveFromCollectionL( const CXdmSettingsCollection& aSettings ) - { - #ifdef _DEBUG - for( TInt i = 0;i < aSettings.Count();i++ ) - { - const CXdmSettingsProperty& prop = aSettings.Property( i ); - HBufC8* value = HBufC8::NewLC( prop.PropertyValue().Length() ); - value->Des().Copy( prop.PropertyValue() ); - TPtrC8 valueDes( value->Des() ); - WriteToLog( _L8( " Property %d - Name: %d Value: %S" ), i, prop.PropertyName(), &valueDes ); - CleanupStack::PopAndDestroy(); //value - } - #endif - SelectAuthTypeL( aSettings ); - __ASSERT_DEBUG( aSettings.Property( EXdmPropToNapId ).Length() > 0, User::Leave( KErrCorrupt ) ); - __ASSERT_DEBUG( aSettings.Property( EXdmPropUri ).Length() > 0, User::Leave( KErrCorrupt ) ); - TLex accessPoint( aSettings.Property( EXdmPropToNapId ) ); - TInt error = accessPoint.Val( iAccessPoint ); - __ASSERT_DEBUG( error == KErrNone, User::Leave( KErrCorrupt ) ); - iRootUri = aSettings.Property( EXdmPropUri ).AllocL(); - #ifdef _DEBUG - TBuf8 name( iCredentials.iUserName ); - TBuf8 password( iCredentials.iPassword ); - HBufC8* rootUri = HBufC8::NewLC( iRootUri->Des().Length() ); - rootUri->Des().Copy( iRootUri->Des() ); - TPtrC8 uriDes( rootUri->Des() ); - WriteToLog( _L8( " Finished - Error: %d" ), error ); - WriteToLog( _L8( " Access point: %d" ), iAccessPoint ); - WriteToLog( _L8( " URI: %S" ), &uriDes ); - WriteToLog( _L8( " User name: %S" ), &name ); - WriteToLog( _L8( " Password: %S" ), &password ); - CleanupStack::PopAndDestroy(); //rootUri - #endif - iUserName.Copy( iCredentials.iUserName ); - } - -// ---------------------------------------------------------- -// CXcapProtocol::ParseRootLocationLC -// -// ---------------------------------------------------------- -// -HBufC* CXcapProtocol::ParseRootLocationLC( const TBool aSecurity, - const TDesC& aRootLocation ) - { - #ifdef _DEBUG - TBuf8<1024> root; - root.Copy( aRootLocation ); - WriteToLog( _L8( "CXcapProtocol::ParseRootLocationLC()" ) ); - WriteToLog( _L8( " Security: %d" ), aSecurity ); - WriteToLog( _L8( " Provided URI: %S" ), &root ); - #endif - HBufC* ret = NULL; - HBufC* temp = CheckProtocolPrefixL( aRootLocation ); - if( temp != NULL ) - { - CleanupStack::PushL( temp ); - ret = aSecurity ? ConstructSecureUriL( temp->Des() ) : - ConstructStandardUriL( temp->Des() ); - CleanupStack::PopAndDestroy(); //temp - } - else - ret = aSecurity ? ConstructSecureUriL( aRootLocation ) : - ConstructStandardUriL( aRootLocation ); - TPtr desc( ret->Des() ); - if( desc[desc.Length() - 1] == '/' ) - desc.Delete( desc.Length() - 1, 1 ); - CleanupStack::PushL( ret ); - return ret; - } - -// ---------------------------------------------------------- -// CXcapProtocol::CheckProtocolPrefixLC -// -// ---------------------------------------------------------- -// -HBufC* CXcapProtocol::CheckProtocolPrefixL( const TDesC& aRootLocation ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::CheckProtocolPrefixL()" ) ); - #endif - HBufC* buffer = NULL; - if( aRootLocation.FindF( KHttp ) == 0 || aRootLocation.FindF( KHttps ) == 0 ) - { - TInt length = aRootLocation.FindF( KHttp ) == 0 ? - KHttp().Length() : KHttps().Length(); - buffer = HBufC::NewL( aRootLocation.Length() - length ); - TPtrC desc( aRootLocation ); - TPtrC temp = desc.Right( aRootLocation.Length() - length ); - buffer->Des().Copy( temp ); - } - return buffer; - } - -// ---------------------------------------------------------- -// CXcapProtocol::ConstructStandardUriL -// -// ---------------------------------------------------------- -// -HBufC* CXcapProtocol::ConstructStandardUriL( const TDesC& aBasicUri ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::ConstructStandardUriLC()" ) ); - #endif - HBufC* ret = HBufC::NewL( aBasicUri.Length() + - TPtrC( KHttp ).Length() ); - TPtr desc( ret->Des() ); - desc.Copy( KHttp ); - desc.Append( aBasicUri ); - return ret; - } - -// ---------------------------------------------------------- -// CXcapProtocol::ConstructSecureUriL -// -// ---------------------------------------------------------- -// -HBufC* CXcapProtocol::ConstructSecureUriL( const TDesC& aBasicUri ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::ConstructSecureUriLC()" ) ); - #endif - TInt index = aBasicUri.FindF( KHostSeparator ); - HBufC* ret = HBufC::NewL( aBasicUri.Length() + - TPtrC( KHttps ).Length() ); - TPtr uriDesc( ret->Des() ); - if( index > 0 ) - { - TPtrC basic( aBasicUri.Left( index ) ); - TPtrC theRest( aBasicUri.Mid( index ) ); - uriDesc.Copy( KHttps ); - uriDesc.Append( basic ); - uriDesc.Append( theRest ); - } - else - { - uriDesc.Copy( KHttps ); - uriDesc.Append( aBasicUri ); - } - return ret; - } - -// ---------------------------------------------------------- -// CXcapProtocol::ResolveIdentityL -// -// ---------------------------------------------------------- -// -void CXcapProtocol::ResolveIdentityL() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::ResolveIdentityL()" ) ); - #endif - iImsResolver = CXcapEarlyIms::NewL(); - iImsResolver->RequestSimDataL( this ); - iSimRequestPending = ETrue; - } - -// --------------------------------------------------------- -// CXcapProtocol::CheckActivity -// -// --------------------------------------------------------- -// -void CXcapProtocol::CheckActivity() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::CheckActivity()" ) ); - #endif - TBool activity = EFalse; - const RPointerArray& documents = iXdmEngine->DocumentCollection(); - const RPointerArray& directories = iXdmEngine->DirectoryCollection(); - TInt docCount = documents.Count(); - TInt dirCount = directories.Count(); - if( docCount > 0 || dirCount > 0 ) - { - TInt i = 0; - for( ;!activity && i < docCount;i++ ) - activity = documents[i]->IsActive(); - for( i = 0 && !activity;!activity && i < dirCount;i++ ) - activity = directories[i]->IsActive(); - } - if( !activity ) - { - //Just in case... - iIdleTimer->Cancel(); - iIdleTimer->Start( iIdleTimeout * 1000000 ); - } - } - -// --------------------------------------------------------- -// CXcapProtocol::SimRequestPending -// -// --------------------------------------------------------- -// -TBool CXcapProtocol::IsSimRequestPending( TInt& aError ) const - { - aError = iSimRequestPending ? KErrNotReady : iImsResolverError; - return iSimRequestPending; - } - -// --------------------------------------------------------- -// CXcapProtocol::AppendNotifyeeL -// -// --------------------------------------------------------- -// -void CXcapProtocol::AppendNotifyeeL( CXcapDocument* aPendingDoc ) - { - User::LeaveIfError( iNotifyeeQueue.Append( aPendingDoc ) ); - } - -// --------------------------------------------------------- -// CXcapProtocol::CancelImsResolver -// -// --------------------------------------------------------- -// -void CXcapProtocol::CancelImsResolver() - { - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( "CXcapDocument::CancelImsResolver()" ) ); - #endif - if( iImsResolver ) - iImsResolver->Cancel(); - } - -// --------------------------------------------------------- -// CXcapDocument::RequestComplete -// -// --------------------------------------------------------- -// -void CXcapProtocol::RequestComplete( TInt aError ) - { - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( "CXcapDocument::RequestComplete()" ) ); - #endif - if( aError == KErrNone ) - { - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( " Public ID retrieved successfully" ) ); - #endif - iPublicId = iImsResolver->PublicIDL().AllocL(); - delete iImsResolver; - iImsResolver = NULL; - } - else - { - #ifdef _DEBUG - CXcapProtocol::WriteToLog( _L8( " Public ID retrieval failed - Status: %d" ), aError ); - #endif - iImsResolverError = aError; - } - for( TInt i = 0;i < iNotifyeeQueue.Count();i++ ) - { - CXcapDocument* document = iNotifyeeQueue[i]; - if( document ) - document->NotifyResolverCompleteL( aError ); - } - iSimRequestPending = EFalse; - iNotifyeeQueue.Reset(); - } - -// ---------------------------------------------------------- -// CXcapProtocol::WriteToLog -// -// ---------------------------------------------------------- -// -void CXcapProtocol::WriteToLog( TRefByValue aFmt,... ) const - { - VA_LIST list; - VA_START( list, aFmt ); - TBuf8 buf; - buf.FormatList( aFmt, list ); - iLogWriter->WriteToLog( buf ); - } - -// ---------------------------------------------------- -// CXcapProtocol::InitTransferMedium -// -// ---------------------------------------------------- -// -void CXcapProtocol::InitTransferMedium( TInt aIdleTimeout, TRequestStatus& aStatus ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::InitTransferMedium()" ) ); - #endif - iIdleTimer->Cancel(); - iIdleTimeout = aIdleTimeout; - if( !IsNetworkAvailable() ) - iConnectionManager->StartConnection( aStatus ); - else //Already open - { - TRequestStatus* status = &aStatus; - User::RequestComplete( status, KErrNone ); - } - } - -// ---------------------------------------------------- -// CXcapProtocol::CancelTransferMediumInit -// -// ---------------------------------------------------- -// -void CXcapProtocol::CancelTransferMediumInit() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::CancelTransferMediumInit()" ) ); - #endif - TInt error = KErrNone; - TRAP( error, iConnectionManager->CancelStartL() ); - #ifdef _DEBUG - WriteToLog( _L8( " Transfer media cancel completed - Error: %d" ), error ); - #endif - //Suppress build warning - error = KErrNone; - } - -// --------------------------------------------------------- -// CXcapProtocol::IsTransferAvailable -// -// --------------------------------------------------------- -// -TBool CXcapProtocol::IsTransferAvailable() const - { - return iConnectionManager->Status(); - } - -// --------------------------------------------------------- -// CXcapProtocol::AuthType -// -// --------------------------------------------------------- -// -TXcapAuthType CXcapProtocol::AuthType() const - { - return iAuthType; - } - -// --------------------------------------------------------- -// CXdmEngine::XdmProtocol -// -// --------------------------------------------------------- -// -void CXcapProtocol::SwitchOff() - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::SwitchOff()" ) ); - #endif - iConnectionManager->StopConnection(); - } - -// ---------------------------------------------------- -// CXcapProtocol::CreateDocumentL -// -// ---------------------------------------------------- -// -CXdmDocument* CXcapProtocol::CreateDocumentL( const TDesC& aDocumentName, - const TXdmDocType aDocumentType ) - { - return CXcapDocument::NewL( aDocumentType, aDocumentName, *iXdmEngine, *this ); - } - -// ---------------------------------------------------- -// CXcapProtocol::CreateDirectoryL -// -// ---------------------------------------------------- -// -CXdmDirectory* CXcapProtocol::CreateDirectoryL( const TDesC& aDirectoryPath ) - { - _LIT( KDirectoryDocName, "directory.xml" ); - CXdmDocument* document = iXdmEngine->CreateDocumentModelL( KDirectoryDocName, EXdmDirectory ); - CleanupStack::PushL( document ); - CXdmDirectory* directory = CXcapDirectory::NewL( aDirectoryPath, *iXdmEngine, document, *this ); - CleanupStack::Pop(); //document - return directory; - } - -// ---------------------------------------------------- -// CXcapProtocol::CreateDocumentNodeL -// -// ---------------------------------------------------- -// -CXdmDocumentNode* CXcapProtocol::CreateDocumentNodeL() - { - return CXcapDocumentNode::NewL( *iXdmEngine, *this ); - } - -// --------------------------------------------------------- -// CXcapProtocol::GenerateUniqueIdL -// -// --------------------------------------------------------- -// -TInt CXcapProtocol::GenerateUniqueIdL() - { - TInt period = 0; - User::LeaveIfError( HAL::Get( HALData::ESystemTickPeriod, period ) ); - TInt millisecsPerTick = period / 1000; - return User::TickCount() * millisecsPerTick; - } - -// ---------------------------------------------------------- -// CXdmProtocol::UserName -// -// ---------------------------------------------------------- -// -TPtrC8 CXcapProtocol::UserName() const - { - return iUserName; - } - -// ---------------------------------------------------------- -// CXdmProtocol::HandleBearerEventL -// -// ---------------------------------------------------------- -// -void CXcapProtocol::HandleBearerEventL( TBool aAuthoritativeClose, - TMsgBearerEvent aBearerEvent ) - { - #ifdef _DEBUG - WriteToLog( _L8( "CXcapProtocol::HandleBearerEventL(): %d" ), aBearerEvent ); - #endif - switch( aBearerEvent ) - { - case EMsgBearerSuspended: - #ifdef _DEBUG - WriteToLog( _L8( " Bearer suspended" ) ); - #endif - iSuspend = ETrue; - break; - case EMsgBearerActive: - #ifdef _DEBUG - WriteToLog( _L8( " Bearer active" ) ); - #endif - iSuspend = EFalse; - break; - case EMsgBearerLost: - #ifdef _DEBUG - WriteToLog( _L8( " Bearer lost - Authoritative: %d" ), - aAuthoritativeClose ); - #endif - break; - default: - //Suppress build warning - aAuthoritativeClose = EFalse; - break; - } - } - -// --------------------------------------------------------- -// Map the interface UIDs to implementation factory functions -// -// --------------------------------------------------------- -// -const TImplementationProxy ImplementationTable[] = - { -#ifdef __EABI__ - IMPLEMENTATION_PROXY_ENTRY( 0x10207423, CXcapProtocol::NewL ) -#else - { { 0x10207423 }, CXcapProtocol::NewL } -#endif - }; - -// --------------------------------------------------------- -// Return the implementation table & number of implementations -// -// --------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - return ImplementationTable; - } - - - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/bwinscw/XdmXmlParserU.DEF --- a/xdmprotocols/XdmXmlParser/bwinscw/XdmXmlParserU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -EXPORTS - ??1CXdmXmlParser@@UAE@XZ @ 1 NONAME ; CXdmXmlParser::~CXdmXmlParser(void) - ?FormatToXmlLC@CXdmXmlParser@@QAEPAVHBufC8@@ABVTDesC8@@PBVCXdmDocument@@PBVCXdmDocumentNode@@@Z @ 2 NONAME ; class HBufC8 * CXdmXmlParser::FormatToXmlLC(class TDesC8 const &, class CXdmDocument const *, class CXdmDocumentNode const *) - ?FormatToXmlLC@CXdmXmlParser@@QAEPAVHBufC8@@HPBVCXdmDocument@@PBVCXdmDocumentNode@@@Z @ 3 NONAME ; class HBufC8 * CXdmXmlParser::FormatToXmlLC(int, class CXdmDocument const *, class CXdmDocumentNode const *) - ?NewL@CXdmXmlParser@@SAPAV1@XZ @ 4 NONAME ; class CXdmXmlParser * CXdmXmlParser::NewL(void) - ?ParseDocumentL@CXdmXmlParser@@QAEXABVTDesC8@@PAVCXdmDocumentNode@@@Z @ 5 NONAME ; void CXdmXmlParser::ParseDocumentL(class TDesC8 const &, class CXdmDocumentNode *) - ?ParseDocumentL@CXdmXmlParser@@QAEXPAVCXdmDocument@@ABVTDesC8@@@Z @ 6 NONAME ; void CXdmXmlParser::ParseDocumentL(class CXdmDocument *, class TDesC8 const &) - ?ParseDocumentL@CXdmXmlParser@@QAEXPAVCXdmDocument@@ABVTDesC8@@PAVCXdmDocumentNode@@@Z @ 7 NONAME ; void CXdmXmlParser::ParseDocumentL(class CXdmDocument *, class TDesC8 const &, class CXdmDocumentNode *) - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/eabi/XdmXmlParserU.DEF --- a/xdmprotocols/XdmXmlParser/eabi/XdmXmlParserU.DEF Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -EXPORTS - _ZN13CXdmXmlParser13FormatToXmlLCERK6TDesC8PK12CXdmDocumentPK16CXdmDocumentNode @ 1 NONAME - _ZN13CXdmXmlParser13FormatToXmlLCEiPK12CXdmDocumentPK16CXdmDocumentNode @ 2 NONAME - _ZN13CXdmXmlParser14ParseDocumentLEP12CXdmDocumentRK6TDesC8 @ 3 NONAME - _ZN13CXdmXmlParser14ParseDocumentLEP12CXdmDocumentRK6TDesC8P16CXdmDocumentNode @ 4 NONAME - _ZN13CXdmXmlParser14ParseDocumentLERK6TDesC8P16CXdmDocumentNode @ 5 NONAME - _ZN13CXdmXmlParser4NewLEv @ 6 NONAME - _ZTI13CXdmXmlParser @ 7 NONAME ; ## - _ZTI21CXdmXmlContentHandler @ 8 NONAME ; ## - _ZTV13CXdmXmlParser @ 9 NONAME ; ## - _ZTV21CXdmXmlContentHandler @ 10 NONAME ; ## - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/group/XdmXmlParser.mmp --- a/xdmprotocols/XdmXmlParser/group/XdmXmlParser.mmp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2005 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: XdmXmlParser -* -*/ - - - -#include - -TARGET xdmxmlparser.dll -TARGETTYPE dll -UID 0x1000008d 0x10207412 -CAPABILITY CAP_GENERAL_DLL -VENDORID VID_DEFAULT - -SOURCEPATH ../src - -USERINCLUDE ../inc -USERINCLUDE ../../inc - -//Application classes -SOURCE XdmXmlParser.cpp -SOURCE XmlFormatter.cpp -SOURCE XmlParserNodePath.cpp -SOURCE XdmXmlContentHandler.cpp - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/xml -SYSTEMINCLUDE ../../../inc - - -LIBRARY hal.lib -LIBRARY bafl.lib -LIBRARY efsrv.lib -LIBRARY euser.lib -//For debug libraries -DEBUGLIBRARY flogger.lib -LIBRARY xdmengine.lib -LIBRARY xmlframework.lib - -#if defined( ARMCC ) - DEFFILE ../eabi/ -#elif defined ( WINSCW ) - deffile ../bwinscw/ -#elif defined (WINS ) - deffile ../BWINS/ -#endif diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/group/bld.inf --- a/xdmprotocols/XdmXmlParser/group/bld.inf Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2005 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: XdmXmlParser -* -*/ - - - -PRJ_PLATFORMS -//-------------------- -DEFAULT - -//-------------------- -PRJ_MMPFILES -//-------------------- -XdmXmlParser.mmp - diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/inc/XdmXmlContentHandler.h --- a/xdmprotocols/XdmXmlParser/inc/XdmXmlContentHandler.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,278 +0,0 @@ -/* -* Copyright (c) 2005 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: CXdmXmlContentHandler -* -*/ - - - - -#ifndef __XDMXMLCONTENTHANDLER__ -#define __XDMXMLCONTENTHANDLER__ - -//INCLUDES -#include -#include "XmlNodePathInterface.h" - -using namespace Xml; - -class CXdmDocument; -class CXdmXmlParser; -class MXdmNodeInterface; -class CXmlParserNodePath; - -//CLASS DECLARATION -class CXdmXmlContentHandler : public CBase, - public MContentHandler, - public MXmlNodePathInterface - { - public: // Constructors and destructor - - /** - * Symbian OS Constructor - * @param CXdmXmlParser Reference to the main parser class - * @return CXdmXmlContentHandler A new content handler - */ - static CXdmXmlContentHandler* NewL( CXdmXmlParser& aParserMain ); - - /** - * Destructor. - */ - virtual ~CXdmXmlContentHandler(); - - public: // New functions - - /** - * Reset content handler - * @return void - */ - void Reset(); - - /** - * Set the target document - * @param CXdmDocument& Reference to a document model - * @return void - */ - void SetTarget( const CXdmDocument& aTargetDocument ); - - /** - * Set the target element - * @param CXdmDocumentNode Referene to document/fragment root - * @return void - */ - void SetTarget( const CXdmDocumentNode& aDocumentRoot ); - - /** - * Set the target document and element - * @param CXdmDocument Reference to a document model - * @param CXdmDocumentNode Referene to document/fragment root - * @return void - */ - void SetTargetL( const CXdmDocument& aTargetDocument, - const CXdmDocumentNode& aTargetNode ); - - public: //From MXmlNodePathInterface - - /** - * Return the target attribute - * @return CXdmNodeAttribute* Target attribute - */ - CXdmNodeAttribute* TargetAttribute() const; - - private: - - /** - * C++ Constructor - * @param CXdmXmlParser Reference to the main parser class - * @return CXdmXmlContentHandler - */ - CXdmXmlContentHandler( CXdmXmlParser& aParserMain ); - - /** - * Symbian OS second-phase constructor - */ - void ConstructL(); - - private: //From Xml::MContentHandler - - /** - * Get extended interface - * @param TInt32 UID of the interface - * @return TAny* a general pointer to the interface - */ - TAny* GetExtendedInterface( const TInt32 aUid ); - - /** - * Called on content: content - * @param TDesC& Content bytes - * @param TInt Error code - * @return void - */ - void OnContentL( const TDesC8 &aBytes, - TInt aErrorCode ); - - /** - * Called on document end - * @param TInt Error code - * @return void - */ - void OnEndDocumentL( TInt aErrorCode ); - - /** - * Called on element end - * @param RTagInfo& Tag info - * @param TInt Error code - * @return void - */ - void OnEndElementL( const RTagInfo& aElement, - TInt aErrorCode ); - - /** - * Called on prefix mapping end - * @param RString& Prefix - * @param TInt Error code - * @return void - */ - void OnEndPrefixMappingL( const RString &aPrefix, - TInt aErrorCode ); - - /** - * Called on error - * @param TInt Error code - * @return void - */ - void OnError( TInt aErrorCode ); - - /** - * Called on ingnorable whitespace - * @param TDesC8& Whitespace bytes - * @param TInt Error code - * @return void - */ - void OnIgnorableWhiteSpaceL( const TDesC8& aBytes, - TInt aErrorCode ); - - /** - * Called on processing instructions - * @param TDesC8& Target - * @param TDesC8& Data - * @param TInt Error code - * @return void - */ - void OnProcessingInstructionL( const TDesC8& aTarget, - const TDesC8& aData, - TInt aErrorCode ); - - /** - * Called on skipped entity - * @param RString& Name of the entity - * @param TInt Error code - * @return void - */ - void OnSkippedEntityL( const RString &aName, - TInt aErrorCode ); - - /** - * Called on document start - * @param RDocumentParameters& Parameters - * @param TInt Error code - * @return void - */ - void OnStartDocumentL( const RDocumentParameters& aDocParam, - TInt aErrorCode ); - - /** - * Called on element start - * @param RTagInfo& The starting element - * @param Xml::RAttributeArray Attributes - * @param TInt Error code - * @return void - */ - void OnStartElementL( const RTagInfo& aElement, - const Xml::RAttributeArray &aAttributes, - TInt aErrorCode ); - - /** - * Called on prefix mapping start - * @param RString& Prefix - * @param RString& URI - * @param TInt Error code - * @return void - */ - void OnStartPrefixMappingL( const RString& aPrefix, - const RString& aUri, - TInt aErrorCode ); - - private: - - /** - * Append attributes from the parameter array - * @param Xml::RAttributeArray& Attributes - * @return void - */ - void AppendAttributeValueL( const Xml::RAttributeArray& aAttributes ); - - /** - * Handle next element - * @param RTagInfo& The new element - * @param Xml::RAttributeArray& Attributes - * @return void - */ - void HandleNextElementL( const Xml::RTagInfo& aElement, - const Xml::RAttributeArray& aAttributes ); - /** - * Is the parameter descriptor a whitespace - * @param TDesC8& Bytes to check - * @return TBool - */ - TBool IsWhiteSpace( const TDesC8& aBytes ) const; - - /** - * Append a new namespace - * @param TDesC8& Prefix - * @param TDesC8& URI - * @return void - */ - void AppendNameSpaceL( const TDesC8& aPrefix, const TDesC8& aUri ); - - /** - * Set the namespace information to the current node - * @param RTagInfo& Element - * @param MXdmNodeInterface* Node interface - * @return void - */ - void SetNamespaceInformationL( const RTagInfo& aElement, - MXdmNodeInterface* aXcapNode ); - - private: // Data - - TInt iContentIndex; - TBool iFinished; - TBool iIsRootNode; - TBool iTargetFound; - TXdmElementType iElementType; - TBool iPartialDocument; - CBufFlat* iContentBuffer; - CXdmDocument* iTargetDocument; - CXdmDocumentNode* iRootNode; - CXdmDocumentNode* iDocumentSubset; - CXdmDocumentNode* iCurrentNode; - CXdmNodeAttribute* iTargetAttribute; - CXmlParserNodePath* iNodePath; - CXdmXmlParser& iParserMain; - }; - -#endif // __XDMXMLCONTENTHANDLER__ - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/inc/XdmXmlParser.h --- a/xdmprotocols/XdmXmlParser/inc/XdmXmlParser.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,175 +0,0 @@ -/* -* Copyright (c) 2005 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: CXdmXmlParser -* -*/ - - - - -#ifndef __XDMXMLPARSER__ -#define __XDMXMLPARSER__ - -#include - -//CONSTANTS -_LIT( KParserLogFile, "XcapXml" ); -_LIT8( KDefaultMimeType, "text/xml" ); - -using namespace Xml; - -//FORWARD DECLARATION -class CXdmDocument; -class CXdmLogWriter; -class CXmlFormatter; -class CXdmDocumentNode; -class MXdmNodeInterface; -class CXdmXmlContentHandler; -class MXdmNamespaceContainer; - -// CLASS DECLARATION -class CXdmXmlParser: public CBase - { - public: // Constructors and destructor - - /** - * Symbian OS Constructor - * @return CXdmXmlParser New parser intance - */ - IMPORT_C static CXdmXmlParser* NewL(); - - /** - * Parse an XML document - * @param CXdmDocument Document instance - * @param TDesC8& The raw XML data - * @return void - */ - IMPORT_C void ParseDocumentL( CXdmDocument* aDocument, - const TDesC8& aXmlDocument ); - - /** - * Parse an XML document - * @param CXdmDocument Document instance - * @param TDesC8& The raw XML data - * @param Pointer to the document/fragment root - * @return void - */ - IMPORT_C void ParseDocumentL( CXdmDocument* aDocument, - const TDesC8& aXmlDocument, - CXdmDocumentNode* aDocumentSubset ); - - /** - * Parse an XML document - * @param TDesC8& The raw XML data - * @param Pointer to the document/fragment root - * @return void - */ - IMPORT_C void ParseDocumentL( const TDesC8& aXmlDocument, - CXdmDocumentNode* aDocumentRoot ); - - /** - * Format a document model into textual form - * @param TBool Indicates whether the document is whole - * @param CXdmDocument The document instance - * @param CXdmDocumentNode Pointer to the document/fragment root - * @return HBufC8* The document in textual form - */ - IMPORT_C HBufC8* FormatToXmlLC( TBool aIsWholeDocument, - const CXdmDocument* aDocument, - const CXdmDocumentNode* aRootNode ); - - /** - * Format a document model into textual form and append the fragment - * in the first parameter to the correct place inside the document. - * @param TDesC8& The fragment to append - * @param CXdmDocument The document instance - * @param CXdmDocumentNode Pointer to the fragment - * @return HBufC8* The document in textual form - */ - IMPORT_C HBufC8* FormatToXmlLC( const TDesC8& aXmlFragment, - const CXdmDocument* aDocument, - const CXdmDocumentNode* aTargetNode ); - - /** - * Destructor. - */ - IMPORT_C virtual ~CXdmXmlParser(); - - public: - - #ifdef _DEBUG - - /** - * Write to log file - * @param TRefByValue The log line - * @return void - */ - void WriteToLog( TRefByValue aFmt,... ) const; - - #endif - - public: - - /** - * Stop the parser - * @return void - */ - void FinishParsingL(); - - private: - - /** - * C++ constructor is private - * @return CXdmXmlParser - */ - CXdmXmlParser(); - - /** - * Second-phase constructor - * @return void - */ - void ConstructL(); - - #ifdef _DEBUG - - /** - * Return the current system time - * @return TInt Current system time in integer format - */ - static TInt TimeL(); - - /** - * Write the formatted document to the log folder - * @param HBufC8* Pointer to the data segment - * @return void - */ - void DumpDocumentL( HBufC8* aDocData ); - - #endif - - private: //Data - - TInt iDumpIndex; - TPtr8 iXmlDocument; - CParser* iXmlParser; - CXdmLogWriter* iLogWriter; - CXmlFormatter* iXmlFormatter; - TRequestStatus* iClientStatus; - CXdmXmlContentHandler* iContentHandler; - }; - -#endif //__XDMXMLPARSER__ - - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/inc/XmlFormatter.h --- a/xdmprotocols/XdmXmlParser/inc/XmlFormatter.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,212 +0,0 @@ -/* -* Copyright (c) 2005 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: CXmlFormatter -* -*/ - - - - -#ifndef __XMLFORMATTER__ -#define __XMLFORMATTER__ - -// INCLUDES -#include -#include "XmlParserNodePath.h" -#include "XmlNodePathInterface.h" - -//Konsts -_LIT8( KXmldocumentStart, "\n" ); - -//Forwar declarations -class CXdmDocument; -class CXdmXmlParser; -class CXdmDocumentNode; -class MXdmNodeInterface; -class CXmlParserNodePath; - -// CLASS DECLARATION -NONSHARABLE_CLASS( CXmlFormatter ) : public CBase, - public MXmlNodePathInterface - { - public: // Constructors and destructor - - /** - * Symbian OS Constructor - * @return CXmlFormatter* New XML formatter - */ - static CXmlFormatter* NewL( CXdmXmlParser& aParserMain ); - - /** - * Format a document - * @param TBool Indicates whether parameter is a whole document - * @param CXdmDocument* The target document - * @param CXdmDocumentNode* The target element - * @return HBufC8* The document in textual form - */ - HBufC8* FormatLC( TBool aIsWholeDocument, - const CXdmDocument* aDocument, - const CXdmDocumentNode* aRootNode ); - - /** - * Format a document - * @param TDesC8& An XML fragment to append - * @param CXdmDocument* The target document - * @param CXdmDocumentNode* The target element - * @return HBufC8* The document in textual form - */ - HBufC8* FormatLC( const TDesC8& aXmlFragment, - const CXdmDocument* aDocument, - const CXdmDocumentNode* aTargetNode ); - - /** - * Destructor - */ - virtual ~CXmlFormatter(); - - private: //From MXmlParserNodePathInterface - - /** - * Return the target attribute - * @return CXdmNodeAttribute* target attribute - */ - CXdmNodeAttribute* TargetAttribute() const; - - private: - - /** - * C++ constructor - * @return CXmlFormatter - */ - CXmlFormatter( CXdmXmlParser& aParserMain ); - - /** - * Symbian OS second-phase constructor - * @return void - */ - void ConstructL(); - - /** - * Read data from the format buffer into a contiguous segment - * @return HBufC8* An XML document in textual form - */ - HBufC8* BufferToStringLC(); - - /** - * Check the next element in a document - * @param CXdmDocumentNode& An XML element - * @return void - */ - void CheckSubsetPath( const CXdmDocumentNode& aNode ); - - /** - * Reset the internal format buffer - * @return void - */ - void ResetFormatBuffer(); - - /** - * Find the (local) name of an element - * @param TDesC8& The whole element string - * @return TPtrC8 Name part of the element string - */ - TPtrC8 FindElementName( const TDesC8& aElementString ); - - /** - * Format namespace declarations - * @param CXdmDocumentNode& An XML element - * @return MXdmNamespaceContainer& Namespace container - */ - void FormatNamespaceDeclarationsL( const CXdmDocumentNode& aRootNode, - const MXdmNamespaceContainer& aContainer ); - - /** - * Format the parameter element and its descendants - * @param CXdmDocumentNode The element to format - * @return void - */ - void FormatElementsL( CXdmDocumentNode* aCurrentNode ); - - /** - * Format a leaf element - * @param CXdmDocumentNode The element to format - * @return void - */ - void FormatLeafElementL( CXdmDocumentNode* aCurrentNode ); - - /** - * Format the start of the parameter element - * @param TDesC8& Element prefix - * @param TDesC8& Element URI - * @return void - */ - void FormatElementStartL( const TDesC8& aPrefix, - const TDesC8& aElementData ); - - /** - * Format the end of the parameter element - * @param TDesC8& Element prefix - * @param TDesC8& Element URI - * @return void - */ - void FormatElementEndL( const TDesC8& aPrefix, - const TDesC8& aElementData ); - - /** - * Format an empty element - * @param CXdmDocumentNode The element to format - * @return void - */ - void FormatEmptyElementL( CXdmDocumentNode* aEmptyNode ); - - - /** - * Append a namespace mapping - * @param TDesC8& Element URI - * @param TDesC8& Element prefix - * @return void - */ - void AppendNamespaceL( const TDesC8& aUri, const TDesC8& aPrefix ); - - /** - * Append XML fragment into the format buffer - * @return void - */ - void AppendXmlFragmentL(); - - /** - * Return the prefix of the parameter element - * @param MXdmNodeInterface& An XML element - * @return TPtrC8 Prefix - */ - TPtrC8 Prefix( const MXdmNodeInterface& aInterface ); - - private: //Data - - TInt iFormBufferPos; - TBool iTargetFound; - TBool iIsAppended; - CBufSeg* iFormatBuffer; - TPtrC8 iDocumentFragment; - CXdmXmlParser& iParserMain; - CXdmNodeAttribute* iTargetAttribute; - CXmlParserNodePath* iNodePath; - TXdmElementType iElementType; - - }; - -#endif //__XMLPARSERNODEPATH__ - - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/inc/XmlNodePathInterface.h --- a/xdmprotocols/XdmXmlParser/inc/XmlNodePathInterface.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2005 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: MXmlNodePathInterface -* -*/ - - - - -#ifndef __XMLNODEPATHINTERFACE__ -#define __XMLNODEPATHINTERFACE__ - -// INCLUDES -#include - -class CXdmNodeAttribute; - -// CLASS DECLARATION -NONSHARABLE_CLASS( MXmlNodePathInterface ) - { - public: - - /** - * Copies the request data - * @param aRequestData Data to be sent - */ - virtual CXdmNodeAttribute* TargetAttribute() const = 0; - }; - -#endif //__XMLPARSERNODEPATH__ - - -// End of File diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/inc/XmlParserDefines.h --- a/xdmprotocols/XdmXmlParser/inc/XmlParserDefines.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2005 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: XmlParserDefines -* -*/ - - - - -#ifndef __XMLPARSERDEFINES__ -#define __XMLPARSERDEFINES__ - -// INCLUDES -#include - -_LIT8( KEquelsSignString, "=" ); -_LIT8( KQuotationSignString, "\"" ); -_LIT8( KSlashString, "/" ); -_LIT8( KCommentString, "