diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/publishspec_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/publishspec_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +0,0 @@ - -
-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 speculative publishing pattern of a byte-array property -00015 // -00016 -00017 -00018 -00023 #include "publish.h" -00024 -00025 LOCAL_D CConsoleBase* console; -00026 -00032 void PublishL(RProperty& aProperty,TDes16& aBuf) -00033 { -00034 TInt bufLength = aBuf.Length(); -00035 console->Printf(KTxtPublish); -00036 -00037 // Publish the property and handle the value returned appropriately -00038 // Ignore the KErrNotFound error -00039 TInt err = aProperty.Set(aBuf); -00040 switch(err) -00041 { -00042 // No error, property is defined -00043 case KErrNone: -00044 { -00045 // Print array elements -00046 console->Printf(KTxtArray); -00047 for(TInt ix = 0; ix < bufLength; ix++) -00048 { -00049 console->Printf(KTxtArrayElement,aBuf[ix]); -00050 } -00051 console->Printf(KTxtNewLine); -00052 } -00053 break; -00054 // Property is not defined, ignore this error -00055 case KErrNotFound: -00056 { -00057 console->Printf(KTxtNotFound); -00058 } -00059 break; -00060 // Leave if any other errors are returned -00061 default: -00062 { -00063 User::LeaveIfError(err); -00064 } -00065 } -00066 } -00067 -00068 void DoExampleL() -00069 { -00070 console->Printf(KTxtSpecPublish); -00071 -00072 RProperty myProperty; -00073 console->Printf(KTxtCreateHandle); -00074 // Create a handle to the property -00075 User::LeaveIfError(myProperty.Attach(KMyPropertyCat,KMyPropertyName,EOwnerThread)); -00076 -00077 // Byte-Array to be published -00078 TUint16 array[KArraySize] = {10,20,30,40}; -00079 -00080 // Descriptor that the array contents are copied into -00081 TBuf16<KBufSize> buf; -00082 -00083 // Copy array contents into the descriptor -00084 buf.Copy(&array[0],sizeof(array)); -00085 buf.SetLength(KArraySize); -00086 -00087 // Publish the property -00088 PublishL(myProperty,buf); -00089 -00090 // Change the array contents -00091 array[0] = 0x00ab; -00092 array[1] = 0x00bc; -00093 array[2] = 0x00cd; -00094 array[3] = 0x00de; -00095 array[4] = 0x00ef; -00096 array[5] = 0x00fa; -00097 -00098 // Copy array contents into the descriptor -00099 buf.Copy(&array[0],sizeof(array)); -00100 buf.SetLength(KArraySize); -00101 console->Printf(KTxtEnter); -00102 -00103 // Wait for a key press -00104 while(console->Getch()!= EKeyEnter) -00105 { -00106 console->Printf(KTxtEnter); -00107 } -00108 -00109 // Publish the property -00110 PublishL(myProperty,buf); -00111 -00112 // Indicate the publisher will not publish any more values -00113 buf.Copy(KStop); -00114 console->Printf(KTxtEnter); -00115 -00116 // Wait for a key press -00117 while(console->Getch()!= EKeyEnter) -00118 { -00119 console->Printf(KTxtEnter); -00120 } -00121 -00122 // Publish the property -00123 PublishL(myProperty,buf); -00124 -00125 // Close the handle -00126 myProperty.Close(); -00127 } -00128 -00129 GLDEF_C TInt E32Main() -00130 { -00131 __UHEAP_MARK; -00132 CTrapCleanup* cleanup = CTrapCleanup::New(); -00133 -00134 TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen,KConsFullScreen))); -00135 if (createError) -00136 return createError; -00137 -00138 TRAPD(mainError, DoExampleL()); -00139 if (mainError) -00140 console->Printf(KTextFailed, mainError); -00141 console->Printf(KTextPressAnyKey); -00142 console->Getch(); -00143 -00144 delete console; -00145 delete cleanup; -00146 __UHEAP_MARKEND; -00147 return KErrNone; -00148 } -