Skip to content
  • Ciarán Ó Rourke's avatar
    Modularise project and implement abstract interfaces · 9a8740af
    Ciarán Ó Rourke authored
    Project consists of three components: server, stream, and storage. Each need not
    know the implementation details of the others. Stream and Storage are
    presented as base classes with Fifo and Phobos_file serving as
    implementations. Inter-component communication is reworked such that the
    stream acts as an exclusive interface between the server and storage.
    
    Change Log:
    * Rename backend to storage
    * Rename fifo to stream
    * PUT logic functions like server->stream->storage
    * GET logic functions like storage->stream->server
    * Each stage represented by a class
    * Communication between stages handled by class ownership
    * Ownership is server<stream<storage
    * Server does not communicate with storage and visa/versa
    * Each stage Know nothing of the implementation details of the others
    * Stages see each other ass abstract interfaces
    * Request handlers must be initialised with unique pointer to a Stream derived class as a constructor argument.
    * Streams must be initialised with unique pointer to a Storage derived class as a constructor argument.
    * Phobos_file closes file immediatley after finish IO to prevent Stream
    from blocking in the case of FIFO Stream implementation
    * Remove DEBUG print statements
    * Rename server.cc to server.main.cc to reflect presense or main
    function
    9a8740af