C_sub.idl
#ifndef __PROSPECT_SUBSCRIPTION_IDLFILE_C_sub_idl__
#define __PROSPECT_SUBSCRIPTION_IDLFILE_C_sub_idl__
///////////////////////////////////////////////////////////////////////
//
// Common Subscription Definitions
// Description: Types common all trial 1 IDL definitions related to
// subscription management.
// Created: 29/7/96
// By: D.Lewis, A.DaCruz
//
///////////////////////////////////////////////////////////////////////
//
//
// Modifications:
// Date: 29/7/96
// By: D.Lewis
// Reason: frozen version based on TINA/TANGRAM accounting and
// subscription models.
//
// Date: 2/8/96
// By: D.Lewis
// Reason:
// - added t_SvcCommonData to t_SvcProfile
// - added t_SvcSelection, t_AvailableSvc and
// t_AvailableSvcList structures
//
// Date: 5/8/96
// By: D.Lewis
// Reason: Removed struct t_DateTime. This has been moved to
// file C_typ.idl
// Date: 22/10/96
// By: T.Tiropanis
// Reason: Changed all identifiers with SVC to Svc
//
// Date: 6/11/96
// By: D.Lewis
// Reason:
// removed all definitions related only to SMP and SRP
// COs. they have been moved to C_prpgn.idl
//
// Date: 6/11/96
// By: D.Lewis
// Reason:
// added typedef for t_SagList
//
// Date: 13/11/96
// By: T.Tiropanis
// Reason:
// swap definitions of t_SubscriptionAssignmentGroup
// and t_SagList around so that it compiles ok
//
// Date: 10/12/96
// By: D.Lewis
// Reason:
// change exceptions prefixes from e_* to e_sub*
// and t_SagList around so that it compiles ok
//
// Date: 13/1/97
// By: A.DaCruz
// Reason:
// moved t_Credit, t_SubscriberDetails and t_Subscriber
// to C_subacc.idl - because the he BillControlCO needs
// to know about them too (Cliff's changes).
//
// Date: 29/1/97
// By: D.Lewis
// Reason:
// change the type of the basicTariff and userPlan field in the
// t_subscriptionContract struct to t_TariffId
//
// Date: 09/06/97
// By: A.DaCruz
// Reason:
// added t_SvcProfileIdList because list of all
// service profiles defined for a customer and a service
// was asked to be returned by the database server - by Jochen
//
// Date: 9/9/97
// By: D.Lewis
// Reason:
// - changed t_SvcCommonData
// - added tSvcRecordList and t_SvcRecord
// - removed (commented):
// t_Enforcement
// t_InfoFlowEntity
// t_ChargingPolicy
// t_InfoFlowDesc
// t_InfoFLowRecord
// t_InfoFlowRecordList
// t_CIFDesc
// t_CIFRecord
// t_TermSupport
// t_NetworkSupport
// - added union t_SagItem
// - added struct t_SLA (TO BE COMPLETED!)
// - added t_SlaTariffList to t_subsctipionContract strcut
// - added t_SlaTariffList
// - added t_SlaTariff
// - added t_SagItemType
// - added exception e_subInvalidItem
//
// Date: 11/9/97
// By: D.Lewis
// Reason:
// Commented out the following until T2.2
// - t_Sla in t_SvcCOmmonData
// - t_SlaTariffList in t_subscriptionContract
// - related definitons
//
// Date: 11/2/98
// By: J.Klein
// Reason:
// - added FCAPS t_SLA definitions
// (t_SLAId, t_QoSCriterionId, t_QoSCriterion,
// t_QoSCriteriaList, t_SLA, t_SLAList)
//
///////////////////////////////////////////////////////////////////////
#include "C_svc.idl"
#include "C_subacc.idl"
///////////////////////////////////////////////////////////////////////
// t_Enforcement
//enum t_Enforcement {
// Mandatory,
// Optional
//};
///////////////////////////////////////////////////////////////////////
// Information Flow Controlling Entity
//enum t_InfoFlowEntity {
// Source,
// Sink,
// SourceSink
//};
///////////////////////////////////////////////////////////////////////
// The Charging Policy
// How this realtes to accounting management is for further study
// enum t_ChargingPolicy {
// SplitCharge,
// CollectCharge
//};
///////////////////////////////////////////////////////////////////////
// This structure contains information about a information flow
//struct t_InfoFlowDesc {
// string info_flow_id;
// string info_flow_type; // Audio, Video, Text, Data,
//etc.
// string quality;
// A list of acceptable QoS parameters in
//terms of ITU standard, e.g audio quality
// ADPCM, etc
//};
///////////////////////////////////////////////////////////////////////
// This structure contains information about a information flow and its
// enforcement in the Composite Information Flow
//struct t_InfoFlowRecord {
// t_InfoFlowDesc info_flow_desc;
// t_Enforcement enforcement; /* Mandatory, optional */
//};
///////////////////////////////////////////////////////////////////////
// A list of the above Info Flow Records:
// typedef sequence t_InfoFlowRecordList;
///////////////////////////////////////////////////////////////////////
// This structure contains information about a composite information
// flow
//struct t_CIFDesc {
// string cif_id;
// t_InfoFlowRecordList info_flow_list;
// t_InfoFlowEntity info_flow_entity;
//};
///////////////////////////////////////////////////////////////////////
// This structure contains information about a composite information
// flow and its enforcement in the Service
//struct t_CIFRecord {
// t_CIFDesc cif_desc;
// t_Enforcement enforcement;
//};
// typedef sequence t_CIFRecordList;
///////////////////////////////////////////////////////////////////////
// Classes of terminal needed for execution
//struct t_TermSupport {
// t_TermType term_type;
// string term_character;
//};
///////////////////////////////////////////////////////////////////////
// Type of network supporting the service, constraints on the network
// access points, etc.
//struct t_NetworkSupport {
// t_NapType nap_type;
// string nap_character;
//};
///////////////////////////////////////////////////////////////////////
// This structure contains information about service Subscription
// Common Data that belongs to both subscription and Service Template
// Information.
//struct t_SvcCommonData {
// t_CIFRecordList cif_list;
// the list of composite information flow
// t_ChargingPolicy charging_policy;
// this can depend also on the specific users
// t_PresentationSupport svc_presentation;
// e.g windowing system
// t_TermSupport term_support;
// t_NetworkSupport network_support;
//};
struct t_SvcRecord {
string record_id;
string record_descr;
t_PresentationSupport uap_mime_type;
t_SvcRefList record_info;
};
typedef sequence t_SvcRecord t_SvcRecordList;
struct t_SvcCommonData {
t_SvcRecordList svc_records;
};
///////////////////////////////////////////////////////////////////////
// TT information
// Identifier for QoS criterion
typedef string t_QoSCriterionId;
// Quality of service criterion
struct t_QoSCriterion {
string description;
long upper_bound; // Upper bound for QoS criterion
long lower_bound; // Lower bound for QoS criterion
t_QoSCriterionId qos_criterion_id;
t_TariffId tariff_id;
};
// List of quality of service criteria
typedef sequence t_QoSCriterion t_QoSCriteriaList;
// Service level agreement identifier
typedef string t_SLAId;
// Service level agreement
struct t_SLA {
string description;
boolean trouble_ticket; // Create trouble tickets or not
t_SLAId sla_id;
t_QoSCriteriaList QoS_criteria;
};
// List of service level agreements
typedef sequence t_SLA t_SLAList;
///////////////////////////////////////////////////////////////////////
// This structure contains information about subscription
typedef string t_SubscriptionId;
struct t_Subscription {
t_SubscriptionId subscription_id;
t_SvcId svc_id;
t_SvcCommonData svc_common_data;
t_SLA sla;
short max_assign_groups;
short max_group_size;
};
///////////////////////////////////////////////////////////////////////
// This structure contains information about Service Profile
typedef string t_SvcProfileId;
typedef sequence t_SvcProfileId t_SvcProfileIdList;
struct t_SvcProfile {
t_SubscriptionId subscription_id;
t_SvcProfileId svc_profile_id;
t_SvcCommonData svc_common_data;
boolean activation_state;
};
///////////////////////////////////////////////////////////////////////
// This structure is used to identify different service option that can
// be selected by a user
struct t_SvcSelection {
t_SvcId svc_id;
t_SvcProfileId svc_profile_id;
};
///////////////////////////////////////////////////////////////////////
// This structure is used to provide user with information on available
// services
struct t_AvailableSvc {
t_SvcSelection service_selection;
t_SvcType service_type;
};
typedef sequence t_AvailableSvc t_AvailableSvcList;
///////////////////////////////////////////////////////////////////////
// For i_subscription:
typedef string t_EndUserDomain; // The domain of Users
struct t_SelectionKey {
string selection_criteria;
t_TermType term_type;
t_NapType nap_type;
};
///////////////////////////////////////////////////////////////////////
// Some common definitions for the Subscription CO mgmt.
enum t_AdminState {up,down}; // The status of administration
///////////////////////////////////////////////////////////////////////
// Some common definitions for the Configuration of Subscription
// Assignment Groups.
struct t_Configuration {
t_TermId term_id;
t_NapId nap_id;
t_UserId user_id;
} ;
///////////////////////////////////////////////////////////////////////
// Definition of the some common definitions used in the context of the
// Service Template Handler Computational Object.
///////////////////////////////////////////////////////////////////////
// This structure contains information about ServiceTemplate
struct t_SvcTemplate {
t_SvcId svc_id;
// identifier of the service
t_SvcType svc_type;
t_SvcProviderId svc_provider_id;
t_SvcCommonData svc_common_data;
t_SLAList sla_list;
string session_type;
boolean implicit;
// implicit, explicit subscription
t_IntRef svc_factory_ref;
any svc_specific_part;
};
///////////////////////////////////////////////////////////////////////
// This structure contains information about SubscriptionContract
struct t_SubscriptionContract {
t_SvcId svc_id;
t_DateTime actual_start;
t_DateTime requested_start;
t_Person requested_by;
t_Person billing_contact_pt;
t_Person tech_contact_pt;
t_TariffId basicTariff;
t_TariffId userPlan;
};
///////////////////////////////////////////////////////////////////////
// This structure contains information about SAG
typedef string t_SagId;
typedef sequence t_SagId t_SagIdList;
struct t_SubscriptionAssignmentGroup {
t_SagId group_id;
short group_size;
string group_description;
};
typedef sequence t_SubscriptionAssignmentGroup t_SagList;
struct t_AssignGroupSelection {
t_SubscriptionAssignmentGroup sub_assgn_grp;
t_TermType terminal_type;
t_TermIdList term_id_list;
t_NapType nap_type;
t_NapIdList nap_id_list;
t_UserIdList user_id_list;
};
enum t_SagItemType {User, Term, NAP};
union t_SagItem switch (t_SagItemType) {
case User: t_UserId user_id;
case Term : t_TermId term_id;
case NAP : t_NapId nap_id;
};
///////////////////////////////////////////////////////////////////////
// The starting date of service usage limitation
struct t_AuthLimit {
t_DateTime limit_date;
string authority;
};
struct t_SubscriptionPortfolio {
short no_of_subscriptions;
t_SvcIdList service_list;
string monthly_charge;
any payment_record;
t_AuthLimit authority_limit;
};
///////////////////////////////////////////////////////////////////////
// Common Subscription Exception Definition
enum t_AccessDeniedReason {
AdminStateDown,
UnauthorisedAcess
};
exception e_subAccessDenied {
t_AccessDeniedReason reason; };
typedef string t_InvalidAccountReason;
exception e_subInvalidAccountNo {
t_InvalidAccountReason reason; };
typedef string t_InvalidSvcProviderReason;
exception e_subInvalidSvcProvider {
t_InvalidSvcProviderReason reason; };
typedef string t_InvalidSvcTemplateReason;
exception e_subInvalidSvcTemplate {
t_InvalidSvcTemplateReason reason; };
typedef string t_InvalidSAGReason;
exception e_subInvalidSAG {
t_InvalidSAGReason reason; };
typedef string t_InvalidSvcProfileReason;
exception e_subInvalidSvcProfile {
t_InvalidSvcProfileReason reason; };
typedef string t_InvalidUserReason;
exception e_subInvalidUser {
t_InvalidUserReason reason; };
typedef string t_InvalidPortfolioReason;
exception e_subInvalidPortfolio {
t_InvalidPortfolioReason reason; };
typedef string t_InvalidItemReason;
exception e_subInvalidItem {
t_InvalidItemReason reason; };
///////////////////////////////////////////////////////////////////////
// Common Subscription Interface Definitions
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
// CO Init interface:
// This control the initialisation of the CO and also its termination.
//
// The init operation returns a list of object references needed to
// access the COs interfaces. This init interface may be unused for
// COs in prefernece to an individually defined version (prefixed with
// the CO short name) that supports any additional input parameters
// that might be required
interface i_CoInit {
void init (
out t_IntRefList generated_ref_list );
void terminate ();
};
///////////////////////////////////////////////////////////////////////
// CO Mgmt interface:
// This allows for the control of the COs administrative state.
// When this is set to down client cannot access any of the other
// CO interfaces, except for the init and mgmt interfaces
interface i_CoMgmt {
void setAdminState (
in t_AdminState admin_state )
raises (e_subAccessDenied);
// used to set the administrative state of the
// SubscriptionRegistrar to up (can be used by
// authorized clients) or down (can not be used
// by any client).
//////////////////////////////////////////////////
void getAdminState (
out t_AdminState admin_state )
raises (e_subAccessDenied);
};
//
// End of Common Subscription Definitions
//
///////////////////////////////////////////////////////////////////////
#endif