// File.idl,v 1.2 2001/08/25 04:18:27 bala Exp

//=================================================================
//
// = FILENAME
//     File.idl
//
// = DESCRIPTION
//     A simple File Descriptor and File System IDL interface.
//
// = AUTHOR
//     Irfan Pyarali
//
//==================================================================

// IDL

module File
{
  exception IOError
    {
      long error;
    };

  interface Descriptor
    {
      typedef sequence<octet> DataBuffer;

      long write (in DataBuffer buffer)
        raises (IOError);
      // write buffer to File

      DataBuffer read (in long num_bytes)
        raises (IOError);
      // read num_bytes to DataBuffer

      unsigned long lseek (in unsigned long offset,
                           in long whence)
        raises (IOError);
      // seek to offset in File from whence

      void destroy ();
      // destroy the descriptor
    };

  interface System
    {
      Descriptor open (in string file_name,
                       in long flags)
        raises (IOError);
      // File open operation
    };
};
