Geospatial and Imagery Access Service (GIAS) Dissector

A Corba (GIOP) based protocol for the exchange of Intelligence, Surveillance
and Reconnaissance (ISR) products.
Defined in STANAG 4559/AEDP-5 "NATO Standard ISR Library Interface (NSILI)"
See http://www.nato.int/structur/ac/224/standard/4559/4559.htm for more
information.
The dissector is generated using idl2wrs using the gias.idl, with some
manual corrections, as noted in README.gias.

Patch Set 4: Initialise uninitialised variables and no longer mark them as
	unused.

Change-Id: Ieae93a135b30078f2d34e66f8c7b2e476438224e
Reviewed-on: https://code.wireshark.org/review/7965
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
gal 2015-04-07 09:35:16 +01:00 committed by Anders Broman
parent 4c52738243
commit 085e95a3ad
9 changed files with 11039 additions and 0 deletions

View File

@ -708,6 +708,7 @@ set(DISSECTOR_SRC
dissectors/packet-gearman.c
dissectors/packet-ged125.c
dissectors/packet-geneve.c
dissectors/packet-gias.c
dissectors/packet-gift.c
dissectors/packet-giop.c
dissectors/packet-git.c

View File

@ -624,6 +624,7 @@ DISSECTOR_SRC = \
packet-gearman.c \
packet-ged125.c \
packet-geneve.c \
packet-gias.c \
packet-gift.c \
packet-giop.c \
packet-git.c \

File diff suppressed because it is too large Load Diff

33
idl/gias/README.gias Normal file
View File

@ -0,0 +1,33 @@
Geospatial and Imagery Access Service (GIAS)
see http://www.nato.int/structur/AC/224/standard/4559/4559_documents/4559_GIAS351_Approved_nu.pdf
To generate the gias dissector from the .idl documents run:
omniidl -p ../../tools -b wireshark_be gias.idl
(Note this is similar to the command that idl2wrs would run but explicitly identifies the backend is to be used.)
The gias.idl file includes all the other .idl files to create one
dissector for gias.
Note that due to a bug in ommniidl, the following needs to be manually added to the generated dissector:
Errors
======
Define the heading field:
static int hf_UCO_InvalidInputParameter_badInputParameters = -1;
Register the headings fields:
{&hf_UCO_CompressedImage_data_loop, {"Seq length of CompressedImage_data","giop-gias.CompressedImage.data.size",FT_UINT32,BASE_DEC,NULL,0x0,NULL,
{&hf_UCO_Buffer_octet_buffer_loop, {"Seq length of Buffer_octet_buffer","giop-gias.UCO.Buffer.octet_buffer.size",FT_UINT32,BASE_DEC,NULL,0x0,NULL,HFILL}},
{&hf_GIAS_Domain_bd_loop, {"Seq length of Domain_bd","giop-gias.GIAS.Domain.bd.size",FT_UINT32,BASE_DEC,NULL,0x0,NULL,HFILL}},
Warnings
========
Make the following 3 variables const gchar * :
binary_seq_UCO_CompressedImage_data
binary_seq_UCO_Buffer_octet_buffer
binary_seq_GIAS_Domain_bd

34
idl/gias/cb.idl Normal file
View File

@ -0,0 +1,34 @@
#ifndef CB_IDL
#define CB_IDL
//***************************************************************
//* APPROVED via RFC N01-0268 on 6 August 2001
//***************************************************************
//***************************************************************
//* interface GIAS::Callback
//*
//* Description: General callback interface
//*
//* NOTE: The Callback interface is implemented on the
//* "client" side to allow "servers" to notify clients of
//* completion of requests.
//*
//* NOTE: Callback module is now compiled as a separate IDL file.
//* This will be changed in GIAS 3.3
//***************************************************************
#include "uco.idl"
module CB
{
interface Callback
{
void notify (in UCO::State theState, in UCO::RequestDescription description)
raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
void release ()
raises (UCO::ProcessingFault, UCO::SystemFault);
};
};
#endif

1271
idl/gias/gias.idl Normal file

File diff suppressed because it is too large Load Diff

979
idl/gias/ps.idl Normal file
View File

@ -0,0 +1,979 @@
#ifndef PS_IDL
#define PS_IDL
//***************************************************************
//* APPROVED via RFC N01-0268 on 6 August 2001
//***************************************************************
//*****************************************************************
// FILE: profile.idl
//
//
//
// DESCRIPTION: Profile Service
//
// Defines the data types and interfaces needed to support search,
// retrieval and access to user, node, and system profiles.
//
// LIMITATIONS:
//
//
// SOFTWARE HISTORY:
//
//<
//***************************************************************************
#include "uco.idl"
#include "gias.idl"
//***************************************************************************
// MODULE: PS
//> The main module for the Profile Service
//<
//***************************************************************************
module PS
{
//***************************************************************
//* The Exception Identifiers for Profile Service (PS) Module
//***************************************************************
const string UnknownProfileElementTypeConst = "UnknownProfileElementType";
const string BadAccessCriteriaConst = "BadAccessCriteria";
const string BadProfileElementConst = "BadProfileElement";
const string BadAccessValueConst = "BadAccessValue";
const string PasswordExpiredConst = "PasswordExpired";
const string InvalidOrderConst = "InvalidOrder";
const string InvalidQueryConst = "InvalidQuery";
const string UnknownOperationConst = "UnknownOperation";
const string VolumeReadAccessDeniedConst = "VolumeReadAccessDenied";
const string VolumeWriteAccessDeniedConst = "VolumeWriteAccessDenied";
const string FolderNotEmptyConst = "FolderNotEmpty";
const string FolderExistsConst = "FolderExists";
const string UnknownFolderItemTypeConst = "UnknownFolderItemType";
const string UnknownVolumeConst = "UnknownVolume";
const string UnknownPRIDConst = "UnknownPRID";
const string PermissionDeniedConst = "PermissionDenied";
const string BadFileLocationConst = "BadFileLocation";
const string SystemFaultConst = "SystemFault";
typedef string ProfileElementType;
typedef sequence <ProfileElementType> ProfileElementTypeList;
//***
// Forward References
//***
interface ProfileMgr;
interface Profile;
interface ProfileElement;
//***
// Forward References to the specific ProfileElements
//***
interface BasicProfile;
interface GIASProfile;
interface SecureProfile;
interface SecureViewProfile;
//**************************************************************************
// INTERFACE: ProfileMgr
//> The ProfileMgr provides access control to Profile objects
//<
//**************************************************************************
interface ProfileMgr
{
Profile get_profile(in UCO::NameValueList access_criteria)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//> Returns the Profile for the user identified in access_criteria.
//<
string get_version()
raises (UCO::ProcessingFault, UCO::SystemFault);
//> Returns the version of this Profile manager.
//<
void set_user_password
(in UCO::NameValueList access_criteria,
in string new_password)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
};
//**************************************************************************
// INTERFACE: Profile
//> The Profile object provides access to the contents of a Profile
// by serving as a container for ProfileElement objects of different types.
//<
//**************************************************************************
interface Profile
{
ProfileElementTypeList get_profile_element_types()
raises (UCO::ProcessingFault, UCO::SystemFault);
//> Returns a list of all ProfileElementTypes contained in this Profile.
//<
ProfileElement get_profile_element(in ProfileElementType element_type)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//> Returns the ProfileElement of the specified type.
//<
SecureProfile get_secure_profile_element
(in UCO::NameValueList trusted_access_criteria)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the secure profile element that contains
// user security information that does not change across views.
// The trusted access criteria limits the availability of this
// information. If the access criteria does not contain expected names,
// the operation will return a BadAccessCriteria exception identifier. If the access
// criteria does not contain expected values, the operation will return a
// BadAccessValue exception identifier.
//<
SecureViewProfile get_secure_view_profile_element
(in UCO::NameValueList trusted_access_criteria,
in GIAS::ViewName view)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//> This method returns the secure profile element that contains
// user security information that is view specific. The
// trusted access criteria limits the availability of this
// information. If the access criteria does not contain expected names,
// the operation will return a BadAccessCriteria exception identifier. If the access
// criteria does not contain expected values, the operation will return a
// BadAccessValue exception identifier.
//<
UCO::AbsTime get_last_update_time()
raises (UCO::ProcessingFault, UCO::SystemFault);
//> Returns the time the Profile was last changed.
//<
void get_profiled_views(out UCO::NameList view_list)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> Returns a list of views that are valid for a particular profile
//<
};
//**************************************************************************
// INTERFACE ProfileElement
//> The ProfileElement object serves as the base abstract class for all
// types of content objects in a Profile. It contains operations common to
// all types of ProfileElement objects.
//<
//**************************************************************************
interface ProfileElement
{
UCO::AbsTime get_last_update_time()
raises (UCO::ProcessingFault, UCO::SystemFault);
//> Returns the time this ProfileElement was last changed.
//<
};
//**************************************************************************
// INTERFACE: BasicProfile
//
//> The BasicProfile object is a specialization of the ProfileElement
// object to support all types of users. It contains operations and
// types common to all types of users.
//<
//**************************************************************************
interface BasicProfile : ProfileElement
{
struct TelephoneNumber
{
string name;
string number;
};
typedef sequence<TelephoneNumber> TelephoneNumberList;
struct UserInformation
{
string name;
string organization;
string address;
string city;
string state;
string zip;
string country;
string email;
TelephoneNumberList phone_numbers;
UCO::FileLocation ftp_location;
UCO::AbsTime password_expiration;
};
struct UserPreference
{
string name;
string value;
boolean editable;
string description;
};
typedef sequence<UserPreference> UserPreferenceList;
typedef sequence<string> PreferenceNameList;
struct UserPreferenceDomain
{
GIAS::Domain adomain;
boolean multi_select;
};
struct SecurityInformation
{
string classification;
boolean security_administrator_flag;
};
void get_user_information (out UserInformation info)
raises (UCO::ProcessingFault, UCO::SystemFault);
void set_user_information (in UserInformation info)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
void get_security_information (out SecurityInformation info)
raises (UCO::ProcessingFault, UCO::SystemFault);
void get_available_preferences (out PreferenceNameList names)
raises (UCO::ProcessingFault, UCO::SystemFault);
void get_preference_domain (in string preference_name,
out GIAS::Domain domain)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
void get_user_preference (in string preference_name,
out UserPreference preference)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
void get_user_preferences (out UserPreferenceList list)
raises (UCO::ProcessingFault, UCO::SystemFault);
void set_user_preference (in UserPreference preference)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
void set_user_preferences (in UserPreferenceList preferences)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
};
//**************************************************************************
// INTERFACE: SecureProfile
//
//> The SecureProfile object is a specialization of the ProfileElement
// object to support basic security information access.
//<
//**************************************************************************
interface SecureProfile : ProfileElement
{
//***
// Authorization Information
//***
struct Authorization
{
string authorization_classification;
UCO::NameList exception_country_list;
UCO::NameList releasable_country_list;
UCO::NameList releasable_org_list;
UCO::NameList distribution_limit_code_list;
UCO::NameList access_agreement_list;
UCO::NameList compartment_list;
};
//> This data structure holds the elements that constitute
// a discretionary access authorization for the user.
//<
void get_authorization
(out Authorization aauthorization)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the authorization information.
//<
void get_authorization_classification
(out string classification)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns a user's authorization classification level.
//<
void get_exception_by_countries
(out UCO::NameList country_list)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the exception by country list.
//<
void get_releasable_countries
(out UCO::NameList country_list)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the releasable country list.
//<
void get_releasable_organizations
(out UCO::NameList organization_list)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the releasable organization list.
//<
void get_distribution_limitation_codes
(out UCO::NameList code_list)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the distribution limitation code list.
//<
void get_access_agreements
(out UCO::NameList agreement_list)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the access agreement list.
//<
void get_compartments
(out UCO::NameList compartment_list)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the compartment list for the user.
//<
//***
// Attribute/entity Restriction Information
//***
enum AccessType {READ_DENIED, WRITE_DENIED};
void get_restricted_attributes
(in AccessType access_type,
out UCO::NameList attribute_list)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the restricted attribute identifiers
// for the user relative to a specific view.
//<
void get_restricted_entities
(in AccessType access_type,
out UCO::NameList entity_list)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the restricted entity identifiers
// for the user relative to a specific view.
//<
};
//**************************************************************************
// INTERFACE: SecureViewProfile
//
//> The SecureViewProfile object is a specialization of the SecureProfile
// object to support view-oriented security information access.
//<
//**************************************************************************
interface SecureViewProfile : SecureProfile
{
//***
// Authorization Information
//***
boolean use_authorization()
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns a true indication if the authorizaton
// is to be used for discretionary access control for
// the specified view.
//<
//***
// Attribute Value Restriction Information
//***
void get_restricted_attribute_values
(out string restriction)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns the restricted attribute value
// string for the user relative to a specific view.
//<
};
//**************************************************************************
// INTERFACE: GIASProfile
//
//> The GIASProfile object is a specialization of the ProfileElement
// object to support users of GIAS Libraries. It contains methods and
// types specific to GIAS libraries operations.
//<
//**************************************************************************
interface GIASProfile : ProfileElement
{
//***
// Defines a profile id used to uniquely identify objects within the
// user profile
//***
typedef string PRID;
typedef sequence <PRID> PRIDList;
void get_allowable_operations(out UCO::NameList operation_list)
raises (UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns a list of the allowable operations for
// a particular user.
//<
boolean operation_is_allowed (in string operation)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//> This operation returns TRUE if the specified manager is
// accessible by the user, otherwise FALSE is returned.
//<
typedef string FolderTree;
// string defined as: \folder1\folder2\folder3\etc...
// An empty string or '\' denotes the root folder.
struct FolderLocation
{
string volume;
FolderTree folder;
};
struct VolumeInfo
{
boolean default_volume;
string volume;
boolean read_permission;
boolean write_permission;
boolean create_delete_permission;
};
typedef sequence < VolumeInfo > VolumeInfoList;
typedef sequence < FolderLocation> FolderLocationList;
enum FolderItemType
{
SAVED_QUERY,
SUBMITTED_QUERY,
SUBMITTED_QUERY_AND_HIT_COUNT,
STANDING_QUERY,
SAVED_ORDER,
SUBMITTED_ORDER,
STANDING_ORDER,
SUBMITTED_CREATE,
SUBMITTED_HIT_COUNT,
RESULTS_DIGEST,
SESSION,
ALL
};
struct FolderItem
{
PRID item_id;
FolderLocation location;
string name;
string description;
FolderItemType type;
UCO::AbsTime creation_time;
UCO::AbsTime last_accessed_time;
UCO::AbsTime last_modified_time;
string owner_name;
string user_created_name;
string user_last_accessed_name;
string user_last_modified_name;
UCO::Rectangle area_of_interest_mbr;
};
typedef sequence < FolderItem > FolderItemList;
//***
// FolderItem holds one of the following:
// SubmittedQuery
// SubmittedQueryAndHitCount
// SubmittedOrder
// SubmittedCreate
// StandingQuery
// StandingOrder
// SavedQuery
// SavedOrder
// ResultsDigest
// SavedSession
//***
typedef any FolderContent;
typedef sequence <FolderContent> FolderContentList;
enum SearchDepth
{
SINGLE_FOLDER,
FOLDER_TREE
};
//***
// Return a list of available volumes
//***
void list_volumes(
out VolumeInfoList volume_list)
raises (UCO::ProcessingFault, UCO::SystemFault);
//***
// Creates a new folder in the location specified
//***
void new_folder (
in FolderLocation folder)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Moves a folder's location
//***
void update_folder (
in FolderLocation folder,
in FolderLocation new_location)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Removes an empty folder
//***
void remove_folder (
in FolderLocation folder)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Return a list of folders in a specific folder
//***
void list_folders (
in FolderLocation folder,
out FolderLocationList query_items)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Update a specific folder item in the profile
//***
void update_folder_item (
in PRID item_id,
in FolderLocation location,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Returns the contents of a folder item
// N.B. Some folder item types may override this operation.
//***
void get_entry (
in PRID item_id,
out FolderContent entry)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Removes a folder item
//***
void remove_entry (
in PRID item_id)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Returns a list of folder contents of a given type.
// Can search just in a given folder or recursively search the folder
// tree starting at a given folder location.
// N.B. This call may not be useful for some folder item types.
//***
void list_entries (
in FolderItemType type,
in FolderLocation starting_point,
in SearchDepth depth,
out FolderContentList entries)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Returns a list of folder information for a given folder item type.
// Can search just in a given folder or recursively search the folder
// tree starting at a given folder location.
//***
void list_entry_items (
in FolderItemType type,
in FolderLocation starting_point,
in SearchDepth depth,
out FolderItemList entry_items)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***********************************************************************
// Submitted Queries
//
//> These are queries that have been submitted to a Library, but the
// client has not yet completed the retrieval of the query results.
// This is useful when queries are time-consuming.
//<
//***********************************************************************
struct SubmittedQuery
{
FolderItem item_info;
GIAS::SubmitQueryRequest request;
};
typedef sequence<SubmittedQuery> SubmittedQueryList;
//***********************************************************************
// Submitted Queries and Hit Count
//
//> These are queries that have been submitted to a Library, but the
// client has not yet completed the retrieval of the query results.
// This is useful when queries are time-consuming.
//<
//***********************************************************************
struct SubmittedQueryAndHitCount
{
FolderItem item_info;
GIAS::SubmitQueryRequest request;
GIAS::RequestList hit_count_requests;
};
typedef sequence<SubmittedQueryAndHitCount> SubmittedQueryAndHitCountList;
PRID new_submitted_query (
in FolderLocation folder,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in GIAS::SubmitQueryRequest request)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
PRID new_submitted_query_and_hitcount (
in FolderLocation folder,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in GIAS::SubmitQueryRequest request,
in GIAS::RequestList hit_count_requests)
raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
struct SubmittedHitCount
{
FolderItem item_info;
GIAS::HitCountRequest request;
};
typedef sequence<SubmittedHitCount> SubmittedHitCountList;
PRID new_submitted_hitcount (
in FolderLocation folder,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in GIAS::HitCountRequest request)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***********************************************************************
// Submitted Orders
//
//> These are orders that have been submitted to a Library, but the
// user has not yet deleted. A user may need to keep orders around
// if they take a long time to complete.
//<
//***********************************************************************
struct SubmittedOrder
{
FolderItem item_info;
GIAS::OrderRequest request;
};
typedef sequence<SubmittedOrder> SubmittedOrderList;
PRID new_submitted_order(
in FolderLocation folder,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in GIAS::OrderRequest order)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***********************************************************************
// Submitted Creates
//
//> These are creates that have been submitted to a Library, but the
// user has not yet deleted. A user may need to keep these around
// if they take a long time to complete.
//<
//***********************************************************************
struct SubmittedCreate
{
FolderItem item_info;
GIAS::CreateRequest request;
};
typedef sequence<SubmittedCreate> SubmittedCreateList;
PRID new_submitted_create(
in FolderLocation folder,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in GIAS::CreateRequest create_request)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***********************************************************************
// Standing Queries
//
//> These are queries that get executed on a scheduled basis. The client
// needs to be able to access the query request at any time.
//<
//***********************************************************************
struct StandingQuery
{
FolderItem item_info;
GIAS::SubmitStandingQueryRequest request;
};
typedef sequence <StandingQuery> StandingQueryList;
PRID new_standing_query (
in FolderLocation folder,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in GIAS::SubmitStandingQueryRequest request)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***********************************************************************
// Standing Orders
//
//> These are orders that get executed on a scheduled basis. The client
// needs to be able to access the order request at any time.
//<
//***********************************************************************
struct StandingOrder
{
FolderItem item_info;
GIAS::QueryOrderContents order;
GIAS::SubmitStandingQueryRequest query;
};
typedef sequence <StandingOrder> StandingOrderList;
PRID new_standing_order(
in FolderLocation folder,
in string name,
in string description,
in GIAS::QueryOrderContents order,
in UCO::Rectangle area_of_interest_mbr,
in GIAS::SubmitStandingQueryRequest query)
raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***********************************************************************
// Saved Queries
//
//>
//<
//***********************************************************************
struct SavedQuery
{
FolderItem item_info;
GIAS::Query bqs;
UCO::FileLocation thumbnail_location;
boolean browse_image_returned_flag;
UCO::NameList result_attributes;
GIAS::SortAttributeList sort_attributes;
string geographic_datum;
UCO::AbsTime last_submitted_date;
};
typedef sequence < SavedQuery > SavedQueryList;
//***
// Save the query information to the specified folder.
//***
PRID new_saved_query (
in FolderLocation folder,
in string name,
in string description,
in GIAS::Query bqs,
in boolean browse_image_returned_flag,
in UCO::NameList result_attributes,
in GIAS::SortAttributeList sort_attributes,
in string geographic_datum,
in UCO::AbsTime last_submitted_date,
in UCO::Rectangle area_of_interest_mbr)
raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Update a specified query from the profile
//***
void update_saved_query (
in PRID saved_query_id,
in string name,
in string description,
in GIAS::Query bqs,
in boolean browse_image_returned_flag,
in UCO::NameList result_attributes,
in GIAS::SortAttributeList sort_attributes,
in string geographic_datum,
in UCO::AbsTime last_submitted_date,
in UCO::Rectangle area_of_interest_mbr)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***********************************************************************
// Saved Orders
//
//>
//<
//***********************************************************************
struct SavedOrder
{
FolderItem item_info;
GIAS::OrderContents order;
};
typedef sequence < SavedOrder > SavedOrderList;
PRID new_saved_order (
in FolderLocation folder,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in GIAS::OrderContents order)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
void update_saved_order(
in PRID saved_order_id,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in GIAS::OrderContents order)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***********************************************************************
// Results Digests
//
//>
//<
//***********************************************************************
struct ResultsDigest
{
FolderItem item_info;
};
typedef sequence < ResultsDigest > ResultsDigestList;
//***
// Save the results digest to the specified folder... the
// server will ftp get the digest from the specified file
// location.
//***
PRID new_results_digest (
in FolderLocation folder,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in UCO::FileLocation digest_location)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Update the specified results digest in the profile
//***
void update_results_digest(
in PRID results_digest_id,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in UCO::FileLocation digest_location)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Get the results digest for the specified ID... the server
// will ftp put the digest to the specified file location.
//***
void get_results_digest (
in PRID query_id,
in UCO::FileLocation destination_file)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***********************************************************************
// Saved Sessions
//
//>
//<
//***********************************************************************
struct SavedSession
{
FolderItem item_info;
string session_text;
};
typedef sequence < SavedSession > SavedSessionList;
//***
// Save the session to the specified folder... the
// server will ftp get the session from the specified file
// location.
// ***
PRID new_saved_session (
in FolderLocation folder,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in UCO::FileLocation session_location)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Update the specified saved session in the profile
//***
void update_saved_session(
in PRID saved_session_id,
in string name,
in string description,
in UCO::Rectangle area_of_interest_mbr,
in UCO::FileLocation session_location)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
//***
// Get the saved session for the specified ID... the server
// will ftp put the session to the specified file location.
//***
void get_saved_session (
in PRID query_id,
in UCO::FileLocation destination_file)
raises (
UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault);
}; // end interface GIASProfile
};
#endif

417
idl/gias/uco.idl Normal file
View File

@ -0,0 +1,417 @@
#ifndef UCO_IDL
#define UCO_IDL
//***************************************************************
//* APPROVED via RFC N01-0268 on 6 August 2001
//***************************************************************
// *************************************************************
//*
//* The USIGS Common Object Specification
//*
//*
//* Description: Defines fundamental data types and
//* interfaces to be used by other specifications to
//* support interoperation across independently designed
//* interfaces.
//*
//*
//*
//* History:
//* Date Author Comment
//* ----- ------ --------
//* 15 May 97 D. Lutz Initial release for review
//* 2 July 97 D. Lutz Released for TEM review
//* 11 July 97 D. Lutz Changes based on 2 July TEM
//* Comments
//* 16 Oct 97 D. Lutz Changes based on 7 Oct TEM
//* Comments
//* 14 Nov 97 D. Lutz Changes based on 4 Nov TEM
//* Comments
//* 17 Dec 97 D. Lutz Changes based on 9 Dec TEM
//* Comments
//* 13 Apr 98 J. Baldo Changes based on feedback from
//* distributions of UCOS v1.1 and
//* GIAS v3.1
//* 2 July 98 J. Baldo/D. Lutz Changes based on feedback
//* from 22-23 June 98 TEM
//* 29 Sept 98 J. Baldo/D. Lutz Changes based on feedback
//* from 22-23 September 1998 TEM
//*
//* from 4-5 August 1999 TEM - Simplified the 2 and 3D Coordinates to be floats only.
//* from 19 January 2000 TEM -
//* included a generic exceptionÆs model that GIXS,
//*GIAS Profile will use.
//* 7 March 2000 from March 2000 TEM - added new //* structure that is somewhat similar //* to NameValueTable called a //* StringTable
//*
//* Notes
//* -------
//* 7 March 2000 Needed to include the UID Module
//*
//*************************************************************
#include "uid.idl"
// The USIGS Common Objects
module UCO
{
// Generic data types
typedef string Name;
typedef sequence < Name > NameList;
struct NameName
{
Name name1;
Name name2;
};
typedef sequence <NameName> NameNameList;
struct NameValue
{
Name aname;
any value;
};
typedef sequence < NameValue > NameValueList;
typedef float Percentage;
typedef double Angle;
struct Ratio {
double numerator;
double denominator;
};
typedef double DataRate;
typedef string UCOS_NULL;
struct FileLocation
{
string user_name;
string password;
string host_name;
string path_name;
string file_name;
};
typedef sequence < FileLocation > FileLocationList;
enum Protocol { HTTP, FTP, FILE };
struct DirectAccessLocation
{
Protocol access_protocol;
FileLocation file_location;
};
struct Date
{
unsigned short year;
unsigned short month;
unsigned short day;
};
struct Time
{
unsigned short hour;
unsigned short minute;
float second;
};
typedef Time Duration;
struct AbsTime
{
Date aDate;
Time aTime;
};
typedef string EmailAddress;
// Begin DAG definition
typedef unsigned long NodeID;
enum NodeType { ROOT_NODE, ENTITY_NODE, RECORD_NODE,
ATTRIBUTE_NODE };
struct Node
{
NodeID id;
NodeType node_type;
Name attribute_name;
any value;
};
enum Cardinality { ONE_TO_ONE, ONE_TO_MANY, MANY_TO_ONE, MANY_TO_MANY, ONE_TO_ZERO_OR_MORE, ONE_TO_ONE_OR_MORE, ONE_TO_ZERO_OR_ONE };
struct Edge
{
NodeID start_node;
NodeID end_node;
string relationship_type;
};
typedef sequence < Node > NodeList;
typedef sequence < Edge > EdgeList;
struct DAG
{
NodeList nodes;
EdgeList edges;
};
typedef sequence < DAG > DAGList;
// Begin StringDAG definition
struct StringNode
{
NodeID id;
NodeType node_type;
Name attribute_name;
string value;
};
typedef sequence < StringNode > StringNodeList;
struct StringDAG
{
any prod;
StringNodeList nodes;
EdgeList edges;
};
typedef sequence < StringDAG > StringDAGList;
enum ChangeType { ADD_CHANGE, UPDATE_CHANGE, DELETE_CHANGE };
struct Change {
NodeID changed_node;
ChangeType change_type;
};
typedef sequence <Change> ChangeList;
struct UpdateDAG {
DAG data;
ChangeList changes;
};
typedef sequence <UpdateDAG> UpdateDAGList;
struct RequestDescription
{
string user_info;
string request_type;
string request_info;
NameValueList request_details;
};
typedef sequence < RequestDescription > RequestDescriptionList;
typedef sequence <octet> BinData;
typedef string XMLDocument;
// Basic Geospatial data types
// 3D and 2D floating point coordinate
struct Coordinate2d {
double x;
double y;
};
struct Coordinate3d {
double x;
double y;
double z;
};
struct LinearDimension
{
double dimension;
string reference_system;
};
typedef double AreaDimension;
typedef LinearDimension Height;
typedef LinearDimension Elevation;
typedef LinearDimension Distance;
typedef LinearDimension Radius;
typedef sequence < Coordinate2d > LineString2d;
typedef sequence < Coordinate3d > LineString3d;
typedef sequence < Coordinate2d > Polygon;
typedef sequence < Polygon > PolygonSet;
struct Circle
{
Coordinate2d centerpoint;
Radius aRadius;
};
struct Ellipse
{
Coordinate2d centerpoint;
Distance minor_axis_len;
Distance major_axis_len;
Angle north_angle;
};
struct Rectangle
{
Coordinate2d upper_left;
Coordinate2d lower_right;
};
typedef sequence < Rectangle > RectangleList;
typedef double FileSize;
typedef double Weight;
// Simple composite geospatial datatypes
enum BufferType
{
OCTET_DATA, CHAR_DATA, SHORT_DATA, USHORT_DATA,
LONG_DATA, ULONG_DATA, FLOAT_DATA, DOUBLE_DATA
};
typedef sequence < octet > octetList;
typedef sequence < char >charList;
typedef sequence < unsigned short >ushortList;
typedef sequence < short >shortList;
typedef sequence < unsigned long >ulongList;
typedef sequence < long >longList;
typedef sequence < float >floatList;
typedef sequence < double >doubleList;
union Buffer
switch (BufferType)
{
case OCTET_DATA: octetList octet_buffer;
case CHAR_DATA: charList char_buffer;
case USHORT_DATA:ushortList ushort_buffer;
case SHORT_DATA: shortList short_buffer;
case ULONG_DATA: ulongList ulong_buffer;
case LONG_DATA: longList long_buffer;
case FLOAT_DATA: floatList float_buffer;
case DOUBLE_DATA:doubleList double_buffer;
};
struct SimpleGSImage
{
unsigned long width;
unsigned long height;
Buffer pixels;
};
struct SimpleCImage
{
unsigned long width;
unsigned long height;
Buffer red_pixels;
Buffer green_pixels;
Buffer blue_pixels;
};
struct CompressedImage
{
unsigned long width;
unsigned long height;
string compression_form;
octetList data;
};
enum State
{
COMPLETED, IN_PROGRESS, ABORTED, CANCELED, PENDING,
SUSPENDED, RESULTS_AVAILABLE, TRANSFER_COMPLETE
};
struct Status
{
State completion_state;
boolean warning;
string status_message;
};
struct EntityNode
{
NodeID id;
string entity_name;
};
struct EntityRelationship
{
NodeID start_node;
NodeID end_node;
Cardinality start_to_end_card;
Cardinality end_to_start_card;
};
typedef sequence < EntityNode > EntityNodeList;
typedef sequence < EntityRelationship > EntityRelationshipList;
struct EntityGraph
{
EntityNodeList nodes;
EntityRelationshipList relationship;
};
//***********************************************************
// Exception Structure and Exceptions for the UCO (also
// used for GIAS, GIXS and Profile Service)
//************************************************************
struct exception_details {
string exception_name;
boolean standard_exception_name;
string exception_desc;
};
//InvalidInputParameter Exception
exception InvalidInputParameter {
exception_details details;
UCO::NameList badInputParameters;
};
//Processing Fault Exception
exception ProcessingFault {
exception_details details;
};
//System Fault Exception
exception SystemFault {
exception_details details;
};
};
#endif

38
idl/gias/uid.idl Normal file
View File

@ -0,0 +1,38 @@
#ifndef UID_IDL
#define UID_IDL
//***************************************************************
//* APPROVED via RFC N01-0268 on 6 August 2001
//***************************************************************
// *************************************************************
//*
//* The USIGS Universal Product Identifier
//* Specification
//*
//*
//* Description: Defines a universal USIGS product
//* identification.
//*
//*
//* History:
//* Date Author Comment
//* ----- ------ --------
//* 29 Sept 98 J. Baldo and D. Lutz Initial release for
//* review.
//*
//* Notes
//* -------
//* NONE
//*
//*
// *************************************************************
module UID
{
interface Product
{
};
typedef sequence < Product > ProductList;
};
#endif