INTERFACEAConnFD ; IMPORT Rd, Wr, Thread; TYPE T = TRep;
T is a bi-directional communications channel (for example
   a TCP channel).  Given an T, a client can initialize a
   paired reader and writer whose source and target are the channel. 
       
 ultimately, the type above will be a subtype of File.T 
EXCEPTION TimedOut;
TYPE
  TRep = MUTEX OBJECT METHODS
    get(VAR arr: ARRAY OF CHAR; waitFor: LONGREAL := -1.0D0) : CARDINAL
        RAISES {Rd.Failure, Thread.Alerted, TimedOut};
    put(READONLY arr: ARRAY OF CHAR)
        RAISES {Wr.Failure, Thread.Alerted};
    shutdownIn() RAISES {Rd.Failure};
    shutdownOut() RAISES {Wr.Failure};
    close();
  END;
  (* Get method:
        If "timeout" is negative, "get" will block forever.
        Otherwise, it will block for a maximum of of "waitFor"
        seconds. *)
END ConnFD.