blob: 5190b9b9a0dc5b75ae7f6b79bbd4ff615dcdfbca [file] [log] [blame]
/*
* $Header: /cvshome/build/org.osgi.service.wireadmin/src/org/osgi/service/wireadmin/WireConstants.java,v 1.10 2006/07/11 00:54:10 hargrave Exp $
*
* Copyright (c) OSGi Alliance (2002, 2006). All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.osgi.service.wireadmin;
/**
* Defines standard names for <code>Wire</code> properties, wire filter
* attributes, Consumer and Producer service properties.
*
* @version $Revision: 1.10 $
*/
public interface WireConstants {
/**
* <code>Wire</code> property key (named <code>wireadmin.pid</code>) specifying
* the persistent identity (PID) of this <code>Wire</code> object.
*
* <p>
* Each <code>Wire</code> object has a PID to allow unique and persistent
* identification of a specific <code>Wire</code> object. The PID must be
* generated by the {@link WireAdmin} service when the <code>Wire</code>
* object is created.
*
* <p>
* This wire property is automatically set by the Wire Admin service. The
* value of the property must be of type <code>String</code>.
*/
public final static String WIREADMIN_PID = "wireadmin.pid";
/**
* A service registration property for a Producer service that is composite.
* It contains the names of the composite Consumer services it can
* inter-operate with. Inter-operability exists when any name in this array
* matches any name in the array set by the Consumer service. The type of
* this property must be <code>String[]</code>.
*/
public final static String WIREADMIN_PRODUCER_COMPOSITE = "wireadmin.producer.composite";
/**
* A service registration property for a Consumer service that is composite.
* It contains the names of the composite Producer services it can cooperate
* with. Inter-operability exists when any name in this array matches any
* name in the array set by the Producer service. The type of this property
* must be <code>String[]</code>.
*/
public final static String WIREADMIN_CONSUMER_COMPOSITE = "wireadmin.consumer.composite";
/**
* Service registration property key (named
* <code>wireadmin.producer.scope</code>) specifying a list of names that may
* be used to define the scope of this <code>Wire</code> object. A Producer
* service should set this service property when it can produce more than
* one kind of value. This property is only used during registration,
* modifying the property must not have any effect of the <code>Wire</code>
* object's scope. Each name in the given list mist have
* <code>WirePermission[name,PRODUCE]</code> or else is ignored. The type of
* this service registration property must be <code>String[]</code>.
*
* @see Wire#getScope
* @see #WIREADMIN_CONSUMER_SCOPE
*/
public final static String WIREADMIN_PRODUCER_SCOPE = "wireadmin.producer.scope";
/**
* Service registration property key (named
* <code>wireadmin.consumer.scope</code>) specifying a list of names that may
* be used to define the scope of this <code>Wire</code> object. A
* <code>Consumer</code> service should set this service property when it can
* produce more than one kind of value. This property is only used during
* registration, modifying the property must not have any effect of the
* <code>Wire</code> object's scope. Each name in the given list mist have
* <code>WirePermission[name,CONSUME]</code> or else is ignored. The type of this
* service registration property must be <code>String[]</code>.
*
* @see Wire#getScope
* @see #WIREADMIN_PRODUCER_SCOPE
*/
public final static String WIREADMIN_CONSUMER_SCOPE = "wireadmin.consumer.scope";
/**
* Matches all scope names.
*/
public final static String WIREADMIN_SCOPE_ALL[] = {"*"};
/**
* <code>Wire</code> property key (named <code>wireadmin.producer.pid</code>)
* specifying the <code>service.pid</code> of the associated Producer service.
*
* <p>
* This wire property is automatically set by the WireAdmin service. The
* value of the property must be of type <code>String</code>.
*/
public final static String WIREADMIN_PRODUCER_PID = "wireadmin.producer.pid";
/**
* <code>Wire</code> property key (named <code>wireadmin.consumer.pid</code>)
* specifying the <code>service.pid</code> of the associated Consumer service.
*
* <p>
* This wire property is automatically set by the Wire Admin service. The
* value of the property must be of type <code>String</code>.
*/
public final static String WIREADMIN_CONSUMER_PID = "wireadmin.consumer.pid";
/**
* <code>Wire</code> property key (named <code>wireadmin.filter</code>)
* specifying a filter used to control the delivery rate of data between the
* Producer and the Consumer service.
*
* <p>
* This property should contain a filter as described in the <code>Filter</code>
* class. The filter can be used to specify when an updated value from the
* Producer service should be delivered to the Consumer service. In many
* cases the Consumer service does not need to receive the data with the
* same rate that the Producer service can generate data. This property can
* be used to control the delivery rate.
* <p>
* The filter can use a number of pre-defined attributes that can be used to
* control the delivery of new data values. If the filter produces a match
* upon the wire filter attributes, the Consumer service should be notifed
* of the updated data value.
* <p>
* If the Producer service was registered with the
* {@link #WIREADMIN_PRODUCER_FILTERS} service property indicating that the
* Producer service will perform the data filtering then the <code>Wire</code>
* object will not perform data filtering. Otherwise, the <code>Wire</code>
* object must perform basic filtering. Basic filtering includes supporting
* the following standard wire filter attributes:
* <ul>
* <li>{@link #WIREVALUE_CURRENT}- Current value
* <li>{@link #WIREVALUE_PREVIOUS}- Previous value
* <li>{@link #WIREVALUE_DELTA_ABSOLUTE}- Absolute delta
* <li>{@link #WIREVALUE_DELTA_RELATIVE}- Relative delta
* <li>{@link #WIREVALUE_ELAPSED}- Elapsed time
* </ul>
*
* @see org.osgi.framework.Filter
*/
public final static String WIREADMIN_FILTER = "wireadmin.filter";
/* Wire filter attribute names. */
/**
* <code>Wire</code> object's filter attribute (named
* <code>wirevalue.current</code>) representing the current value.
*/
public final static String WIREVALUE_CURRENT = "wirevalue.current";
/**
* <code>Wire</code> object's filter attribute (named
* <code>wirevalue.previous</code>) representing the previous value.
*/
public final static String WIREVALUE_PREVIOUS = "wirevalue.previous";
/**
* <code>Wire</code> object's filter attribute (named
* <code>wirevalue.delta.absolute</code>) representing the absolute delta.
* The absolute (always positive) difference between the last update and the
* current value (only when numeric). This attribute must not be used when
* the values are not numeric.
*/
public final static String WIREVALUE_DELTA_ABSOLUTE = "wirevalue.delta.absolute";
/**
* <code>Wire</code> object's filter attribute (named
* <code>wirevalue.delta.relative</code>) representing the relative delta.
* The relative difference is |<code>previous</code>-<code>current</code> |/|
* <code>current</code>| (only when numeric). This attribute must not be used
* when the values are not numeric.
*/
public final static String WIREVALUE_DELTA_RELATIVE = "wirevalue.delta.relative";
/**
* <code>Wire</code> object's filter attribute (named
* <code>wirevalue.elapsed</code>) representing the elapsed time, in ms,
* between this filter evaluation and the last update of the
* <code>Consumer</code> service.
*/
public final static String WIREVALUE_ELAPSED = "wirevalue.elapsed";
/* Service registration property key names. */
/**
* Service Registration property (named <code>wireadmin.producer.filters</code>).
* A <code>Producer</code> service registered with this property indicates to
* the Wire Admin service that the Producer service implements at least the
* filtering as described for the {@link #WIREADMIN_FILTER} property. If the
* Producer service is not registered with this property, the <code>Wire</code>
* object must perform the basic filtering as described in
* {@link #WIREADMIN_FILTER}.
*
* <p>
* The type of the property value is not relevant. Only its presence is
* relevant.
*/
public final static String WIREADMIN_PRODUCER_FILTERS = "wireadmin.producer.filters";
/**
* Service Registration property (named <code>wireadmin.consumer.flavors</code>)
* specifying the list of data types understood by this Consumer service.
*
* <p>
* The Consumer service object must be registered with this service
* property. The list must be in the order of preference with the first type
* being the most preferred. The value of the property must be of type
* <code>Class[]</code>.
*/
public final static String WIREADMIN_CONSUMER_FLAVORS = "wireadmin.consumer.flavors";
/**
* Service Registration property (named <code>wireadmin.producer.flavors</code>)
* specifying the list of data types available from this Producer service.
*
* <p>
* The Producer service object should be registered with this service
* property.
*
* <p>
* The value of the property must be of type <code>Class[]</code>.
*/
public final static String WIREADMIN_PRODUCER_FLAVORS = "wireadmin.producer.flavors";
/**
* Service Registration property (named <code>wireadmin.events</code>)
* specifying the <code>WireAdminEvent</code> type of interest to a Wire Admin
* Listener service. The value of the property is a bitwise OR of all the
* <code>WireAdminEvent</code> types the Wire Admin Listener service wishes to
* receive and must be of type <code>Integer</code>.
*
* @see WireAdminEvent
*/
public final static String WIREADMIN_EVENTS = "wireadmin.events";
}