Class Reference
%Library.AbstractStream
Server:irisdocs2
Instance:IRISLATEST
User:UnknownUser
 
-
  [%SYS] >  [%Library] >  [AbstractStream]
Private  Storage

abstract stream class %Library.AbstractStream extends %Stream.Object

Deprecated class, the base stream class is %Stream.Object. This is kept for legacy reasons.

A stream represents an arbitrary array of characters (or bytes) and a current position. The basic stream interface provides the ability to read data from a stream, write data to the stream, and rewind the current position to the beginning of the stream.

Within InterSystems IRIS streams are used to create large (greater than 32K) object attributes.

Inventory

Parameters Properties Methods Queries Indices ForeignKeys Triggers
7 3 48


Summary

Properties
%Location AtEnd Attributes Id LastModified
LineTerminator Size

Methods
%AddToSaveSet %CheckUnique %ClassIsLatestVersion %ClassName
%ConstructClone %Delete %DeleteExtent %DeleteId
%DispatchClassMethod %DispatchGetModified %DispatchGetProperty %DispatchMethod
%DispatchSetModified %DispatchSetMultidimProperty %DispatchSetProperty %Exists
%ExistsId %Extends %GetParameter %GetSwizzleObject
%Id %IsA %IsModified %IsNull
%KillExtent %LOBPrefetch %LocationSet %LockStream
%New %NormalizeObject %ObjectIsNull %ObjectModified
%ObjectSize %Oid %Open %OpenId
%OriginalNamespace %PackageName %ReleaseLock %Reload
%RemoveFromSaveSet %RollBack %Save %SerializeObject
%SetModified %UnlockStream %ValidateObject Clear
CopyFrom CopyFromAndSave DeleteAttribute DeleteStream
FindAt Flush GetAttribute GetAttributeList
GetStreamId InputFromDevice IsCharacter IsDefinedAttribute
IsNull LastModifiedGet LineTerminatorSet MoveTo
MoveToEnd NextAttribute OpenStream OutputToDevice
OutputToDeviceAt Read ReadLine ReadLineIntoStream
ReadSQL Rewind SaveStream SerializeToSyncSet
SetAttribute SetAttributeList SizeGet StreamOIDIsNull
SyncStreamIn Write WriteLine

Subclasses
%IO.LibraryStream %Library.File %Library.FileStreamAdaptor
%Library.GlobalStreamAdaptor %Library.Routine %Library.SerialStream
%Net.ChunkedWriter %Stream.NullBinary %Stream.NullCharacter
%Studio.AbstractDocument %XML.SAX.Utils.NullStream

Parameters

• parameter MAXLEN = 2147483647;
The maximum number of characters (or bytes) allowed in a stream.
• parameter MAXLOCALSIZE = 32000;
• parameter PROPERTYVALIDATION = 0;
Turns off property validation.
• final parameter READCHANGED = 2;
• final parameter READNODATA = 0;
• final parameter READNOTCHANGED = 1;
• final parameter WRITE = 3;

Properties

• property Attributes as %String [ MultiDimensional ];
An array of strings containing any attribute values associated with this stream.
• property LineTerminator as %String(MAXLEN=10) [ InitialExpression = $char(13,10) ];
Type of line terminator we use for this stream, defaults to Cr/Lf. Maximum length is 10 characters. This is stored as an attribute of the stream called 'LineTerminator'.

Methods

• method %Id() as %String
Returns the persistent object Id, if there is one, of this object.

Returns a null string if there is no object Id.

• method %IsModified() as %Integer
Returns true (1) if a property of this instance has been modified, otherwise false (0). A TRUE result does not necessarily mean that any property has actually been changed. If %IsModified() returns false then the object has not been modified. There are some situations where we simply cannot efficiently detect a change in value. In these cases we will set the modified status of the property.
• method %IsNull() as %Boolean
Returns true if this is a "NULL" stream; that is, a stream which has never been written to and saved. This is used by the InterSystems IRIS ODBC server.
• method %ObjectModified() as %Integer
This method is somewhat similar to %IsModified but it also checks to see if swizzled references would cause the object to become modified should they be serialized. This works on the assumption that a reference to a persistent object will never be modified if the ID has already been assigned. For references to serial objects, a call to %ObjectModified indicates whether or not the serialized value is different. If the reference to a swizzled object is different from the initial object state then the $$$objModAll macro will already return true. Reference the Set code. Returns true (1) if this instance has been modified, otherwise false (0).
• method CopyFrom(source As %Stream.Object) as %Status
Copies the contents of source into this Stream.

For example, you can copy oldstream into a new stream:

	Set newstream=##class(%GlobalCharacterStream).%New()
	Do newstream.CopyFrom(oldstream)

Returns a %Status value indicating success or failure.

• final method DeleteAttribute(name As %String) as %Boolean
Removes this attribute variable from the collection. Returns true is it existed and false if it did not exist.
• classmethod DeleteStream(oid As %ObjectIdentity, concurrency As %Integer = 0) as %Status
Deprecated method, use %Delete instead. Deletes the stored stream identified by oid. This will not remove the stream attributes of any saved streams, it will just remove the stream data. If you need to clear the attributes as well you will have to call Clear on the stream object.
• method Flush() as %Status
Flush any output in the stream not already saved.
• final method GetAttribute(name As %String, default As %String = "") as %String
Retrieves the named attribute value
• method GetAttributeList() as %String
• method GetStreamId() as %String
Returns an full id value (including class name) with which the Stream implementation has stored the stream.
• final method IsDefinedAttribute(name As %String) as %Boolean
Returns true if the named attribute variable exists in the collection, false otherwise
• method IsNull() as %Boolean
Returns true if this is a "NULL" stream; that is, a stream which has never been written to and saved. This is used by the InterSystems IRIS ODBC server.
• method LineTerminatorSet(terminator As %String) as %Status
This is a Set accessor method for the LineTerminator property.
• method MoveToEnd() as %Status
Move to the end of the stream so the next Write will be appended to the end. This allows you to read from a stream, then MoveToEnd() and append new data, where just calling Write after a read will clear the stream before writing new data.

Returns a %Status value indicating success or failure.

• final method NextAttribute(name As %String) as %String
Retrieves the next attribute variable name in the sequence, skip any '%' names
• method OpenStream(sid As %String) as %Status
• method Read(ByRef len As %Integer = 32656, ByRef sc As %Status) as %RawString
Reads up to len characters from the current position in the stream. The current position is advanced by the number of characters read. Upon exit, len is set to the actual number of characters read. If a read occurs when the stream position is at the end of the stream, len will be set to -1 and Read will return a null string (""). If no len is passed in, ie. 'Read()' then it is up to the Read implementation as to how much data to return. Some stream classes use this to optimize the amount of data returned to align this with the underlying storage of the stream.

You must call Rewind if you want to read a stream from the beginning again. Calling Read after Write implicitly ends the Write operation and rewinds to the start of the stream.

Returns a string up to len characters long. The byref argument sc will return a %Status if any error occurred during the read.

• method ReadLine(ByRef len As %Integer = 32000, ByRef sc As %Status, ByRef eol As %Boolean) as %RawString
Read a line from the stream. This will look for the line terminator in the stream and once it finds the terminator it will return the string minus the terminator character/s. If it reaches the end of the stream before it finds a terminator it will return the data it has so far, and if you specify a maximum size in len it will only read up to this number of characters. On exit len will contain the actual number of characters read. The byref argument sc will return a %Status if any error occured during the read and the byref argument eol is true if it found the line terminator and false otherwise. So for example you can read in a stream a line at a time and output the results to the current device with:
	While 'stream.AtEnd { Write stream.ReadLine(,.sc,.eol) If $$$ISERR(sc) { Write "ERROR" Quit } If eol { Write ! } }
• method ReadLineIntoStream() as %AbstractStream
This reads from the stream until it find the LineTerminator and returns this as a stream. If the stream does not contain the line terminator this can potentially be the entire stream.
• method Rewind() as %Status
Go back to the start of the stream.
• method SaveStream() as %Status
Deprecated method, use %Save instead. Saves the temporary copy of the stream data to a persistent location. Note that any locking or transaction handling must be done by the caller.

Returns a %Status value indicating success or failure.

• final method SetAttribute(name As %String, value As %String)
Inserts an attribute variable by name into the collection
• method SetAttributeList(attr As %String)
• method SizeGet() as %Integer
This is a Get accessor method for the Size property.
• method Write(data As %RawString = "") as %Status
Appends the string data to the stream and advances the current stream position by the number of characters in data.

Note that a write operation immediately following a read or rewind will clear out the existing data in the stream.

Returns a %Status value indicating success or failure.

• method WriteLine(data As %RawString = "") as %Status
Appends the string data along with a line terminator to the stream and advances the current stream position by the number of characters in data plus the line terminator.

Returns a %Status value indicating success or failure.



Copyright (c) 2019 by InterSystems Corporation. Cambridge, Massachusetts, U.S.A. All rights reserved. Confidential property of InterSystems Corporation.