diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_wait_loop_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_wait_loop_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ - -
-00001 // Copyright (c) 2000-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 // Show asynchronous programming (without active objects) -00015 // Example shows how a wait loop can be used to identify how a -00016 // request completed and service its completion -00017 // -00018 -00019 -00020 #include "CommonFramework.h" -00021 #include <e32math.h> -00022 -00023 // -00024 // utility functions -00025 // -00026 -00027 LOCAL_D TInt64 smallRandSeed; -00028 -00029 LOCAL_C TInt smallRand() -00030 { -00031 // produce small random numbers in range 0..9 -00032 TInt bigResult=Math::Rand(smallRandSeed);// result uses full 32-bit range -00033 return bigResult % 10; // return result mod 10 -00034 } -00035 -00036 LOCAL_C void sleep(TInt aTenths) -00037 { -00038 // sleep for an interval measured in tenths of a second -00039 User::After(aTenths*100000); // just let the User function do it for us -00040 } -00041 -00042 -00043 // Do the example -00044 LOCAL_C void doExampleL() -00045 { -00046 // create and initialize heartbeat timer -00047 RTimer heartbeat; // heartbeat timer -00048 TRequestStatus heartbeatStatus; // request status associated with it -00049 heartbeat.CreateLocal(); // always created for this thread -00050 -00051 // issue first heartbeat request -00052 heartbeat.After(heartbeatStatus,1000000); // request completion -00053 // after 1 second -00054 TInt heartbeatTick=0; // counts heartbeat ticks -00055 -00056 // wait loop -00057 for (;;) -00058 { -00059 // wait for any request -00060 User::WaitForAnyRequest(); -00061 // find out which request completed, and handle it -00062 if (heartbeatStatus!=KRequestPending) -00063 { -00064 // heartbeat completed so service request -00065 _LIT(KMsgServicing,"Servicing heartbeat tick %d ...\n"); -00066 console->Printf(KMsgServicing,heartbeatTick); -00067 // take some time over it -00068 sleep(smallRand()); -00069 _LIT(KMsgServiced,"... heartbeat tick %d serviced\n"); -00070 console->Printf(KMsgServiced,heartbeatTick); -00071 // test whether processing should finish -00072 if (heartbeatTick >= 10) -00073 { -00074 // 10 heart-beats: processing finished -00075 _LIT(KMsgFinishing,"Finishing\n"); -00076 console->Printf(KMsgFinishing); -00077 // finish wait loop -00078 break; -00079 } -00080 // re-issue request -00081 heartbeatTick++; // increment tick -00082 // counter -00083 heartbeat.After(heartbeatStatus,1000000); // request completion -00084 // after another second -00085 } -00086 else -00087 { -00088 // stray signal -00089 _LIT(KMsgStraySignal,"Stray signal\n"); -00090 User::Panic(KMsgStraySignal, 1); // panic! -00091 } -00092 } -00093 -00094 // close timer -00095 heartbeat.Close(); // close timer -00096 } -