with Agila_Ports; package body Agila_ABI is State : Agila_Ports.Manager; function Create (Owner : Word) return Word is Handle : Word; Result : Agila_Ports.Status; begin Agila_Ports.Create (State, Owner, Handle, Result); return Handle; end Create; function Allow_Sender (Handle, Owner, Sender : Word) return Code is Result : Agila_Ports.Status; begin Agila_Ports.Allow_Sender (State, Handle, Owner, Sender, Result); return Agila_Ports.Status'Pos (Result); end Allow_Sender; function Revoke_Sender (Handle, Owner, Sender : Word) return Code is Result : Agila_Ports.Status; begin Agila_Ports.Revoke_Sender (State, Handle, Owner, Sender, Result); return Agila_Ports.Status'Pos (Result); end Revoke_Sender; function Send (Handle, Caller, Value : Word) return Code is Result : Agila_Ports.Status; begin Agila_Ports.Send (State, Handle, Caller, Value, Result); return Agila_Ports.Status'Pos (Result); end Send; function Receive (Handle, Caller : Word; Value : access Word) return Code is Item : Agila_Ports.Message; Result : Agila_Ports.Status; begin if Value = null then return Agila_Ports.Status'Pos (Agila_Ports.Invalid_Argument); end if; Agila_Ports.Receive (State, Handle, Caller, Item, Result); Value.all := Item.Value; return Agila_Ports.Status'Pos (Result); end Receive; function Close (Handle, Caller : Word) return Code is Result : Agila_Ports.Status; begin Agila_Ports.Close (State, Handle, Caller, Result); return Agila_Ports.Status'Pos (Result); end Close; end Agila_ABI;