The functionality provided by System Agent has been replaced by Publish & Subscribe, which is now the recommended way of setting and retrieving global information and for requesting notification when such global values are published.
This section deals with some of the issues relating to the migration.
Identify and mark all references to System Agent APIs. These will
be replaced with references to the RProperty
class.
Properties are defined, retrieved, published etc. through member functions of
this class.
Replace System Agent header files with the single header file
e32property.h
. This is where the RProperty
class is declared.
To define a property, which is equivalent to the original System
Agent property, call RProperty::Define()
, and
specify:
the UID of the category
the property's UID as the "aKey" parameter
RProperty::EInt
as the "aAttr"
parameter
System agent initialises the created property with the value
KErrUnknown
. Clients can emulate this or choose a different
value.
To get the property value, use the
RProperty::Get()
member function.
To set the property value, use
RProperty::Set()
member function.
To delete a property, use
RProperty::Delete()
supplying the same category UID and
key as was supplied when the property was defined.
Clients wishing to emulate System Agent exactly to support their own
clients who may have already migrated to Publish & Subscribe in an earlier
release, and who may be using a property category UID of
KUidSystemCategory
, will need to have ReadDeviceData
& WriteDeviceData
capabilities assigned to their binaries and
their clients binaries to be able to access these system properties
A client makes a request for notification of changes to property
using RProperty::Subscribe()
and cancels a notification
request using RProperty::Cancel()
. There are some
important differences between the System Agent notification requests and
RProperty
notifications requests:
Publish & Subscribe will always notify the
client when they or some other client calls
RProperty::Set()
on monitored property, even if the
property value has not changed.
The RProperty
class does not support
conditional notification, as represented by the System Agent
TSysAgentConditionType
enum. The migrating client will need to
implement this feature itself.
System Agent offers functionality to get and set an array of
properties, but RProperty
does not provide this
functionality.
To speed up the getting and setting of a property's values use
RProperty::Attach()
and the instance based (non-static)
Get()
and Set()
member functions.