|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 7168 (0x1c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Connector_Frames, seg_055cf5
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
package body Connector_Frames is The_Connection : Orb_Defs.Connection_Id; -- The connection ID of the connector The_Socket_Id : Orb_Defs.Socket_Id; -- The socket ID where the connector picks its datas The_Status : Transport_Defs.Status_Code; -- The current connection status procedure Convert (To_Be_Converted : Frame_Defs.Communication_Data; Converted : out Frame_Defs.Frame) is begin Frame_Defs.Set_Frame (To_Be_Converted, Converted); end Convert; task Guru is entry Activate; entry Dispose; end Guru; task body Guru is type State is (Not_Connected, Trying_A_Passive_Connect, Connected); The_Current_State : State; The_Data_From_Socket : Frame_Defs.Communication_Data; The_Data_To_Put : Frame_Defs.Frame; The_Count : Natural; The_Wait : Duration := 5.0; Done : Boolean := False; begin Text_Io.Put_Line ("Connector launched."); The_Current_State := Not_Connected; loop select accept Activate do The_Current_State := Trying_A_Passive_Connect; end Activate; or accept Dispose do Done := True; end Dispose; else if The_Current_State = Trying_A_Passive_Connect then Text_Io.Put_Line ("Connector waiting for something on the socket..."); Transport.Connect (Connection => The_Connection, Status => The_Status, Max_Wait => 10.0); if Transport_Defs.Image (The_Status) = Transport_Defs.Image (Transport_Defs.Ok) then Text_Io.Put_Line ("Connection successfull !"); The_Current_State := Connected; else The_Current_State := Trying_A_Passive_Connect; Text_Io.Put_Line ("Retry-ing a passive connect."); end if; else if The_Current_State = Connected then Transport.Receive (Connection => The_Connection, Status => The_Status, Data => The_Data_From_Socket, Count => The_Count); Text_Io.Put_Line ("Something was received by the connector."); Text_Io.Put_Line ("RECEIVED:"); Frame_Defs.Set_Frame (The_Data_From_Socket, The_Data_To_Put); Text_Io.Put_Line (Frame_Defs.Image (The_Data_To_Put)); Text_Io.Put_Line ("hey, Jude, guru's going to post !"); Letter_Box_Frames.Put (The_Data_To_Put); Transport.Disconnect (The_Connection); The_Current_State := Trying_A_Passive_Connect; Text_Io.Put_Line ("guru's connector is alive and has just posted a mail !"); else Text_Io.Put_Line ("guru's connector is alive and idles..."); delay (3.0); end if; end if; end select; exit when Done = True; end loop; end Guru; procedure Init (The_Initial_Socket : in Orb_Defs.Socket_Id) is begin -- fixer la valeur initiale de la socket The_Socket_Id := The_Initial_Socket; -- Demander une socket Text_Io.Put_Line ("Opening connection."); Transport.Open (Connection => The_Connection, Status => The_Status, Local_Socket => The_Socket_Id, Network => Orb_Defs.Network_Kind); The_Socket_Id := Transport.Local_Socket (The_Connection); Text_Io.Put_Line ("Connexion STATUS : "); Text_Io.Put_Line (Transport_Defs.Image (The_Status)); Text_Io.Put_Line ("The connnection is opened."); Guru.Activate; end Init; function Get_Current_Socket return Orb_Defs.Socket_Id is begin return The_Socket_Id; end Get_Current_Socket; procedure Dispose is begin Guru.Dispose; end Dispose; end Connector_Frames;
nblk1=6 nid=0 hdr6=c [0x00] rec0=23 rec1=00 rec2=01 rec3=040 [0x01] rec0=1d rec1=00 rec2=06 rec3=070 [0x02] rec0=09 rec1=00 rec2=04 rec3=018 [0x03] rec0=10 rec1=00 rec2=05 rec3=002 [0x04] rec0=1d rec1=00 rec2=02 rec3=022 [0x05] rec0=10 rec1=00 rec2=03 rec3=000 tail 0x21761059487c0690d4205 0x42a00088462060003