Archived:Using RProperty for publishing
hamishwillee
(Talk | contribs) m (Removed protection from "CS000908 - Publish and Subscribe: Using RProperty for publishing": Merging into Wiki) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Adding missing translation link) |
||
| (7 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| − | + | [[Category:Symbian C++]][[Category:Files/Data]][[Category:Code Snippet]] | |
| − | [[Category:Symbian C++ | + | |
{{ArticleMetaData <!-- v1.2 --> | {{ArticleMetaData <!-- v1.2 --> | ||
|sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) --> | |sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) --> | ||
| Line 6: | Line 5: | ||
|devices= Nokia N93 | |devices= Nokia N93 | ||
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> | |sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> | ||
| − | |platform= S60 3rd Edition | + | |platform= S60 3rd Edition FP1 and later |
|devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> | |devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> | ||
|dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> | |dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> | ||
| Line 23: | Line 22: | ||
|author= [[User:Aknyman]] | |author= [[User:Aknyman]] | ||
<!-- The following are not in current metadata --> | <!-- The following are not in current metadata --> | ||
| − | |||
|id= CS000908 | |id= CS000908 | ||
}} | }} | ||
| Line 29: | Line 27: | ||
==Overview== | ==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. | + | {{Abstract|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 {{Icode|RProperty::Set()}} function. This means that the value of the property is updated. Whenever a property is published, all outstanding subscriptions are completed. | A property is published using the {{Icode|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 [[ | + | The code snippet [[Archived: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 {{Icode|ExampleProperties.h}}. |
<code cpp> | <code cpp> | ||
| Line 151: | Line 149: | ||
==See also== | ==See also== | ||
| − | [[ | + | [[Using RProperty for subscribing]] |
| + | |||
| + | {{VersionHint}} | ||
| + | [[Category:S60 3rd Edition FP1]] [[Category:S60 3rd Edition FP2]] | ||
| + | [[Category:S60 5th Edition]] | ||
| + | [[Category:Symbian^3]] [[Category:Symbian Anna]] [[Category:Nokia Belle]] | ||
| + | <!-- Translation --> [[zh-hans:Publish及Subscribe:使用RProperty进行publish操作]] | ||
Latest revision as of 08:58, 18 September 2012
Article Metadata
Tested with
Compatibility
Article
Contents |
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 Archived: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.

