Remove result out parameter from EES Init
[strongswan.git] / src / charon-tkm / src / ees / esa_event_service.adb
1 --
2 --  Copyright (C) 2012 Reto Buerki
3 --  Copyright (C) 2012 Adrian-Ken Rueegsegger
4 --  Hochschule fuer Technik Rapperswil
5 --
6 --  This program is free software; you can redistribute it and/or modify it
7 --  under the terms of the GNU General Public License as published by the
8 --  Free Software Foundation; either version 2 of the License, or (at your
9 --  option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
10 --
11 --  This program is distributed in the hope that it will be useful, but
12 --  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 --  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 --  for more details.
15 --
16
17 with Anet.Sockets.Unix;
18 with Anet.Receivers.Stream;
19
20 with Tkmrpc.Dispatchers.Ees;
21 with Tkmrpc.Process_Stream;
22
23 pragma Elaborate_All (Anet.Receivers.Stream);
24 pragma Elaborate_All (Tkmrpc.Process_Stream);
25
26 package body Esa_Event_Service
27 is
28
29    package Unix_TCP_Receiver is new Anet.Receivers.Stream
30      (Socket_Type => Anet.Sockets.Unix.TCP_Socket_Type);
31
32    procedure Dispatch is new Tkmrpc.Process_Stream
33      (Dispatch => Tkmrpc.Dispatchers.Ees.Dispatch);
34
35    Sock     : aliased Anet.Sockets.Unix.TCP_Socket_Type;
36    Receiver : Unix_TCP_Receiver.Receiver_Type (S => Sock'Access);
37
38    -------------------------------------------------------------------------
39
40    procedure Finalize
41    is
42    begin
43       Receiver.Stop;
44    end Finalize;
45
46    -------------------------------------------------------------------------
47
48    procedure Init (Address : Interfaces.C.Strings.chars_ptr)
49    is
50       Path : constant String := Interfaces.C.Strings.Value (Address);
51    begin
52       Sock.Init;
53       Sock.Bind (Path => Anet.Sockets.Unix.Path_Type (Path));
54       Receiver.Listen (Callback => Dispatch'Access);
55    end Init;
56
57 end Esa_Event_Service;