Inline
Dmitry Yershov wrote:
[snip]
VM properties proposal
======================
The general purpose of VM Properties subcomponent is to provide
centralized access to a common properties table. A property is meant
as a pair of <key> and <value>. The properties stored in VM Properties
table represent configuration settings for a separate component (such
as VMCore, GC, JIT etc) or for the whole system. Another use case for
the properties is communication between different components.
Requirements
============
1) The <key> and <value> are represented as string (i.e. char*).
and I propose that on each operation, a copy is made, so that the caller
frees the string that they got or gave.
2) NULL values are allowed.
3) VM Properties subcomponent exports its interface as part of VM
Core.
4) There are two kind of properties
* Public properties are properties visible both to all VM
components and to Java applications (by means of
java.lang.System.getProperties() method).
* Hidden properties are used for VM components communication
only, not accessible from Java side.
5) There is a way to set hidden properties through non standard
command line option ( -XDefine<key>=<value>).
6) There is a way to get a list of defined properties which keys
begin with a particular prefix.
7) Properties table should be thread safe.
VM Properties usage scenario
============================
Components can define properties and lookup them by name. When
setting the property it can be marked either public or hidden. A
property should be marked as hidden if it is intended internal usage
only. Public properties are supposed to be visible from Java side also.
In the same time it is possible to obtain a list of all public properties
to pass them to Java side.
Defined Interface functions
===========================
void set_property(const char * key, const char * value) - Sets the
public property. NULL values are supported.
void set_hidden_property(const char * key, const char * value) - Sets
the hidden property. NULL values are supported.
const char * get_property(const char * key) - Returns the value of the
property if it has been set by set_property function. Otherwise returns
NULL.
const char * get_hidden_property(const char * key) - Returns the value
of the property if it has been set by set_hidden_property function.
Otherwise returns NULL.
bool is_property_set(const char * key, bool hidden) - Checks if the
property is set.
void unset_property(const char * key, bool hidden) - Unsets the property.
char * * get_public_property_keys() - Returns an array of keys for all
public properties set.
char * * get_properties_staring_with(const char * prefix, bool hidden) -
Returns an array of keys for all properties set whose keys start with
the prefix specified.
1) if this is a C++ class, lets drop the word 'property'
2) Don't hardcode 'hidden' into the API, as we may have other types down
the road. Make it an argument
set( key, val, type )
get( key, type )
is_set(key)
unset(key)
get_keys(type)
....
------------------------------------------------------------------------
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]