Skip to content

Commit

Permalink
Move definition of Port and Host into Socket_Util
Browse files Browse the repository at this point in the history
  • Loading branch information
malaise committed Nov 7, 2023
1 parent 82c0abe commit 11aa814
Show file tree
Hide file tree
Showing 45 changed files with 525 additions and 508 deletions.
16 changes: 8 additions & 8 deletions reposit/autobus-config.adb
Expand Up @@ -105,11 +105,11 @@ package body Config is

-- Check an IP address format
function Check_Address (Str : in String) return Boolean is
Host : Tcp_Util.Remote_Host;
use type Tcp_Util.Remote_Host_List;
Host : Socket_Util.Remote_Host;
use type Socket_Util.Remote_Host_List;
begin
Host := Ip_Addr.Parse (Str);
if Host.Kind /= Tcp_Util.Host_Id_Spec then
if Host.Kind /= Socket_Util.Host_Id_Spec then
Log_Error ("Config.Init", "invalid alias address", Str);
return False;
end if;
Expand All @@ -118,15 +118,15 @@ package body Config is

-- Check a bus name "A-<ip_addr>:<port>"
function Check_Bus (Addr : String) return Boolean is
Host : Tcp_Util.Remote_Host;
Port : Tcp_Util.Remote_Port;
use type Tcp_Util.Remote_Host_List, Tcp_Util.Remote_Port_List;
Host : Socket_Util.Remote_Host;
Port : Socket_Util.Remote_Port;
use type Socket_Util.Remote_Host_List, Socket_Util.Remote_Port_List;
begin
if Addr'Length >= Bus_Prefix'Length
and then Addr(Addr'First .. Addr'First+1) = Bus_Prefix then
Ip_Addr.Parse (Addr(Addr'First+2 .. Addr'Last), Host, Port);
if Host.Kind = Tcp_Util.Host_Id_Spec
and then Port.Kind = Tcp_Util.Port_Num_Spec then
if Host.Kind = Socket_Util.Host_Id_Spec
and then Port.Kind = Socket_Util.Port_Num_Spec then
return True;
end if;
end if;
Expand Down
45 changes: 23 additions & 22 deletions reposit/autobus.adb
Expand Up @@ -336,8 +336,9 @@ package body Autobus is
begin
-- Connection was requested with host and port Ids
Tcp_Util.Abort_Connect (
Host => (Kind => Tcp_Util.Host_Id_Spec, Id => Partner_Acc.Host),
Port => (Kind => Tcp_Util.Port_Num_Spec, Num => Partner_Acc.Port));
Host => (Kind => Socket_Util.Host_Id_Spec, Id => Partner_Acc.Host),
Port => (Kind => Socket_Util.Port_Num_Spec,
Num => Partner_Acc.Port));
exception
when Tcp_Util.No_Such =>
Log_Error ("Remove_Current_Partner", "no such",
Expand Down Expand Up @@ -517,14 +518,14 @@ package body Autobus is
-- Check validity of received address
Addr := As.U.Tus (Msg(3 .. Length));
declare
Rem_Host : Tcp_Util.Remote_Host;
Rem_Port : Tcp_Util.Remote_Port;
use type Tcp_Util.Remote_Host_List, Tcp_Util.Remote_Port_List;
Rem_Host : Socket_Util.Remote_Host;
Rem_Port : Socket_Util.Remote_Port;
use type Socket_Util.Remote_Host_List, Socket_Util.Remote_Port_List;
begin
Ip_Addr.Parse (Addr.Image, Rem_Host, Rem_Port);
-- Must be Ids
if Rem_Host.Kind /= Tcp_Util.Host_Id_Spec
or else Rem_Port.Kind /= Tcp_Util.Port_Num_Spec then
if Rem_Host.Kind /= Socket_Util.Host_Id_Spec
or else Rem_Port.Kind /= Socket_Util.Port_Num_Spec then
raise Ip_Addr.Parse_Error;
end if;
-- Ok, store it
Expand Down Expand Up @@ -578,8 +579,8 @@ package body Autobus is

-- Pending connection Cb
function Tcp_Send is new Tcp_Util.Send (Tcp_Message_Str);
procedure Tcp_Connection_Cb (Remote_Host_Id : in Tcp_Util.Host_Id;
Remote_Port_Num : in Tcp_Util.Port_Num;
procedure Tcp_Connection_Cb (Remote_Host_Id : in Socket_Util.Host_Id;
Remote_Port_Num : in Socket_Util.Port_Num;
Connected : in Boolean;
Dscr : in Socket.Socket_Dscr) is
Partner : Partner_Rec;
Expand Down Expand Up @@ -661,10 +662,10 @@ package body Autobus is
end Tcp_Connection_Cb;

-- Accept connection Cb
procedure Tcp_Accept_Cb (Unused_Port_Num : in Tcp_Util.Port_Num;
procedure Tcp_Accept_Cb (Unused_Port_Num : in Socket_Util.Port_Num;
Local_Dscr : in Socket.Socket_Dscr;
Remote_Host_Id : in Tcp_Util.Host_Id;
Remote_Port_Num : in Tcp_Util.Port_Num;
Remote_Host_Id : in Socket_Util.Host_Id;
Remote_Port_Num : in Socket_Util.Port_Num;
New_Dscr : in Socket.Socket_Dscr) is
Bus : Bus_Rec;
Partner : Partner_Rec;
Expand Down Expand Up @@ -718,15 +719,15 @@ package body Autobus is
function Ipm_Reception_Cb (Dscr : Socket.Socket_Dscr;
Message : Message_Str;
Length : Natural) return Boolean is
Rem_Host : Tcp_Util.Remote_Host;
Rem_Port : Tcp_Util.Remote_Port;
Rem_Host : Socket_Util.Remote_Host;
Rem_Port : Socket_Util.Remote_Port;
Partner_Found : Boolean;
Partner_Ipaddr : As.U.Asu_Us;
Partner_Acc : Partner_Access;
Unused_Connected : Boolean;
-- Partner is filled progressively (excep its Sock and Timer)
Partner : Partner_Rec;
use type Tcp_Util.Remote_Host_List, Tcp_Util.Remote_Port_List;
use type Socket_Util.Remote_Host_List, Socket_Util.Remote_Port_List;
use type Socket.Host_Id, Socket.Port_Num;
begin
-- Find bus by admin socket
Expand Down Expand Up @@ -800,8 +801,8 @@ package body Autobus is
begin
-- Check address IP part
Ip_Addr.Parse (Address, Rem_Host, Rem_Port);
if Rem_Host.Kind = Tcp_Util.Host_Name_Spec
or else Rem_Port.Kind = Tcp_Util.Port_Name_Spec then
if Rem_Host.Kind = Socket_Util.Host_Name_Spec
or else Rem_Port.Kind = Socket_Util.Port_Name_Spec then
-- Not an IP address or not a port num
-- Consider this as an error because the frame started all right
Log_Error ("Ipm_Reception_Cb", "invalid IPM address", Address);
Expand Down Expand Up @@ -946,8 +947,8 @@ package body Autobus is

-- Create socket, parse and check address, configure socket
declare
Rem_Host : Tcp_Util.Remote_Host;
Rem_Port : Tcp_Util.Remote_Port;
Rem_Host : Socket_Util.Remote_Host;
Rem_Port : Socket_Util.Remote_Port;
use type Socket.Host_Id;
begin
-- Name is "<ip_address>:<port_num>"
Expand Down Expand Up @@ -1025,7 +1026,7 @@ package body Autobus is
else
-- Create the TCP accepting socket, set accep callback
Tcp_Util.Accept_From (Socket.Tcp_Header,
(Kind => Tcp_Util.Port_Dynamic_Spec),
(Kind => Socket_Util.Port_Dynamic_Spec),
Tcp_Accept_Cb'Access,
Rbus.Acc, Port_Num,
Rbus.Host_If);
Expand Down Expand Up @@ -1284,8 +1285,8 @@ package body Autobus is
procedure Send_To (Bus : in out Bus_Type;
Host_Port_Mode : in String;
Message : in String) is
Host : Tcp_Util.Remote_Host;
Port : Tcp_Util.Remote_Port;
Host : Socket_Util.Remote_Host;
Port : Socket_Util.Remote_Port;
Host_Id : Socket.Host_Id;
Port_Num : Socket.Port_Num;
Mode : Mode_List;
Expand Down
4 changes: 2 additions & 2 deletions reposit/channels-file.adb
Expand Up @@ -49,8 +49,8 @@ package body File is
raise File_Error;
end Close;

function Next_Host return Tcp_Util.Remote_Host is
Host : Tcp_Util.Remote_Host;
function Next_Host return Socket_Util.Remote_Host is
Host : Socket_Util.Remote_Host;
Txt : Xml_Parser.Text_Type;
use type Xml_Parser.Element_Type;
begin
Expand Down
61 changes: 31 additions & 30 deletions reposit/channels.adb
@@ -1,16 +1,16 @@
with System, Ada.Calendar;
with As.U, Environ, Socket, Tcp_Util, Dynamic_List, Event_Mng, Assertion;
pragma Elaborate_All (Tcp_Util);
with As.U, Environ, Socket, Socket_Util, Tcp_Util, Dynamic_List, Event_Mng,
Assertion;
package body Channels is

Byte_Size : constant := System.Storage_Unit;

package Host_Dyn_List_Mng is new Dynamic_List (Tcp_Util.Remote_Host);
package Host_Dyn_List_Mng is new Dynamic_List (Socket_Util.Remote_Host);
package Host_List_Mng renames Host_Dyn_List_Mng.Dyn_List;

-- Destination
type Dest_Rec is record
Host_Name : Tcp_Util.Remote_Host (Tcp_Util.Host_Name_Spec);
Host_Name : Socket_Util.Remote_Host (Socket_Util.Host_Name_Spec);
Host_Id : Socket.Host_Id;
Dscr : Socket.Socket_Dscr := Socket.No_Socket;
Fd : Event_Mng.File_Desc;
Expand Down Expand Up @@ -40,7 +40,7 @@ package body Channels is
function Dscr_Search is new Dest_List_Mng.Search (Dscr_Match);

function Host_Name_Match (D1, D2 : Dest_Rec) return Boolean is
use type Tcp_Util.Remote_Host;
use type Socket_Util.Remote_Host;
begin
return D1.Host_Name = D2.Host_Name;
end Host_Name_Match;
Expand Down Expand Up @@ -75,10 +75,10 @@ package body Channels is
-- The channel
type Channel_Rec is record
Init : Boolean := False;
Name : Tcp_Util.Host_Name;
Name : Socket_Util.Host_Name;
Period : Ada.Calendar.Day_Duration;
Timeout : Ada.Calendar.Day_Duration;
Accept_Num : Tcp_Util.Port_Num := 0;
Accept_Num : Socket_Util.Port_Num := 0;
Dests : Dest_List_Mng.List_Type;
Sends : Send_List_Mng.List_Type;
Replies : Reply_List_Mng.List_Type;
Expand Down Expand Up @@ -129,7 +129,7 @@ package body Channels is

-- May raise End_Error
End_Error : exception;
function Next_Host return Tcp_Util.Remote_Host;
function Next_Host return Socket_Util.Remote_Host;

end File;
package body File is separate;
Expand Down Expand Up @@ -194,8 +194,8 @@ package body Channels is

-- Connection callback (used in read callback on destination
-- disconnection
procedure Connect_Cb (Remote_Host_Id : in Tcp_Util.Host_Id;
Unused_Remote_Port_Num : in Tcp_Util.Port_Num;
procedure Connect_Cb (Remote_Host_Id : in Socket_Util.Host_Id;
Unused_Remote_Port_Num : in Socket_Util.Port_Num;
Unused_Connected : in Boolean;
Dscr : in Socket.Socket_Dscr);

Expand Down Expand Up @@ -242,7 +242,7 @@ package body Channels is
else
declare
Dummy_Res : Boolean;
Port : Tcp_Util.Remote_Port (Tcp_Util.Port_Name_Spec);
Port : Socket_Util.Remote_Port (Socket_Util.Port_Name_Spec);
begin
-- Update record
D_Rec.Dscr := Socket.No_Socket;
Expand Down Expand Up @@ -286,10 +286,10 @@ package body Channels is
Unused_Read : in Boolean)
return Boolean is (Read_Cb (True, Fd));

procedure Accept_Cb (Unused_Local_Port_Num : in Tcp_Util.Port_Num;
procedure Accept_Cb (Unused_Local_Port_Num : in Socket_Util.Port_Num;
Unused_Local_Dscr : in Socket.Socket_Dscr;
Unused_Remote_Host_Id : in Tcp_Util.Host_Id;
Unused_Remote_Port_Num : in Tcp_Util.Port_Num;
Unused_Remote_Host_Id : in Socket_Util.Host_Id;
Unused_Remote_Port_Num : in Socket_Util.Port_Num;
New_Dscr : in Socket.Socket_Dscr) is
use type Socket.Port_Num;
begin
Expand Down Expand Up @@ -319,7 +319,7 @@ package body Channels is
-- Subscription
-- Allow connections to local channel
procedure Subscribe is
Port : Tcp_Util.Local_Port (Tcp_Util.Port_Name_Spec);
Port : Socket_Util.Local_Port (Socket_Util.Port_Name_Spec);
Accept_Dscr : Socket.Socket_Dscr;
use type Socket.Port_Num;
begin
Expand Down Expand Up @@ -378,8 +378,8 @@ package body Channels is
Unused_Read : in Boolean)
return Boolean is (Read_Cb (False, Fd));

procedure Connect_Cb (Remote_Host_Id : in Tcp_Util.Host_Id;
Unused_Remote_Port_Num : in Tcp_Util.Port_Num;
procedure Connect_Cb (Remote_Host_Id : in Socket_Util.Host_Id;
Unused_Remote_Port_Num : in Socket_Util.Port_Num;
Unused_Connected : in Boolean;
Dscr : in Socket.Socket_Dscr) is
Dest : Dest_Rec;
Expand Down Expand Up @@ -409,17 +409,18 @@ package body Channels is


procedure Build_Host_Port (Host_Name : in String;
Host : out Tcp_Util.Remote_Host;
Port : out Tcp_Util.Remote_Port) is
Host : out Socket_Util.Remote_Host;
Port : out Socket_Util.Remote_Port) is
begin
-- Build host and port records
Host := (Kind => Tcp_Util.Host_Name_Spec, Name => As.U.Tus (Host_Name));
Port := (Kind => Tcp_Util.Port_Name_Spec, Name => Channel_Dscr.Name);
Host := (Kind => Socket_Util.Host_Name_Spec,
Name => As.U.Tus (Host_Name));
Port := (Kind => Socket_Util.Port_Name_Spec, Name => Channel_Dscr.Name);
end Build_Host_Port;

-- Add destinations from file
procedure Add_Destinations (File_Name : in String) is
Host : Tcp_Util.Remote_Host;
Host : Socket_Util.Remote_Host;
List : Host_List_Mng.List_Type;
begin
-- Store hosts (fully parse file)
Expand Down Expand Up @@ -471,8 +472,8 @@ package body Channels is
-- Add a new recipient
procedure Add_Destination (Host_Name : in String) is
Dest : Dest_Rec;
Host : Tcp_Util.Remote_Host;
Port : Tcp_Util.Remote_Port;
Host : Socket_Util.Remote_Host;
Port : Socket_Util.Remote_Port;
begin
Init;
-- Build host and port records
Expand Down Expand Up @@ -525,8 +526,8 @@ package body Channels is
-- Close current connection in Dest list (may be pending)
procedure Close_Current_Connection is
Dest : Dest_Rec;
Host : Tcp_Util.Remote_Host;
Port : Tcp_Util.Remote_Port;
Host : Socket_Util.Remote_Host;
Port : Socket_Util.Remote_Port;
use type Socket.Socket_Dscr;
begin
Channel_Dscr.Dests.Read (Dest, Dest_List_Mng.Current);
Expand All @@ -546,8 +547,8 @@ package body Channels is
-- Delete a recipient
procedure Del_Destination (Host_Name : in String) is
Dest : Dest_Rec;
Host : Tcp_Util.Remote_Host;
Port : Tcp_Util.Remote_Port;
Host : Socket_Util.Remote_Host;
Port : Socket_Util.Remote_Port;
begin
Init;
-- Build host and port records
Expand Down Expand Up @@ -797,8 +798,8 @@ package body Channels is
Active : Boolean := False;
Subscribed : Boolean := False;
Joined : Boolean := False;
Bus_Name : Tcp_Util.Port_Name;
Dest_Name : Tcp_Util.Host_Name;
Bus_Name : Socket_Util.Port_Name;
Dest_Name : Socket_Util.Host_Name;
Send_Dscr : Socket.Socket_Dscr;
Rece_Dscr : Socket.Socket_Dscr;
Bus_Id : Socket.Host_Id;
Expand Down
12 changes: 6 additions & 6 deletions reposit/http.adb
@@ -1,6 +1,6 @@
with Ada.Calendar;
with Aski, Trace.Loggers, Environ, Str_Util, Parser,
Event_Mng, Timers, Ip_Addr, Socket, Tcp_Util, Mutexes;
Event_Mng, Timers, Ip_Addr, Socket, Socket_Util, Tcp_Util, Mutexes;
package body Http is

-- The Mutex of exclusive execution
Expand All @@ -25,8 +25,8 @@ package body Http is
Result : Result_Type;

-- The request
Host : Tcp_Util.Remote_Host;
Port : Tcp_Util.Remote_Port;
Host : Socket_Util.Remote_Host;
Port : Socket_Util.Remote_Port;
Request : As.U.Asu_Us;

-- The socket
Expand Down Expand Up @@ -259,7 +259,7 @@ package body Http is
Iter : Parser.Iterator;
Addr : As.U.Asu_Us;
Port_Start : Natural;
use type Tcp_Util.Remote_Host_List, Tcp_Util.Remote_Port_List;
use type Socket_Util.Remote_Host_List, Socket_Util.Remote_Port_List;
begin
-- Parse protocol: "http://<addr>"
-- Where addr is <host>[:<port>]/<path>
Expand Down Expand Up @@ -287,13 +287,13 @@ package body Http is
Port := Ip_Addr.Parse (Addr.Slice (Port_Start + 1, Addr.Length));
end if;
Iter.Del;
if Host.Kind = Tcp_Util.Host_Name_Spec then
if Host.Kind = Socket_Util.Host_Name_Spec then
Addr := Host.Name;
else
Addr := As.U.Tus (Ip_Addr.Image (Host.Id));
end if;
Logger.Log_Debug ("Server address is " & Addr.Image);
if Port.Kind = Tcp_Util.Port_Name_Spec then
if Port.Kind = Socket_Util.Port_Name_Spec then
Addr := Port.Name;
else
Addr := As.U.Tus (Ip_Addr.Image (Port.Num));
Expand Down

0 comments on commit 11aa814

Please sign in to comment.