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

⟦7546e8171⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Dtia_Server, seg_02595e

Derivation

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

E3 Source Code



with Communications;
with Copy_R;
with Create_R;
with Delete_R;
with Expunge_R;
with File_Exists_R;
with Files;
with Get_R;
with Identity;
with Input_To_Shell_R;
with Interchange;
with Last_Update_R;
with Ls_R;
with Mac_Files;
with Mac_Types;
with Move_R;
with Put_R;
with Rational_Error;
with Remote_Shell;
with Signal_To_Shell_R;
with Talk_Utils;
with Tcp;
with Text_Io;
use Text_Io;
package body Dtia_Server is

    procedure Talk (Aconnection : in out Communications.Connection) is

        I : Mac_Types.Longint;

    begin
        loop
            Mac_Files.Set_Current_User_Home;
            begin
                Interchange.Get_Int (Aconnection, I);
            exception
                when Tcp.Device_Error =>
                    Remote_Shell.Kill;
                    return;
                when others =>
                    Remote_Shell.Kill;
                    raise;
            end;  
            if I = Talk_Utils.F_Disconnect then
                Put_Line ("dtia_server.talk: get F_Disconnect");
                Remote_Shell.Kill;
                return;
            end if;
            if I /= Talk_Utils.F_Delimitor then
                Put_Line ("dtia_server.talk: expected F_Delimitor");
                Remote_Shell.Kill;
                Rational_Error.Raise_Error (Rational_Error.Internal_Error);
            end if;
            begin
                Interchange.Get_Int (Aconnection, I);
                case I is
                    when Talk_Utils.R_Create =>
                        Create_R.Read (Aconnection);
                        Create_R.Write (Aconnection);
                    when Talk_Utils.R_Put =>
                        Put_R.Read (Aconnection);
                        Put_R.Write (Aconnection);
                    when Talk_Utils.R_Get =>
                        Get_R.Read (Aconnection);
                        Get_R.Write (Aconnection);
                    when Talk_Utils.R_Last_Update =>
                        Last_Update_R.Read (Aconnection);
                        Last_Update_R.Write (Aconnection);
                    when Talk_Utils.R_File_Exists =>
                        File_Exists_R.Read (Aconnection);
                        File_Exists_R.Write (Aconnection);
                    when Talk_Utils.R_Copy =>
                        Copy_R.Read (Aconnection);
                        Copy_R.Write (Aconnection);
                    when Talk_Utils.R_Expunge =>
                        Expunge_R.Read (Aconnection);
                        Expunge_R.Write (Aconnection);
                    when Talk_Utils.R_Delete =>
                        Delete_R.Read (Aconnection);
                        Delete_R.Write (Aconnection);
                    when Talk_Utils.R_Move =>
                        Move_R.Read (Aconnection);
                        Move_R.Write (Aconnection);
                    when Talk_Utils.R_Ls =>
                        Ls_R.Read (Aconnection);
                        Ls_R.Write (Aconnection);
                    when Talk_Utils.R_Input_To_Shell =>
                        Input_To_Shell_R.Read (Aconnection);
                        Input_To_Shell_R.Write (Aconnection);
                    when Talk_Utils.R_Signal_To_Shell =>
                        Signal_To_Shell_R.Read (Aconnection);
                        Signal_To_Shell_R.Write (Aconnection);
                    when others =>
                        Put_Line ("dtia_server.talk: unknown id");
                        Rational_Error.Raise_Error
                           (Rational_Error.Internal_Error);
                end case;
            exception
                when others =>
                    Remote_Shell.Kill;
                    raise;
            end;
        end loop;
    end Talk;


    task Server is

        entry Launch;

    end Server;

    task body Server is       use Mac_Types;
        Aconnection : Communications.Connection;
        User_Home : Mac_Types.Str255;

    begin  
        accept Launch;

        User_Home (0) := Char'Val (26);
        User_Home (1 .. 26) := "MacintoshHD:Rational:Home:";

        Mac_Files.Set_User_Home (User_Home);

        Communications.Initialize;

        loop
            begin
                Communications.Wait_For_Connection (Aconnection);
                Identity.Check (Aconnection);
                Talk (Aconnection);
            exception
                when others =>  
                    Put_Line ("dtia_server.server: catch exception");
                    Communications.Close_Connection (Aconnection);
                    raise;
            end;
        end loop;
    end Server;

    procedure Launch_Server is
    begin
        Server.Launch;
    end Launch_Server;

end Dtia_Server;

E3 Meta Data

    nblk1=7
    nid=7
    hdr6=a
        [0x00] rec0=2d rec1=00 rec2=01 rec3=02e
        [0x01] rec0=16 rec1=00 rec2=02 rec3=016
        [0x02] rec0=12 rec1=00 rec2=04 rec3=052
        [0x03] rec0=1e rec1=00 rec2=06 rec3=002
        [0x04] rec0=23 rec1=00 rec2=03 rec3=000
        [0x05] rec0=0d rec1=00 rec2=02 rec3=000
        [0x06] rec0=04 rec1=00 rec2=03 rec3=000
    tail 0x2172076d483a35b0ff150 0x42a00088462060003
Free Block Chain:
  0x7: 0000  00 05 03 fc 80 18 5f 55 74 69 6c 73 2e 46 5f 44  ┆      _Utils.F_D┆
  0x5: 0000  00 00 00 61 80 16 52 2e 57 72 69 74 65 20 28 41  ┆   a  R.Write (A┆