/**
* File: MapStringSet.idl
* Content: CORBA specification of a map containing pairs<String, SetMemberInfo>
* Author: LuisM Pena
* Date: 17th November 2001
* Version: 0.29.00
*
**/
#ifndef MAP_STRING_SET
#define MAP_STRING_SET
#include "SetMemberInfo.idl"
module sensei
{
module middleware
{
module gmns
{
//bringing some declarations into scope ...
typedef sensei::middleware::domains::SubgroupId SubgroupId;
exception InvalidSetMemberInfo{};
/***********************************************************************/
/************************* MAP STRING SET OBSERVER *********************/
/***********************************************************************/
interface MapStringSetObservable;
/**
* Interface to be implemented by observers of the state of the MapStringSet
*/
interface MapStringSetObserver
{
void clearDone(in MapStringSetObservable observable);
void putDone(in MapStringSetObservable observable, in string groupName, in SetMemberInfo set);
void removeDone(in MapStringSetObservable observable, in string groupName, in SetMemberInfo set);
};
/***********************************************************************/
/************************* MAP STRING SET OBSERVABLE *******************/
/***********************************************************************/
interface MapStringSetObservable
{
void addObserver(in MapStringSetObserver observer);
boolean removeObserver(in MapStringSetObserver observer);
};
/***********************************************************************/
/************************* MAP STRING SET ******************************/
/***********************************************************************/
typedef sequence<string> stringList;
/**
* This interfaces defines a map with reduced operations.
* And it is mean to contain just pairs with key=strings and value=SetGroupHandler
**/
interface MapStringSet : ExtendedCheckpointable, MapStringSetObservable
{
/**
* Associates the specified value with the specified key in this map.
* If the map previously contained a mapping for this key, the old value is replaced
*/
SetMemberInfo put(in string groupName, in SetMemberInfo set)
raises (InvalidSetMemberInfo, sensei::middleware::domains::MemberStateException);
/**
* Removes the specified element from this set if it is present.
* @returns previous value associated with specified key, or null if there was no mapping for key
**/
SetMemberInfo remove(in string groupName) raises (sensei::middleware::domains::MemberStateException);
/**
* Returns the associated value, given the key
**/
SetMemberInfo get(in string groupName) raises (sensei::middleware::domains::MemberStateException);
/**
* Returns the keys of the set
*/
stringList getKeys() raises (sensei::middleware::domains::MemberStateException);
};
/***********************************************************************/
/************************* MAP STRING PUT MESSAGE **********************/
/***********************************************************************/
valuetype MapStringSetPutMessage : DomainMessage
{
public string key;
public SubgroupId value; //it's sent the subgroup, not the replicated object itself
};
/***********************************************************************/
/************************* MAP STRING REMOVE MESSAGE *******************/
/***********************************************************************/
valuetype MapStringSetRemoveMessage : DomainMessage
{
public string key;
};
/***********************************************************************/
/************************* MAP STATE **********************************/
/***********************************************************************/
struct MapStringSetEntry
{
string key;
SubgroupId value;
};
valuetype MapStringSetState : State
{
public sequence<MapStringSetEntry> groups;
};
};
};
};
#endif