diff -r 89d6a7a84779 -r 25a17d01db0c Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_interface_client_8cpp-source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_interface_client_8cpp-source.html Fri Jan 22 18:26:19 2010 +0000 @@ -0,0 +1,144 @@ + + +TB10.1 Example Applications: examples/SysLibs/ECom/InterfaceClient/InterfaceClient.cpp Source File + + + + +

examples/SysLibs/ECom/InterfaceClient/InterfaceClient.cpp

00001 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+00002 // All rights reserved.
+00003 // This component and the accompanying materials are made available
+00004 // under the terms of "Eclipse Public License v1.0"
+00005 // which accompanies this distribution, and is available
+00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
+00007 //
+00008 // Initial Contributors:
+00009 // Nokia Corporation - initial contribution.
+00010 //
+00011 // Contributors:
+00012 //
+00013 // Description:
+00014 //
+00015 
+00016 #include <badesca.h>
+00017 
+00018 #include <interface.h>
+00019 
+00020 #include "CommonFramework.h"
+00021 #include "InterfaceClient.h"
+00022 
+00023 // Utility clean up function
+00024 void CleanupEComArray(TAny* aArray);
+00025 
+00026 // do the example
+00027 LOCAL_C void doExampleL()
+00028     {
+00029         _LIT(KText,"ECom client example\n\n");
+00030         console->Printf(KText);
+00031 
+00032         TInterfaceClient client;
+00033         client.GetDefaultL();
+00034         client.GetBySpecificationL();
+00035         client.GetByDiscoveryL();
+00036         
+00037         REComSession::FinalClose();
+00038         }
+00039 
+00040 void TInterfaceClient::GetDefaultL()
+00041         {
+00042         _LIT(KText,"Case 1: getting the default implementation\n");
+00043         console->Printf(KText);
+00044 
+00045         // Get the default implementation and call its method
+00046         CExampleInterface* ex1 = CExampleInterface::NewL();
+00047         CleanupStack::PushL(ex1);
+00048         TBuf<100> buf;
+00049         ex1 -> DoMethodL(buf);
+00050         CleanupStack::PopAndDestroy(); //ex1
+00051 
+00052         // Print results
+00053         console -> Printf(buf);
+00054         }
+00055 
+00056 void TInterfaceClient::GetBySpecificationL()
+00057         {
+00058         _LIT(KText,"\nCase 2: getting an implementation by specification\n");
+00059         console->Printf(KText);
+00060 
+00061         // Prepare data to pass to implementation
+00062         CExampleInterface::TExampleInterfaceInitParams p;
+00063         p.integer = 0;
+00064         _LIT(KMsg1,"Data in value: %d\n");
+00065         console -> Printf(KMsg1,p.integer);
+00066 
+00067         // Get the implementation that has a data identifier text/xml
+00068         _LIT8(KSpec,"text/xml");
+00069         CExampleInterface* ex1 = CExampleInterface::NewL(KSpec,p);
+00070         CleanupStack::PushL(ex1);
+00071         TBuf<100> buf;
+00072         ex1 -> DoMethodL(buf);
+00073         CleanupStack::PopAndDestroy(); //ex1
+00074 
+00075         // Print results
+00076         console -> Printf(buf);
+00077         _LIT(KMsg2,"Data out value: %d\n");
+00078         console -> Printf(KMsg2,p.integer);
+00079         }
+00080 
+00081 
+00082 void TInterfaceClient::GetByDiscoveryL()
+00083         {
+00084         _LIT(KText,"\nCase 3: getting all implementations\n");
+00085         console->Printf(KText);
+00086 
+00087         // Read info about all implementations into infoArray
+00088         RImplInfoPtrArray infoArray;
+00089         // Note that a special cleanup function is required to reset and destroy
+00090         // all items in the array, and then close it.
+00091         TCleanupItem cleanup(CleanupEComArray, &infoArray);
+00092         CleanupStack::PushL(cleanup);
+00093         CExampleInterface::ListAllImplementationsL(infoArray);
+00094 
+00095         // Loop through each info for each implementation
+00096         // and create and use each in turn
+00097         CExampleInterface* ex;
+00098         TBuf<255> buf;
+00099         for (TInt i=0; i< infoArray.Count(); i++)
+00100                 {
+00101                 // Slice off first sub-section in the data section
+00102                 TPtrC8 type = infoArray[i]->DataType();
+00103                 type.Set(type.Left(type.Locate('|')));
+00104                 // Need to convert narrow descriptor to be wide in order to print it
+00105                 buf.Copy(type);
+00106                 console -> Printf(buf);
+00107                 console -> Printf(_L(": "));
+00108 
+00109                 // Create object of type and call its function
+00110                 ex = CExampleInterface::NewL(type);
+00111                 CleanupStack::PushL(ex);
+00112                 ex -> DoMethodL(buf);
+00113                 CleanupStack::PopAndDestroy(); //ex
+00114 
+00115                 // Print results
+00116                 console -> Printf(buf); 
+00117                 
+00118                 ex = NULL;
+00119                 buf.Zero();
+00120                 }
+00121 
+00122         // Clean up
+00123         CleanupStack::PopAndDestroy(); //infoArray, results in a call to CleanupEComArray
+00124         }
+00125 
+00126 // CleanupEComArray function is used for cleanup support of locally declared arrays
+00127 void CleanupEComArray(TAny* aArray)
+00128         {
+00129         (static_cast<RImplInfoPtrArray*> (aArray))->ResetAndDestroy();
+00130         (static_cast<RImplInfoPtrArray*> (aArray))->Close();
+00131         }
+00132 
+

Generated on Thu Jan 21 10:33:00 2010 for TB10.1 Example Applications by  + +doxygen 1.5.3
+ +