103 lines
2.4 KiB
Plaintext

/*
* COSS Naming
*/
#pragma prefix "omg.org"
module CosNaming
{
typedef string Istring;
struct NameComponent {
Istring id;
Istring kind;
};
typedef sequence <NameComponent> Name;
enum BindingType {nobject, ncontext};
struct Binding {
Name binding_name;
BindingType binding_type;
};
typedef sequence <Binding> BindingList;
interface BindingIterator;
interface NamingContext {
enum NotFoundReason { missing_node, not_context, not_object};
exception NotFound {
NotFoundReason why;
Name rest_of_name;
};
exception CannotProceed {
NamingContext cxt;
Name rest_of_name;
};
exception InvalidName{};
exception AlreadyBound {};
exception NotEmpty{};
void bind(in Name n, in Object obj)
raises(NotFound, CannotProceed,
InvalidName, AlreadyBound);
void rebind(in Name n, in Object obj)
raises(NotFound, CannotProceed,
InvalidName);
void bind_context(in Name n, in NamingContext nc)
raises(NotFound, CannotProceed,
InvalidName, AlreadyBound);
void rebind_context(in Name n, in NamingContext nc)
raises(NotFound, CannotProceed,
InvalidName);
Object resolve (in Name n)
raises(NotFound, CannotProceed,
InvalidName);
void unbind(in Name n)
raises(NotFound, CannotProceed,
InvalidName);
NamingContext new_context();
NamingContext bind_new_context(in Name n)
raises(NotFound, AlreadyBound,
CannotProceed, InvalidName);
void destroy( )
raises(NotEmpty);
void list (in unsigned long how_many,
out BindingList bl,
out BindingIterator bi);
};
interface BindingIterator {
boolean next_one(out Binding b);
boolean next_n(in unsigned long how_many,
out BindingList bl);
void destroy();
};
interface NamingContextExt : NamingContext {
typedef string StringName;
typedef string Address;
typedef string URLString;
StringName to_string (in Name n)
raises(InvalidName);
Name to_name (in StringName sn)
raises(InvalidName);
exception InvalidAddress {};
URLString to_url (in Address addr, in StringName sn)
raises (InvalidAddress, InvalidName);
Object resolve_str (in StringName n)
raises (NotFound, CannotProceed,
InvalidName, AlreadyBound);
};
};