blob: b7ae11b9c5d504bd978b0ca1063251c130e77a56 [file] [log] [blame]
/* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
#ifndef __ETCHOBJECTSESSION_H__
#define __ETCHOBJECTSESSION_H__
#include "common/EtchObject.h"
/**
* Out-of-band query, control, and notification interface for sessions.
* This is exactly the same as EtchSession except the names are changed
* to prevent collisions with service defined names.
* @see EtchSession
*/
class EtchObjectSession
{
public:
virtual ~EtchObjectSession() {}
/**
* Gets a configuration or operational value from the handler. The
* request is passed up the chain of sessions until some session
* recognizes the query, whereupon it returns the requested value.
*
* @param query an object representing a query, which could be as
* simple as a string, integer, or enum, or more complex such as
* a class with instance variables for query terms.
*
* @param result the requested value, or null if not defined.
*/
virtual status_t _sessionQuery(capu::SmartPointer<EtchObject> query, capu::SmartPointer<EtchObject> &result ) = 0;
/**
* Sets a configuration or operational value in the session. The
* request is passed up the chain of sessions until some session
* recognizes the control, whereupon it stores the specified value
* and returns.
*
* @param control an object representing a control, which could be as
* simple as a string, integer, or enum, or more complex such as
* a class with instance variables for control terms.
*
* @param value the value to set.
*
*
*/
virtual status_t _sessionControl(capu::SmartPointer<EtchObject> control, capu::SmartPointer<EtchObject> value ) = 0;
/**
* Notifies the chain of sessions of the specified event. Unlike query
* and control operations above, events are always passed up to the
* top to allow all sessions to notice them.
*
* @param event a class which represents the event, possibly with
* parameters. The simplest event could be a string, integer,
* or enum, but any class instance will do (as long as some session
* in the chain expects it).
*
*/
virtual status_t _sessionNotify(capu::SmartPointer<EtchObject> event ) = 0;
};
#endif /*__ETCHOBJECTSESSION_H__*/