//============================================================================= /** * @file CCS.idl * * @author Source code used in TAO has been modified and adapted from the codeprovided in the book * @author "Advanced CORBA Programming with C++" by MichiHenning and Steve Vinoski. Copyright 1999. Addison-Wesley * @author Reading * @author MA.Modified for TAO by Mike Moran */ //============================================================================= #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; }; 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 { typedef sequence ThermometerSeq; typedef sequence 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 SearchSeq; struct ErrorDetails { Thermostat tmstat_ref; Thermostat::BtData info; }; typedef sequence ErrSeq; exception EChange { ErrSeq errors; }; ThermometerSeq list(); void find(inout SearchSeq slist); void change( in ThermostatSeq tlist, in short delta ) raises(EChange); }; };