//Source file: fw_if_app.idl
//Date:  3 June 2002
//Framework Application Interfaces for ETSI ES 201 915-3 v.1.3.1, Parlay 3.2


#ifndef __FW_IF_APP_DEFINED
#define __FW_IF_APP_DEFINED



#include "osa.idl"
#include "fw_data.idl"

module org {
	
	module csapi {
		
		module fw {
			
			module fw_application {
				
				module notification {
					
					
					
					interface IpAppEventNotification : IpInterface {
						
						void reportNotification (
							in TpFwEventInfo eventInfo,	
							in TpAssignmentID assignmentID	
							);
							
						
						void notificationTerminated ();
							
					};
					
					
					
					interface IpEventNotification : IpInterface {
						
						TpAssignmentID createNotification (
							in TpFwEventCriteria eventCriteria	
							)							
							raises (TpCommonExceptions, P_ACCESS_DENIED, P_INVALID_CRITERIA, P_INVALID_EVENT_TYPE);
							
						
						void destroyNotification (
							in TpAssignmentID assignmentID	
							)							
							raises (TpCommonExceptions,P_ACCESS_DENIED,P_INVALID_ASSIGNMENT_ID);
							
					};
					
				};
				
				module integrity {
					interface IpAppHeartBeatMgmt;
					interface IpHeartBeat;
					interface IpAppHeartBeat;
					
					
					
					
					interface IpAppFaultManager : IpInterface {
						
						void activityTestRes (
							in TpActivityTestID activityTestID,	
							in TpActivityTestRes activityTestResult	
							);
							
						
						void appActivityTestReq (
							in TpActivityTestID activityTestID	
							);
							
						
						void fwFaultReportInd (
							in TpInterfaceFault fault	
							);
							
						
						void fwFaultRecoveryInd (
							in TpInterfaceFault fault	
							);
							
						
						void svcUnavailableInd (
							in TpServiceID serviceID,	
							in TpSvcUnavailReason reason	
							);
							
						
						void genFaultStatsRecordRes (
							in TpFaultStatsRecord faultStatistics,	
							in TpServiceIDList serviceIDs	
							);
							
						
						void fwUnavailableInd (
							in TpFwUnavailReason reason	
							);
							
						
						void activityTestErr (
							in TpActivityTestID activityTestID	
							);
							
						
						void genFaultStatsRecordErr (
							in TpFaultStatisticsError faultStatisticsError,	
							in TpServiceIDList serviceIDs	
							);
							
						
						void appUnavailableInd (
							in TpServiceID serviceID	
							);
							
						
						void genFaultStatsRecordReq (
							in TpTimeInterval timePeriod	
							);
							
					};
					
					
					
					interface IpAppLoadManager : IpInterface {
						
						void queryAppLoadReq (
							in TpTimeInterval timeInterval	
							);
							
						
						void queryLoadRes (
							in TpLoadStatisticList loadStatistics	
							);
							
						
						void queryLoadErr (
							in TpLoadStatisticError loadStatisticsError	
							);
							
						
						void loadLevelNotification (
							in TpLoadStatisticList loadStatistics	
							);
							
						
						void resumeNotification ();
							
						
						void suspendNotification ();
							
					};
					
					
					
					interface IpLoadManager : IpInterface {
						
						void reportLoad (
							in TpLoadLevel loadLevel	
							)							
							raises (TpCommonExceptions);
							
						
						void queryLoadReq (
							in TpServiceIDList serviceIDs,	
							in TpTimeInterval timeInterval	
							)							
							raises (TpCommonExceptions, P_INVALID_SERVICE_ID, P_SERVICE_NOT_ENABLED, P_UNAUTHORISED_PARAMETER_VALUE);
							
						
						void queryAppLoadRes (
							in TpLoadStatisticList loadStatistics	
							)							
							raises (TpCommonExceptions);
							
						
						void queryAppLoadErr (
							in TpLoadStatisticError loadStatisticsError	
							)							
							raises (TpCommonExceptions);
							
						
						void createLoadLevelNotification (
							in TpServiceIDList serviceIDs	
							)							
							raises (TpCommonExceptions, P_INVALID_SERVICE_ID, P_UNAUTHORISED_PARAMETER_VALUE);
							
						
						void destroyLoadLevelNotification (
							in TpServiceIDList serviceIDs	
							)							
							raises (TpCommonExceptions, P_INVALID_SERVICE_ID, P_UNAUTHORISED_PARAMETER_VALUE);
							
						
						void resumeNotification (
							in TpServiceIDList serviceIDs	
							)							
							raises (TpCommonExceptions, P_INVALID_SERVICE_ID, P_SERVICE_NOT_ENABLED, P_UNAUTHORISED_PARAMETER_VALUE);
							
						
						void suspendNotification (
							in TpServiceIDList serviceIDs	
							)							
							raises (TpCommonExceptions, P_INVALID_SERVICE_ID, P_SERVICE_NOT_ENABLED, P_UNAUTHORISED_PARAMETER_VALUE);
							
					};
					
					
					
					interface IpAppOAM : IpInterface {
						
						TpDateAndTime systemDateTimeQuery (
							in TpDateAndTime systemDateAndTime	
							);
							
					};
					
					
					
					interface IpOAM : IpInterface {
						
						TpDateAndTime systemDateTimeQuery (
							in TpDateAndTime clientDateAndTime	
							)							
							raises (TpCommonExceptions,P_INVALID_TIME_AND_DATE_FORMAT);
							
					};
					
					
					
					interface IpFaultManager : IpInterface {
						
						void activityTestReq (
							in TpActivityTestID activityTestID,	
							in TpServiceID svcID	
							)							
							raises (TpCommonExceptions,P_INVALID_SERVICE_ID, P_UNAUTHORISED_PARAMETER_VALUE);
							
						
						void appActivityTestRes (
							in TpActivityTestID activityTestID,	
							in TpActivityTestRes activityTestResult	
							)							
							raises (TpCommonExceptions,P_INVALID_SERVICE_ID,P_INVALID_ACTIVITY_TEST_ID);
							
						
						void svcUnavailableInd (
							in TpServiceID serviceID	
							)							
							raises (TpCommonExceptions ,P_INVALID_SERVICE_ID, P_UNAUTHORISED_PARAMETER_VALUE);
							
						
						void genFaultStatsRecordReq (
							in TpTimeInterval timePeriod,	
							in TpServiceIDList serviceIDs	
							)							
							raises (TpCommonExceptions, P_INVALID_SERVICE_ID, P_UNAUTHORISED_PARAMETER_VALUE);
							
						
						void appActivityTestErr (
							in TpActivityTestID activityTestID	
							)							
							raises (TpCommonExceptions, P_INVALID_ACTIVITY_TEST_ID);
							
						
						void appUnavailableInd (
							in TpServiceID serviceID	
							)							
							raises (TpCommonExceptions);
							
						
						void genFaultStatsRecordRes (
							in TpFaultStatsRecord faultStatistics	
							)							
							raises (TpCommonExceptions);
							
						
						void genFaultStatsRecordErr (
							in TpFaultStatisticsError faultStatisticsError	
							)							
							raises (TpCommonExceptions);
							
					};
					
					
					
					interface IpHeartBeatMgmt : IpInterface {
						
						void enableHeartBeat (
							in TpInt32 interval,	
							in IpAppHeartBeat appInterface	
							)							
							raises (TpCommonExceptions);
							
						
						void disableHeartBeat ()							
							raises (TpCommonExceptions);
							
						
						void changeInterval (
							in TpInt32 interval	
							)							
							raises (TpCommonExceptions);
							
					};
					
					
					
					interface IpAppHeartBeat : IpInterface {
						
						void pulse ();
							
					};
					
					
					
					interface IpHeartBeat : IpInterface {
						
						void pulse ()							
							raises (TpCommonExceptions);
							
					};
					
					
					
					interface IpAppHeartBeatMgmt : IpInterface {
						
						void enableAppHeartBeat (
							in TpInt32 interval,	
							in IpHeartBeat fwInterface	
							);
							
						
						void disableAppHeartBeat ();
							
						
						void changeInterval (
							in TpInt32 interval	
							);
							
					};
					
				};
				
				
				
				module discovery {
					
					
					
					interface IpServiceDiscovery : IpInterface {
						
						TpServiceTypeNameList listServiceTypes ()							
							raises (TpCommonExceptions,P_ACCESS_DENIED);
							
						
						TpServiceTypeDescription describeServiceType (
							in TpServiceTypeName name	
							)							
							raises (TpCommonExceptions,P_ACCESS_DENIED,P_ILLEGAL_SERVICE_TYPE,P_UNKNOWN_SERVICE_TYPE);
							
						
						TpServiceList discoverService (
							in TpServiceTypeName serviceTypeName,	
							in TpServicePropertyList desiredPropertyList,	
							in TpInt32 max	
							)							
							raises (TpCommonExceptions,P_ACCESS_DENIED,P_ILLEGAL_SERVICE_TYPE,P_UNKNOWN_SERVICE_TYPE,P_INVALID_PROPERTY);
							
						
						TpServiceList listSubscribedServices ()							
							raises (TpCommonExceptions,P_ACCESS_DENIED);
							
					};
					
				};
				
				module service_agreement {
					
					interface IpAppServiceAgreementManagement : IpInterface {
						
						TpOctetSet signServiceAgreement (
							in TpServiceToken serviceToken,	
							in TpString agreementText,	
							in TpSigningAlgorithm signingAlgorithm	
							)							
							raises (TpCommonExceptions, P_INVALID_AGREEMENT_TEXT, P_INVALID_SERVICE_TOKEN, P_INVALID_SIGNING_ALGORITHM);
							
						
						void terminateServiceAgreement (
							in TpServiceToken serviceToken,	
							in TpString terminationText,	
							in TpOctetSet digitalSignature	
							)							
							raises (TpCommonExceptions, P_INVALID_SERVICE_TOKEN, P_INVALID_SIGNATURE);
							
					};
					
					interface IpServiceAgreementManagement : IpInterface {
						
						TpSignatureAndServiceMgr signServiceAgreement (
							in TpServiceToken serviceToken,	
							in TpString agreementText,	
							in TpSigningAlgorithm signingAlgorithm	
							)							
							raises (TpCommonExceptions,P_ACCESS_DENIED,P_INVALID_AGREEMENT_TEXT,P_INVALID_SERVICE_TOKEN,P_INVALID_SIGNING_ALGORITHM,P_SERVICE_ACCESS_DENIED);
							
						
						void terminateServiceAgreement (
							in TpServiceToken serviceToken,	
							in TpString terminationText,	
							in TpOctetSet digitalSignature	
							)							
							raises (TpCommonExceptions, P_ACCESS_DENIED, P_INVALID_SERVICE_TOKEN, P_INVALID_SIGNATURE);
							
						
						TpServiceToken selectService (
							in TpServiceID serviceID	
							)							
							raises (TpCommonExceptions, P_ACCESS_DENIED, P_INVALID_SERVICE_ID, P_SERVICE_ACCESS_DENIED);
							
						
						void initiateSignServiceAgreement (
							in TpServiceToken serviceToken	
							)							
							raises (TpCommonExceptions, P_INVALID_SERVICE_TOKEN, P_SERVICE_ACCESS_DENIED);
							
					};
					
				};
				
				
				
			};
			
			
			
		};
		
	};
	
};

#endif
