Echo server: Difference between revisions

m
Line 54:
with Ada.IO_Exceptions;
with GNAT.Sockets;
procedure Echo_Server_Multiecho_server_multi is
-- Multiple socket connections example based on Rosetta Code Echo_Serverecho server.
 
Tasks_To_Create : constant := 3; -- simultaneous socket connections.
Line 66:
subtype Index is integer range 1 .. Tasks_To_Create;
protected type Info is
procedure Push_Stack (Return_Task_Index : in integerIndex);
procedure Initialize_Stack;
entry Pop_Stack (Get_Task_Index : out integerIndex);
private
Task_Stack : Integer_List; -- Stack of free-to-use tasks.
Line 76:
 
protected body Info is
procedure Push_Stack (Return_Task_Index : in integerIndex) is
begin -- Performed by tasks that were popped, so won't overflow.
Stack_Pointer := Stack_Pointer + 1;
Line 82:
end;
 
entry Pop_Stack (Get_Task_Index : out integerIndex) when Stack_Pointer /= 0 is
begin -- guarded against underflow.
Get_Task_Index := Task_Stack(Stack_Pointer);
Line 90:
procedure Initialize_Stack is
begin
for I in Task_Stack'Rangerange loop
Push_Stack (I);
end loop;
Line 194:
begin
Echo_Server.Listen;
end Echo_Server_Multiecho_server_multi;
</lang>
 
Anonymous user