×
Namespaces

Variants
Actions
(Difference between revisions)

Archived:Using RProperty for publishing

From Nokia Developer Wiki
Jump to: navigation, search
Forum Nokia KB (Talk | contribs)
Forum Nokia KB (Talk | contribs)
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 15, 2008
+
|'''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.
  
There is also an another snippet "Publish and Subscribe: Using RProperty for subscribing" to subscribe these user defined properties. The property definitions are shared between a publisher and a subscriber through the common header file ExampleProperties.h
+
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, by calling RProperty::Define(). The user defined properties persist in the kernel until the operating system reboots or the properties are deleted.
+
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 was the one that defined properties it is also capable of deleting properties by using the RProperty::Delete(), as follows:
+
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


Template:KBCS

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

134 page views in the last 30 days.
×