mirror of
https://github.com/AdaCore/PolyORB.git
synced 2026-02-12 13:01:15 -08:00
Patch submitted by Vadim Godunko, reviewed by Jerome Hugues. [Imported from Perforce change 9097 at 2006-12-01 21:14:23] Subversion-branch: /trunk/polyorb Subversion-revision: 36631
140 lines
3.9 KiB
Plaintext
140 lines
3.9 KiB
Plaintext
//File: CosStream.idl
|
|
//Part of the Externalization Service
|
|
// Modified from version 1.0 to include the previous CosCompoundExternalization module
|
|
//OMG File: 98-10-12
|
|
|
|
#ifndef _COS_STREAM_IDL_
|
|
#define _COS_STREAM_IDL_
|
|
|
|
#ifdef _PRE_3_0_COMPILER_
|
|
#include <CosLifeCycle.idl>
|
|
#include <CosObjectIdentity.idl>
|
|
#include <CosGraphs.idl>
|
|
#pragma prefix "omg.org"
|
|
#else
|
|
import ::CosLifeCycle;
|
|
import ::CosObjectIdentity;
|
|
import ::CosGraphs;
|
|
#endif // _PRE_3_0_COMPILER_
|
|
|
|
module CosStream {
|
|
|
|
#ifndef _PRE_3_0_COMPILER_
|
|
typeprefix CosStream "omg.org";
|
|
#endif // _PRE_3_0_COMPILER_
|
|
|
|
exception ObjectCreationError{};
|
|
exception StreamDataFormatError{};
|
|
|
|
interface StreamIO;
|
|
interface Node;
|
|
interface Role;
|
|
interface Relationship;
|
|
|
|
interface Streamable:
|
|
CosObjectIdentity::IdentifiableObject {
|
|
readonly attribute CosLifeCycle::Key external_form_id;
|
|
void externalize_to_stream(
|
|
in StreamIO targetStreamIO);
|
|
void internalize_from_stream(
|
|
in StreamIO sourceStreamIO,
|
|
in CosLifeCycle::FactoryFinder there)
|
|
raises( CosLifeCycle::NoFactory,
|
|
ObjectCreationError,
|
|
StreamDataFormatError );
|
|
};
|
|
|
|
interface StreamableFactory {
|
|
Streamable create_uninitialized();
|
|
};
|
|
|
|
|
|
interface StreamIO {
|
|
void write_string(in string aString);
|
|
void write_char(in char aChar);
|
|
void write_octet(in octet anOctet);
|
|
void write_unsigned_long(
|
|
in unsigned long anUnsignedLong);
|
|
void write_unsigned_short(
|
|
in unsigned short anUnsignedShort);
|
|
void write_long(in long aLong);
|
|
void write_short(in short aShort);
|
|
void write_float(in float aFloat);
|
|
void write_double(in double aDouble);
|
|
void write_boolean(in boolean aBoolean);
|
|
void write_object(in Streamable aStreamable);
|
|
void write_graph(in Node aNode);
|
|
string read_string()
|
|
raises(StreamDataFormatError);
|
|
char read_char()
|
|
raises(StreamDataFormatError );
|
|
octet read_octet()
|
|
raises(StreamDataFormatError );
|
|
unsigned long read_unsigned_long()
|
|
raises(StreamDataFormatError );
|
|
unsigned short read_unsigned_short()
|
|
raises( StreamDataFormatError );
|
|
long read_long()
|
|
raises(StreamDataFormatError );
|
|
short read_short()
|
|
raises(StreamDataFormatError );
|
|
float read_float()
|
|
raises(StreamDataFormatError );
|
|
double read_double()
|
|
raises(StreamDataFormatError );
|
|
boolean read_boolean()
|
|
raises(StreamDataFormatError );
|
|
Streamable read_object(
|
|
in CosLifeCycle::FactoryFinder there,
|
|
in Streamable aStreamable)
|
|
raises(StreamDataFormatError );
|
|
void read_graph(
|
|
in Node starting_node,
|
|
in CosLifeCycle::FactoryFinder there)
|
|
raises(StreamDataFormatError );
|
|
};
|
|
|
|
// the following are required for compound externalization
|
|
|
|
struct RelationshipHandle {
|
|
CosRelationships::Relationship theRelationship;
|
|
CosObjectIdentity::ObjectIdentifier constantRandomId;
|
|
};
|
|
|
|
interface Node : CosGraphs::Node, CosStream::Streamable{
|
|
void externalize_node (in CosStream::StreamIO sio);
|
|
void internalize_node (in CosStream::StreamIO sio,
|
|
in CosLifeCycle::FactoryFinder there,
|
|
out Roles rolesOfNode)
|
|
raises ( CosLifeCycle::NoFactory);
|
|
};
|
|
|
|
interface Role : CosGraphs::Role {
|
|
void externalize_role (in CosStream::StreamIO sio);
|
|
void internalize_role (in CosStream::StreamIO sio);
|
|
CosGraphs::PropagationValue externalize_propagation (
|
|
in RelationshipHandle rel,
|
|
in CosRelationships::RoleName toRoleName,
|
|
out boolean sameForAll);
|
|
};
|
|
|
|
interface Relationship : CosRelationships::Relationship {
|
|
void externalize_relationship (
|
|
in CosStream::StreamIO sio);
|
|
void internalize_relationship(
|
|
in CosStream::StreamIO sio,
|
|
in CosGraphs::NamedRoles newRoles);
|
|
CosGraphs::PropagationValue externalize_propagation (
|
|
in CosRelationships::RoleName fromRoleName,
|
|
in CosRelationships::RoleName toRoleName,
|
|
out boolean sameForAll);
|
|
};
|
|
|
|
interface PropagationCriteriaFactory {
|
|
CosGraphs::TraversalCriteria create_for_externalize( );
|
|
};
|
|
|
|
|
|
};
|
|
#endif /* ifndef _COS_STREAM_IDL_ */
|