note description: "An email client that concurrently downloads and displays messages." author: "Chandrakana Nandi" date: "$Date$" revision: "$Revision$" class CLIENT create make feature {NONE} -- Initialization make -- Initialization for `Current'. do create {LINKED_LIST [STRING]} messages.make create <NONE> controller create mover.make (Current) create viewer.make (Current) create downloader.make (Current) end feature -- Access messages: LIST [STRING] -- Email messages received. downloader: detachable separate DOWNLOADER -- Downloading engine. viewer: detachable separate VIEWER -- Viewing engine. mover: detachable separate MOVER -- Archiving engine. controller: separate CONTROLLER -- A shared controller to signal a stop message. feature -- Access first: separate STRING -- First message if any, otherwise empty. do Result := "" if not messages.is_empty then Result := messages [1] end end feature -- Basic operations extend (email: separate STRING) -- Add `email' to the email storage. local l_email: STRING do create l_email.make_from_separate (email) messages.extend (l_email) end end