File : posix-xti-mosi.ads


------------------------------------------------------------------------------
--                                                                          --
--   POSIX Ada95 Bindings for Protocol Independent Interfaces (P1003.5c)    --
--                                                                          --
--                        P O S I X . X T I . m O S I                       --
--                                                                          --
--                                  S p e c                                 --
--                                                                          --
--                                                                          --
--  This file is part of an implementation of an Ada95 API for the sockets  --
--  and network support services found in P1003.1g -- Protocol Independent  --
--  Interfaces.  It is integrated with the  FSU Implementation of POSIX.5b  --
--  (FLORIST), an Ada API for  POSIX OS services for use with the GNAT Ada  --
--  compiler and the FSU Gnu Ada Runtime Library (GNARL).                   --
--                                                                          --
--  This package specification contains some text extracted from  IEEE STD  --
--  1003.5: 1990, Information Technology --  POSIX Ada Language Interfaces  --
--  Part 1:  Binding for System Application Program Interface,  as amended  --
--  by IEEE STD 1003.5b: 1996,  Amendment 1: Realtime  Extensions,  and as  --
--  further amended by IEEE Draft STD 1003.5c: 1997, Amendment 2: Protocol  --
--  Independent Interfaces,  copyright 1997 by the Institute of Electrical  --
--  and Electronics Engineers, Inc.                                         --
--                                                                          --
--  The package specifications in the IEEE standards cited above represent  --
--  only a  portion  of  the  documents  and  are  not to be interpreteted  --
--  outside the context  of  the documents.  The standards must be used in  --
--  conjunction  with  the  package   specifications  in  order  to  claim  --
--  conformance.   The IEEE takes no responsibility for and will assume no  --
--  liability for damages resulting from the reader's misinterpretation of  --
--  said  information resulting from its out-of-context nature.   To order  --
--  copies of the IEEE standards,  please contact the  IEEE Service Center  --
--  at 445 Hoes Lane, PO Box 1331, Piscataway, NJ 08855-1331; via phone at  --
--  1-800-678-IEEE, 908-981-1393; or via fax at 908-981-9667.               --
--                                                                          --
--  These  package  specifications are  distributed in  the hope that they  --
--  will  be useful, but  WITHOUT  ANY  WARRANTY; without even the implied  --
--  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.        --
--                                                                          --
------------------------------------------------------------------------------

with POSIX.C;
package POSIX.XTI.mOSI is

   type mOSI_XTI_Address is new XTI_Address with private;
   mOSI_Address_Length_Maximum : constant Natural := 0;
   type AP_Invocation_Id is new POSIX.Octet_Array;
   type AE_Invocation_Id is new POSIX.Octet_Array;
   type AP_Title is new POSIX.Octet_Array;
   type AE_Qualifier is new POSIX.Octet_Array;
   type Presentation_Address is new POSIX.Octet_Array;
   type mOSI_Address_Flags is new POSIX.Option_Set;
   AP_Invocation_Id_Valid : constant mOSI_Address_Flags := Empty_Set;
   AE_Invocation_Id_Valid : constant mOSI_Address_Flags := Empty_Set;
   function Get_Flags
      (Address : mOSI_XTI_Address)
     return mOSI_Address_Flags;
   procedure Set_Flags
      (Address : in out mOSI_XTI_Address;
       To      : in     mOSI_Address_Flags);
   function Get_AP_Invocation_Id
      (Address : mOSI_XTI_Address)
     return AP_Invocation_Id;
   procedure Set_AP_Invocation_Id
      (Address : in out mOSI_XTI_Address;
       To      : in     AP_Invocation_Id);
   function Get_AE_Invocation_Id
      (Address : mOSI_XTI_Address)
     return AE_Invocation_Id;
   procedure Set_AE_Invocation_Id
      (Address : in out mOSI_XTI_Address;
       To      : in     AE_Invocation_Id);
   function Get_AP_Title
      (Address : mOSI_XTI_Address)
     return AP_Title;
   function Get_AE_Qualifier
      (Address : mOSI_XTI_Address)
     return AE_Qualifier;
   function Get_Presentation_Address
      (Address : mOSI_XTI_Address)
     return Presentation_Address;
   procedure Set_OSI_Address
      (Address : in out mOSI_XTI_Address;
       AP      : in     AP_Title;
       AE      : in     AE_Qualifier;
       PA      : in     Presentation_Address);
   --  Dispatching operations for mOSI_XTI_Address
   procedure Get_Address
      (Info_Item : in     Connection_Information;
       Address   : in out mOSI_XTI_Address);

   mOSI_Connection_Mode     : constant Option_Level := 0;
   mOSI_Connectionless_Mode : constant Option_Level := 0;
   Application_Context      : constant Option_Name := 0;
   Presentation_Context     : constant Option_Name := 0;
   type Object_Identifier is new POSIX.Octet_Array;
   type Application_Context_Name is new Object_Identifier;
   type Presentation_Context_List is private;
   function Get_Value (Option_Item : Protocol_Option)
     return Application_Context_Name;
   procedure Set_Option
      (Option_Item : in out Protocol_Option;
       Level       : in     Option_Level;
       Name        : in     Option_Name;
       Value       : in     Application_Context_Name);
   function Get_Value (Option_Item : Protocol_Option)
     return Presentation_Context_List;
   procedure Set_Option
      (Option_Item : in out Protocol_Option;
       Level       : in     Option_Level;
       Name        : in     Option_Name;
       Value       : in     Presentation_Context_List);
   --  Presentation Context Definition and Result List
   type Presentation_Context_Item is private;
   type Presentation_Item_Id is new Integer;
   procedure Set_Presentation_Id
      (List : in out Presentation_Context_Item;
       Item : in     Presentation_Item_Id);
   function Get_Presentation_Id
      (Item : Presentation_Context_Item)
     return Presentation_Item_Id;
   type Negotiation_Result is
      (Presentation_Context_Accepted, Presentation_Context_Rejected,
       Rejected_No_Reason_Specified, Abstract_Syntax_Not_Supported,
       Transfer_Syntax_Not_Supported, Local_DCS_Limit_Exceeded);
   procedure Set_Negotiation_Result
      (List : in out Presentation_Context_Item;
       Item : in     Negotiation_Result);
   function Get_Negotiation_Result
      (Item : Presentation_Context_Item)
     return Negotiation_Result;
   type Syntax_Object_List is private;
   procedure Set_Syntax_Object
      (List : in out Presentation_Context_Item;
       Item : in     Syntax_Object_List);
   function Get_Syntax_Object
      (Item : Presentation_Context_Item)
     return Syntax_Object_List;
   Empty_Presentation_Context_List : constant Presentation_Context_List;
   procedure Make_Empty (List : in out Presentation_Context_List);
   procedure Add_Item_To_List
      (List : in out Presentation_Context_List;
       Item : in     Presentation_Context_Item);
   generic
       with procedure Action
          (Id   : in     Presentation_Context_Item;
           Quit : in out Boolean);
   procedure For_Every_Presentation_Context_Item
      (List : in Presentation_Context_List);
   Empty_Syntax_Object_List : constant Syntax_Object_List;
   procedure Make_Empty (List : in out Syntax_Object_List);
   procedure Add_Item_To_List
      (List : in out Syntax_Object_List;
       Item : in     Object_Identifier);
   generic
       with procedure Action
          (Object : in     Object_Identifier;
           Quit   : in out Boolean);
   procedure For_Every_Object_Identifier
      (List : in Syntax_Object_List);

   Rejected_By_Peer          : constant Reason_Code := 0;
   AC_Name_Not_Supported     : constant Reason_Code := 0;
   Unrecognized_AP_Title     : constant Reason_Code := 0;
   Unrecognized_AE_Qualifier : constant Reason_Code := 0;
   Authentication_Required   : constant Reason_Code := 0;
   Aborted_By_Peer           : constant Reason_Code := 0;
   No_Common_Version         : constant Reason_Code := 0;

private
   
   type mOSI_XTI_Address is new XTI_Address with null record;
   type Presentation_Context_List is new Integer;
   type Presentation_Context_Item is new Integer;
   type Syntax_Object_List is new Integer;
   Empty_Presentation_Context_List : constant Presentation_Context_List := 0;
   Empty_Syntax_Object_List : constant Syntax_Object_List := 0;
end POSIX.XTI.mOSI;