diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/subscribepe_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/subscribepe_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,159 +0,0 @@ - - -TB10.1 Example Applications: examples/Base/IPC/pubsub/subscribepe.cpp Source File - - - - -

examples/Base/IPC/pubsub/subscribepe.cpp

Go to the documentation of this file.
00001 // Copyright (c) 2008-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 // Demonstrates the pure event pattern of subscribing to an integer property
-00015 //
-00016 
-00017 
-00018 
-00023 #include "subscribepe.h"
-00024 
-00025 LOCAL_D CConsoleBase* console;
-00026 
-00030 CIntPropertyWatch::CIntPropertyWatch():CActive(EPriority)
-00031         {
-00032         }
-00033 
-00038 void CIntPropertyWatch::ConstructL(CConsoleBase* aConsole)
-00039         {
-00040         User::LeaveIfError(iProperty.Attach(KMyPropertyCat,KMyPropertyName));
-00041         iConsole = aConsole;
-00042         CActiveScheduler::Add(this);
-00043         }
-00044 
-00050 CIntPropertyWatch* CIntPropertyWatch::NewL(CConsoleBase* aConsole)
-00051         {
-00052         CIntPropertyWatch* self = new (ELeave) CIntPropertyWatch;
-00053         CleanupStack::PushL(self);
-00054         self->ConstructL(aConsole);
-00055         CleanupStack::Pop(self);
-00056         return self;
-00057         }
-00058 
-00062 CIntPropertyWatch::~CIntPropertyWatch()
-00063         {
-00064         iProperty.Close();
-00065         Cancel();
-00066         }
-00067 
-00071 void CIntPropertyWatch::DoCancel()
-00072         {
-00073         iProperty.Cancel();
-00074         }
-00075 
-00080 void CIntPropertyWatch::RunL()
-00081         {
-00082         // Receive a notification when a value is published
-00083         // The RProperty::Get() function call can be omitted as the published value is of no importance in the pure event pattern
-00084         TInt value;
-00085         TInt err = iProperty.Get(value);
-00086         if (err == KErrNotFound)
-00087                 {
-00088                 // No need to re-subscribe to the property as it has been deleted by the publisher
-00089                 CActiveScheduler::Stop();
-00090                 }
-00091         else if (err == KErrNone)
-00092                 {
-00093                 // Print the value of the property
-00094                 PrintProperty(value);
-00095                 // Re-subscribe to the property
-00096                 IssueRequest();
-00097                 }
-00098         else
-00099                 {
-00100                 // Leave the function in case of any other error
-00101                 CActiveScheduler::Stop();
-00102                 User::Leave(err);
-00103                 }
-00104         }
-00105 
-00110 void CIntPropertyWatch::PrintProperty(TInt aValue)
-00111         {
-00112         iConsole->Printf(KTxtValChange,aValue);
-00113         }
-00114 
-00119 void CIntPropertyWatch::WatchL()
-00120         {
-00121         TInt value;
-00122         // Checks if the property exists
-00123         TInt res = iProperty.Get(value);
-00124         if (res == KErrNotFound)
-00125                 {
-00126                 // Property not defined
-00127                 User::Leave(res);
-00128                 }
-00129         // Prints the value of the property
-00130         // This is only to illustrate that the value of the property is set by the publisher
-00131         // This value has no significance as the pure event distribution pattern of publish and subscribe is being followed
-00132         PrintProperty(value);
-00133         IssueRequest();
-00134         }
-00135 
-00139 void CIntPropertyWatch::IssueRequest()
-00140         {
-00141         iProperty.Subscribe(iStatus);
-00142         SetActive();
-00143         }
-00144 
-00145 void DoExampleL()
-00146         {
-00147         CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
-00148         CleanupStack::PushL(scheduler);
-00149         CActiveScheduler::Install(scheduler);
-00150 
-00151         console->Printf(KTxtPESub);
-00152 
-00153         // Create the integer property watch active object
-00154         CIntPropertyWatch* obj = CIntPropertyWatch::NewL(console);
-00155         CleanupStack::PushL(obj);
-00156 
-00157         // Subscribe to the property and start the scheduler
-00158         obj->WatchL();
-00159         CActiveScheduler::Start();
-00160 
-00161         CleanupStack::PopAndDestroy(obj);
-00162         CleanupStack::PopAndDestroy(scheduler);
-00163         }
-00164 
-00165 GLDEF_C TInt E32Main()
-00166         {
-00167         __UHEAP_MARK;
-00168         CTrapCleanup* cleanup = CTrapCleanup::New();
-00169 
-00170         TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen,KConsFullScreen)));
-00171         if (createError)
-00172                 return createError;
-00173 
-00174         TRAPD(mainError, DoExampleL());
-00175         if (mainError)
-00176                 console->Printf(KTextFailed, mainError);
-00177         console->Printf(KTextPressAnyKey);
-00178         console->Getch();
-00179 
-00180         delete console;
-00181         delete cleanup;
-00182         __UHEAP_MARKEND;
-00183         return KErrNone;
-00184         }
-

Generated on Thu Jan 21 10:32:56 2010 for TB10.1 Example Applications by  - -doxygen 1.5.3
- -