comp.lang.ada
 help / color / mirror / Atom feed
From: "David C. Hoos" <david.c.hoos.sr@ada95.com>
Subject: Re: Implementing a stream
Date: 1998/12/15
Date: 1998-12-15T00:00:00+00:00	[thread overview]
Message-ID: <756e2f$2ad@hobbes.crc.com> (raw)
In-Reply-To: 7563nn$evn$1@nnrp1.dejanews.com


dennison@telepath.com wrote in message <7563nn$evn$1@nnrp1.dejanews.com>...
>I'm looking at implementing a stream class, but I don't think I quite
>understand the expected interface. I know I have to implement the following
>subprogram:
>
>           procedure Read(
>             Stream : in out Root_Stream_Type;
>             Item   : out Stream_Element_Array;
>             Last   : out Stream_Element_Offset);
>
What you implement is a subprogram shere the Stream Paramter is derived ftom
Root_Streams_Type.  The 'Read and 'Input calls dispatch on the type of the
Stream
paramter.
>
>But how is it called by default (iaw: from default 'Read and 'Input
>routines)? For instance, if my read returns with Last < Item'length, does
>read get repeatedly called until Item'length items have been read? Would
>returning Last =0 result in a fast busy-loop? If so, I'd think the
preferred
>method in this instance would be for Read to raise an exception or to block
>until there is more data.
>
This depends on the source of the stream.  For example, a memory stream
would not
block, but a socket might.  My thought is that if reading a socke, for
example,
one might well have Read block until Item is filled.  But, what do you do
when you
get EOF on the socket?  This is where you want to have Read return with Last
< Item'Last.

For an example of a stream which reads and/or writes to a region of process
memory
specified by address, see the file at my FTP site
ftp://ftp.ada95.com/tagged_types.tgz

David C. Hoos, Sr.







  reply	other threads:[~1998-12-15  0:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-12-15  0:00 Implementing a stream dennison
1998-12-15  0:00 ` David C. Hoos [this message]
1998-12-15  0:00 ` Tucker Taft
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox