diff options
Diffstat (limited to 'TAO/examples/Advanced/ch_18/CCS.idl')
-rw-r--r-- | TAO/examples/Advanced/ch_18/CCS.idl | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/TAO/examples/Advanced/ch_18/CCS.idl b/TAO/examples/Advanced/ch_18/CCS.idl new file mode 100644 index 00000000000..c0daa0f995f --- /dev/null +++ b/TAO/examples/Advanced/ch_18/CCS.idl @@ -0,0 +1,103 @@ +// $Id$ +// ============================================================================ +// +// = LIBRARY +// TAO/examples/Advanced/ch_18 +// +// = FILENAME +// CCS.idl +// +// = AUTHORS +// Source code used in TAO has been modified and adapted from the code +// provided in the book, "Advanced CORBA Programming with C++" by Michi +// Henning and Steve Vinoski. Copyright 1999. Addison-Wesley, Reading, +// MA. +// +// Modified for TAO by Mike Moran <mm4@cs.wustl.edu> +// +// ============================================================================ + + + +#pragma prefix "acme.com" + +module CCS { + typedef unsigned long AssetType; + typedef string ModelType; + typedef short TempType; + typedef string LocType; + + interface Thermometer { + readonly attribute ModelType model; + readonly attribute AssetType asset_num; + readonly attribute TempType temperature; + attribute LocType location; + + void remove(); + }; + + interface Thermostat : Thermometer { + struct BtData { + TempType requested; + TempType min_permitted; + TempType max_permitted; + string error_msg; + }; + exception BadTemp { BtData details; }; + + TempType get_nominal(); + TempType set_nominal(in TempType new_temp) + raises(BadTemp); + }; + + interface Controller { + exception DuplicateAsset {}; + + Thermometer create_thermometer( + in AssetType anum, + in LocType loc + ) raises(DuplicateAsset); + Thermostat create_thermostat( + in AssetType anum, + in LocType loc, + in TempType temp + ) raises(DuplicateAsset, Thermostat::BadTemp); + + typedef sequence<Thermometer> ThermometerSeq; + typedef sequence<Thermostat> ThermostatSeq; + + enum SearchCriterion { ASSET, LOCATION, MODEL }; + + union KeyType switch(SearchCriterion) { + case ASSET: + AssetType asset_num; + case LOCATION: + LocType loc; + case MODEL: + ModelType model_desc; + }; + + struct SearchType { + KeyType key; + Thermometer device; + }; + typedef sequence<SearchType> SearchSeq; + + struct ErrorDetails { + Thermostat tmstat_ref; + Thermostat::BtData info; + }; + typedef sequence<ErrorDetails> ErrSeq; + + exception EChange { + ErrSeq errors; + }; + + ThermometerSeq list(); + void find(inout SearchSeq slist); + void change( + in ThermostatSeq tlist, in short delta + ) raises(EChange); + + }; +}; |