DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦f4c9b3814⟧ Ada Source

    Length: 11264 (0x2c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Date_Test, seg_05259c

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



with Behavior;
with Identifier;
with Method;
with Message_New;
with Message_Transport;
with Parameter;
with Signature;  
with Transport;
with Transport_Defs;
with Text_Io;  
with Message_Transport;

use Text_Io;
package body Date_Test is

    procedure Process_Message (Stream : Message_Transport.Stream_Id;
                               Message : Message_New.Object);
    procedure Register (Host : String;
                        Socket : Message_Transport.Socket;
                        Stream : out Message_Transport.Stream_Id);

    procedure Transport_Start is new Message_Transport.Start_Server
                                        (Register_Service => Register,
                                         Service_Identified => Identified,
                                         Ready_To_Receive => Ready_To_Receive,
                                         Receive_Callback => Process_Message);


    task Tx is  
        entry Start;
        --       entry Go;
    end Tx;

    procedure Request (M : Message_New.Object;
                       S : Message_Transport.Stream_Id;
                       Addresse : in out Natural) is separate;


    procedure Notification (M : Message_New.Object;
                            S : Message_Transport.Stream_Id;
                            Address : in out Natural) is separate;


    procedure Register (Host : String;
                        Socket : Message_Transport.Socket;
                        Stream : out Message_Transport.Stream_Id) is

        Status : Message_Transport.Status_Code;
        Stream_Reg : Message_Transport.Stream_Id;
        Request_Nul : Natural := 0;
        Port : Natural := 0;
        use Message_Transport;
    begin

        Text_Io.Put_Line ("avant Message_Transport.Create du stream");
        Text_Io.Put_Line ("remote_host = " &
                          Identifier.Get_Host (Identifier.Broker));
        Text_Io.Put_Line ("remote_Socket = " &
                          Integer'Image (Integer (Identifier.Get_Socket
                                                     (Identifier.Broker))));
        Message_Transport.Create
           (Remote_Host => Identifier.Get_Host (Identifier.Broker),
            Remote_Socket => Identifier.Get_Socket (Identifier.Broker),
            Number_Of_Retry => 10,
            Retry_Delay => 0.1,
            Stream => Stream_Reg,
            Status => Status);

        Text_Io.Put_Line ("LOCAL_SOCKET = " &
                          Natural'Image (Transport_Defs.Hash
                                            (Transport.Local_Socket
                                                (Message_Transport.
                                                 Identifie_Connection
                                                    (Stream_Reg)))));

        Port := Transport_Defs.Hash
                   (Transport.Local_Socket
                       (Message_Transport.Identifie_Connection (Stream_Reg)));

        Text_Io.Put_Line ("STREAM_REG = " &
                          Natural'Image (Message_Transport.Hash (Stream_Reg)));
        Text_Io.Put_Line ("envoi registration");
        Message_Transport.Put
           (Stream => Stream_Reg,
            Message => Standard.Message_New.Image
                          (Message_New.Create
                              (Class => Message_New.Registration,
                               Addressee => Identifier.Hash (Identifier.Broker),
                               Sender => 0,
                               Request => Request_Nul,
                               Method => "registration",
                               Parameter1_Name => "host",
                               Parameter1_Class => "string",
                               Parameter1_Value => "ancolie",
                               Parameter2_Name => "socket",
                               Parameter2_Class => "string",
                               Parameter2_Value => "2605")),
            Status => Status);

        Text_Io.Put_Line ("REGISTRATION TERMINEE & STREAM_REG = " &
                          Natural'Image (Message_Transport.Hash (Stream_Reg)));


        if Status /= Message_Transport.Ok then
            Text_Io.Put_Line ("registration_error");
            --  raise Not_Registered_Error;
        end if;

        Stream := Stream_Reg;
    end Register;



    task body Tx is  
        Status : Message_Transport.Status_Code;
        Request_Nul : Natural := 0;  
        Stream_Reg : Message_Transport.Stream_Id;
        This : Identifier.Object;
        M : Message_New.Object;
        Port : Natural;
        S : Message_Transport.Stream_Id;
    begin
        accept Start;

        --    accept Go; -- we have been registered, and can publish

        declare
        begin

            Register_Service (Stream => Stream_Reg);
            -- Process_Message (S, M);
            Port := Transport_Defs.Hash
                       (Transport.Local_Socket
                           (Message_Transport.Identifie_Connection
                               (Stream_Reg)));
            Text_Io.Put_Line (" PORT => " & Natural'Image (Port));

            Message_Transport.Put
               (Stream => Stream_Reg,
                Message => Message_New.Image
                              (Message_New =>
                                  Message_New.Create
                                     (Class => Message_New.Publication,
                                      Addressee => Identifier.Hash
                                                      (Id => Identifier.Broker),
                                      Sender => 2,
                                      --    Sender => Port,
                                      Request => 0,
                                      Method => "date",
                                      Parameter_Name => "date",
                                      Parameter_Class => "string",
                                      Parameter_Value => Parameter.Void)),
                Status => Status);
        exception
            when others =>
                Put_Line ("ca a foire");
        end;

        loop
            delay Duration'Last;
        end loop;
        --    end;
    end Tx;


    procedure Process_Message (S : Message_Transport.Stream_Id;
                               M : Message_New.Object) is
        use Message_New;  
        The_Found, The_Found_1 : Message_Transport.Stream_Id;
        Mes : Message_New.Object;
        Iter : Transport.Connection_Id_Iterator;
        Found : Boolean := False;
        Connection : Transport.Connection_Id;
        Connection_Natural : Natural;
        Addr : Natural;  
        Id : Natural := 0;

    begin

        Put_Line ("--- PROCESSING MESSAGE => " & Message_New.Image (M));

        case Message_New.Get_Class (M) is
            when Message_New.Request =>
                Request (M, S, Addr);
            when Message_New.Notification =>
                Notification (M, S, Addr);
            when others =>
                null;
        end case;  
        Id := Addr;
    end Process_Message;


    procedure Start is
    begin
        Tx.Start;
    end Start;

end Date_Test;

E3 Meta Data

    nblk1=a
    nid=5
    hdr6=12
        [0x00] rec0=20 rec1=00 rec2=01 rec3=00c
        [0x01] rec0=00 rec1=00 rec2=02 rec3=006
        [0x02] rec0=1b rec1=00 rec2=0a rec3=032
        [0x03] rec0=0d rec1=00 rec2=04 rec3=026
        [0x04] rec0=13 rec1=00 rec2=07 rec3=04c
        [0x05] rec0=1b rec1=00 rec2=09 rec3=020
        [0x06] rec0=1b rec1=00 rec2=06 rec3=01e
        [0x07] rec0=19 rec1=00 rec2=08 rec3=038
        [0x08] rec0=1f rec1=00 rec2=03 rec3=000
        [0x09] rec0=49 rec1=07 rec2=ac rec3=3b4
    tail 0x2154baed687a072fe608d 0x42a00088462060003
Free Block Chain:
  0x5: 0000  00 00 02 54 80 3b 20 20 20 20 20 20 20 20 20 20  ┆   T ;          ┆