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]

Reply via email to