diff --git a/experiments/epollecho/echo.adb b/experiments/epollecho/echo.adb index 898980a..d153b8b 100644 --- a/experiments/epollecho/echo.adb +++ b/experiments/epollecho/echo.adb @@ -2,13 +2,17 @@ with Ada.Text_IO, GNAT.Sockets, Async.Epoll; -use Ada.Text_IO; +use Ada.Text_IO, + GNAT.Sockets; package body Echo is - procedure Call_Me_Back (Sock : GNAT.Sockets.Socket_Type; + procedure Call_Me_Back (Sock : Socket_Type; Ctx : Async.Epoll.Context_Type) is + New_Sock : Socket_Type; begin Put_Line (">>> Starting Call_Me_Back"); + + Accept_Socket(Sock, New_Sock); end Call_Me_Back; end Echo; diff --git a/experiments/epollecho/echo.ads b/experiments/epollecho/echo.ads index 32f8f2e..9d9e003 100644 --- a/experiments/epollecho/echo.ads +++ b/experiments/epollecho/echo.ads @@ -2,6 +2,10 @@ with GNAT.Sockets; with Async.Epoll; package Echo is + type Echo_State is new Async.Epoll.Context_Type with record + Server_Addr : GNAT.Sockets.Sock_Addr_Type; + end record; + procedure Call_Me_Back (Sock : GNAT.Sockets.Socket_Type; - Ctx : Async.Epoll.Context_Type); + Ctx : Async.Epoll.Context_Type); end Echo; diff --git a/experiments/epollecho/echoserver.adb b/experiments/epollecho/echoserver.adb index beec0ea..b4230ed 100644 --- a/experiments/epollecho/echoserver.adb +++ b/experiments/epollecho/echoserver.adb @@ -38,12 +38,17 @@ begin declare Ctx : Async.Epoll.Callback_Tuple; + State : Echo.Echo_State; begin The_Hub.Enable_Tracing; + State.Server_Addr := ServerAddr; Ctx.Callback := Echo.Call_Me_Back'Access; Ctx.Socket := ServerSock; + Ctx.Context := State; The_Hub.Register (Ctx); + The_Hub.Run; end; + return; loop Accept_Socket (ServerSock, ClientSock, ServerAddr);