Archived:Using RProperty for publishing
| Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
__NOEDITSECTION__ | __NOEDITSECTION__ | ||
| − | + | {{KBCS}} | |
{|style="background:#eceff2" width="660px" border="1" cellpadding="5" cellspacing="0" | {|style="background:#eceff2" width="660px" border="1" cellpadding="5" cellspacing="0" | ||
|- | |- | ||
| − | |'''ID''' || | + | |'''ID''' || CS000908 |
| − | |'''Creation date''' || April | + | |'''Creation date''' || April 22, 2008 |
|- | |- | ||
|'''Platform''' || S60 3rd Edition, FP1 | |'''Platform''' || S60 3rd Edition, FP1 | ||
| Line 22: | Line 22: | ||
==Overview== | ==Overview== | ||
| − | This snippet shows how the class RProperty can be used to publish user defined properties with Symbian's IPC Publish and Subscribe mechanism. | + | This code snippet shows how the class RProperty can be used to publish user-defined properties with Symbian's IPC Publish and Subscribe mechanism. |
| − | A property is published using the RProperty::Set() function. This means that the value of property is updated. Whenever a property is published, all outstanding subscriptions are completed. | + | A property is published using the <tt>RProperty::Set()</tt> function. This means that the value of the property is updated. Whenever a property is published, all outstanding subscriptions are completed. |
| − | + | The code snippet [[CS000909 - Publish and Subscribe: Using RProperty for subscribing]] shows how to subscribe these user-defined properties. The property definitions are shared between a publisher and a subscriber through the common header file <tt>ExampleProperties.h</tt>. | |
<code cpp> | <code cpp> | ||
| Line 51: | Line 51: | ||
==Preconditions== | ==Preconditions== | ||
| − | The publisher or the subscriber thread can be the one to define properties | + | The publisher or the subscriber thread can be the one to define properties by calling <tt>RProperty::Define()</tt>. The user-defined properties persist in the kernel until the operating system reboots or the properties are deleted. |
<code cpp> | <code cpp> | ||
| Line 124: | Line 124: | ||
Two example properties are published using the class RProperty. | Two example properties are published using the class RProperty. | ||
| − | If the publisher thread | + | If the publisher thread has defined the properties, it is also capable of deleting properties by using <tt>RProperty::Delete()</tt> as follows: |
<code cpp> | <code cpp> | ||
| Line 144: | Line 144: | ||
==See also== | ==See also== | ||
| − | [[Publish and Subscribe: Using RProperty for subscribing]] | + | [[CS000909 - Publish and Subscribe: Using RProperty for subscribing]] |
[[Category:Symbian C++]][[Category:Code Examples]][[Category:Files/Data]] | [[Category:Symbian C++]][[Category:Code Examples]][[Category:Files/Data]] | ||
| + | [[Category:S60 3rd Edition]] | ||
Revision as of 09:26, 22 April 2008
| ID | CS000908 | Creation date | April 22, 2008 |
| Platform | S60 3rd Edition, FP1 | Tested on devices | Nokia N93 |
| Category | Symbian C++ | Subcategory | Files/Data |
| Keywords (APIs, classes, methods, functions): RProperty, RProperty::Define(), RProperty::Delete(), RProperty::Attach(), RProperty::Set(), RProperty::Close() |
Overview
This code snippet shows how the class RProperty can be used to publish user-defined properties with Symbian's IPC Publish and Subscribe mechanism.
A property is published using the RProperty::Set() function. This means that the value of the property is updated. Whenever a property is published, all outstanding subscriptions are completed.
The code snippet CS000909 - Publish and Subscribe: Using RProperty for subscribing shows how to subscribe these user-defined properties. The property definitions are shared between a publisher and a subscriber through the common header file ExampleProperties.h.
#ifndef EXAMPLEPROPERTIES_H_
#define EXAMPLEPROPERTIES_H_
const TInt KMaxStrLen = 10;
const TUid KExampleProperty = {0xED1917A8};
enum TExamplePropertyKeys { EIntProperty, EStrProperty };
#endif /*EXAMPLEPROPERTIES_H_*/
This snippet can be self-signed.
MMP file
The following libraries are required:
LIBRARY euser.lib
Preconditions
The publisher or the subscriber thread can be the one to define properties by calling RProperty::Define(). The user-defined properties persist in the kernel until the operating system reboots or the properties are deleted.
TInt ret=RProperty::Define(KExampleProperty,EIntProperty,RProperty::EInt);
if (ret != KErrAlreadyExists)
{
User::LeaveIfError(ret);
}
ret= RProperty::Define(KExampleProperty,EStrProperty,RProperty::EByteArray,KMaxStrLen);
if (ret != KErrAlreadyExists)
{
User::LeaveIfError(ret);
}
Source file
#include <e32base.h>
#include <e32property.h>
#include "exampleproperties.h"
LOCAL_C void SetExamplePropertiesL()
{
TInt err(KErrNone);
// Use handle to publish EIntProperty
RProperty intProperty;
err = intProperty.Attach(KExampleProperty, EIntProperty, EOwnerThread);
User::LeaveIfError(err);
err = intProperty.Set(123);
User::LeaveIfError(err);
intProperty.Close();
// Use category and key to publish EStrProperty
err=RProperty::Set(KExampleProperty,EStrProperty,_L("321"));
User::LeaveIfError(err);
}
// Global Functions
GLDEF_C TInt E32Main()
{
// Create cleanup stack
__UHEAP_MARK;
CTrapCleanup* cleanup = CTrapCleanup::New();
// Run application code inside TRAP harness
TRAPD(mainError, SetExamplePropertiesL());
if (mainError)
{
//SetExamplePropertiesL leaves...
}
else
{
//Properties updated ok
}
delete cleanup;
__UHEAP_MARKEND;
return KErrNone;
}
Postconditions
Two example properties are published using the class RProperty.
If the publisher thread has defined the properties, it is also capable of deleting properties by using RProperty::Delete() as follows:
TInt err(KErrNone);
err = RProperty::Delete(KExampleProperty,EIntProperty);
if (err != KErrNotFound)
{
User::LeaveIfError(err);
}
err = RProperty::Delete(KExampleProperty,EStrProperty);
if (err != KErrNotFound)
{
User::LeaveIfError(err);
}
When properties are deleted, any outstanding subscriptions will be completed with KErrNotFound.
See also
CS000909 - Publish and Subscribe: Using RProperty for subscribing

