45 lines
1.6 KiB
Ada
45 lines
1.6 KiB
Ada
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;
|