<Type Name="VfsStream" FullName="Gnome.Vfs.VfsStream">
  <TypeSignature Language="C#" Value="public class VfsStream : System.IO.Stream, IDisposable" Maintainer="auto" />
  <AssemblyInfo>
    <AssemblyName>gnome-vfs-sharp</AssemblyName>
    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 71 EB 6C 55 75 52 9C BF 72 44 F7 A6 EA 05 62 84 F9 EA E0 3B CF F2 CC 13 2C 9C 49 0A B3 09 EA B0 B5 6B CE 44 9D F5 03 D9 C0 A8 1E 52 05 85 CD BE 70 E2 FB 90 43 4B AC 04 FA 62 22 A8 00 98 B7 A1 A7 B3 AF 99 1A 41 23 24 BB 43 25 F6 B8 65 BB 64 EB F6 D1 C2 06 D5 73 2D DF BC 70 A7 38 9E E5 3E 0C 24 6E 32 79 74 1A D0 05 03 E4 98 42 E1 9B F3 7B 19 8B 40 21 26 CB 36 89 C2 EA 64 96 A4 7C B4]</AssemblyPublicKey>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <AssemblyCulture>neutral</AssemblyCulture>
    <Attributes />
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
  <Docs>
    <summary>
      <see cref="T:System.IO.Stream" /> implementation using the Gnome.Vfs library.</summary>
    <remarks>
      <para>The VfsStream class hides the Gnome.Vfs API from the developer. It uses the <see cref="T:System.IO.Stream" /> class and associated enums to access the <see cref="T:System.String" /> representation of the <see cref="T:Gnome.Vfs.Uri" /> passed in the constructor.</para>
      <para>This class is particularly useful if you want to develop an application that wants to use Gnome.Vfs where available, but can't depend on it being available always. On platforms where Gnome.Vfs is not available, the application can fallback to a regular <see cref="T:System.IO.FileStream" />. This doesn't affect how the rest of the application deals with the stream since both implement the abstract <see cref="T:System.IO.Stream" /> class.</para>
    </remarks>
  </Docs>
  <Base>
    <BaseTypeName>System.IO.Stream</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Attributes />
  <Members>
    <Member MemberName="ReadByte">
      <MemberSignature Language="C#" Value="public override int ReadByte ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Reads a byte from the stream and advances the position within the stream by one byte.</summary>
        <returns>a <see cref="T:System.Int32" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="WriteByte">
      <MemberSignature Language="C#" Value="public override void WriteByte (byte value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="value" Type="System.Byte" />
      </Parameters>
      <Docs>
        <summary>Writes a single <see cref="T:System.Byte" /> to the current position in the stream and advances the position by one byte.</summary>
        <param name="value">a <see cref="T:System.Byte" /> to write to the stream.</param>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Read">
      <MemberSignature Language="C#" Value="public override int Read (byte [] buffer, int offset, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="buffer" Type="System.Byte[]" />
        <Parameter Name="offset" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.</summary>
        <param name="buffer">a <see cref="T:System.Byte" /> array. When this method returns, the elements between <paramref name="offset" /> and <paramref name="offset" /> + <paramref name="count" /> are replaced by the bytes read from the current stream.</param>
        <param name="offset">a <see cref="T:System.Int32" /> that specifies the zero based byte offset in <paramref name="buffer" /> at which to begin storing the data read from the current stream.</param>
        <param name="count">a <see cref="T:System.Int32" /> that specifies the maximum number of bytes to be read from the stream.</param>
        <returns>a <see cref="T:System.Int32" /> that specifies the total number of bytes read into the buffer, or zero if the end of the stream has been reached before any data could be read.</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="BeginRead">
      <MemberSignature Language="C#" Value="public override IAsyncResult BeginRead (byte [] buffer, int offset, int count, AsyncCallback cback, object state);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.IAsyncResult</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="buffer" Type="System.Byte[]" />
        <Parameter Name="offset" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
        <Parameter Name="cback" Type="System.AsyncCallback" />
        <Parameter Name="state" Type="System.Object" />
      </Parameters>
      <Docs>
        <summary>Begins an asynchronous read operation.</summary>
        <param name="buffer">the <see cref="T:System.Byte" /> array to read the data into.</param>
        <param name="offset">a <see cref="T:System.Int32" /> that specifies the byte offset in <paramref name="buffer" /> at which to begin writing data from the stream.</param>
        <param name="count">a <see cref="T:System.Int32" /> that specifies the maximum number of bytes to read from the stream.</param>
        <param name="cback">a <see cref="T:System.AsyncCallback" /> that is called when the read operation has finished.</param>
        <param name="state">an application-defined object, or <see langword="null" />.</param>
        <returns>a <see cref="T:System.IAsyncResult" /> that contains information about the asynchronous read operation, which could still be pending.</returns>
        <remarks>
          <para>This method starts an asynchronous read operation using the <see cref="T:Gnome.Vfs.Async" /> class.</para>
          <para>To wait until the operation has finished, you cannot use the <see cref="T:System.IAsyncResult.AsyncWaitHandle" /> since that will also block the Gnome.Vfs thread. Instead, use <see cref="M:GLib.MainContext.Iteration" /> like this:</para>
          <example>
            <code lang="C#">
while (!asyncResult.IsCompleted) {
	GLib.MainContext.Iteration ();
}
  </code>
          </example>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="EndRead">
      <MemberSignature Language="C#" Value="public override int EndRead (IAsyncResult result);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="result" Type="System.IAsyncResult" />
      </Parameters>
      <Docs>
        <summary>Ends a pending asynchronous read request.</summary>
        <param name="result">the <see cref="T:System.IAsyncResult" /> object that references the pending asynchronous read request.</param>
        <returns>a <see cref="T:System.Int32" /></returns>
        <remarks>This method blocks until the read operation has finished.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Write">
      <MemberSignature Language="C#" Value="public override void Write (byte [] buffer, int offset, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="buffer" Type="System.Byte[]" />
        <Parameter Name="offset" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>Writes a sequence of bytes to the current stream and advances the current position within the current stream by the number of bytes written.</summary>
        <param name="buffer">a <see cref="T:System.Byte" /> array containing the data to write.</param>
        <param name="offset">a <see cref="T:System.Int32" /> that specifies the zero based byte offset in <paramref name="buffer" /> at which to start copying bytes to the current stream.</param>
        <param name="count">a <see cref="T:System.Int32" /> that specifies the number of bytes to be written to the current stream.</param>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="BeginWrite">
      <MemberSignature Language="C#" Value="public override IAsyncResult BeginWrite (byte [] buffer, int offset, int count, AsyncCallback cback, object state);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.IAsyncResult</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="buffer" Type="System.Byte[]" />
        <Parameter Name="offset" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
        <Parameter Name="cback" Type="System.AsyncCallback" />
        <Parameter Name="state" Type="System.Object" />
      </Parameters>
      <Docs>
        <summary>Begins an asynchronous write operation.</summary>
        <param name="buffer">the <see cref="T:System.Byte" /> array to be written to the current stream.</param>
        <param name="offset">a <see cref="T:System.Int32" /> that specifies the byte offset in <paramref name="buffer" /> at which to begin copying bytes to the current stream.</param>
        <param name="count">a <see cref="T:System.Int32" /> that specifies the maximum number of bytes to be written to the stream.</param>
        <param name="cback">a <see cref="T:System.AsyncCallback" /> that is called when the write operation has finished.</param>
        <param name="state">an application-defined object, or <see langword="null" />.</param>
        <returns>a <see cref="T:System.IAsyncResult" /> that represents the asynchronous write, which could still be pending.</returns>
        <remarks>
          <para>This method starts an asynchronous write operation using the <see cref="T:Gnome.Vfs.Async" /> class.</para>
          <para>To wait until the operation has finished, you cannot use the <see cref="T:System.IAsyncResult.AsyncWaitHandle" /> since that will also block the Gnome.Vfs thread. Instead, use <see cref="M:GLib.MainContext.Iteration" /> like this:</para>
          <example>
            <code lang="C#">
while (!asyncResult.IsCompleted) {
	GLib.MainContext.Iteration ();
}
  </code>
          </example>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="EndWrite">
      <MemberSignature Language="C#" Value="public override void EndWrite (IAsyncResult result);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="result" Type="System.IAsyncResult" />
      </Parameters>
      <Docs>
        <summary>Ends an asynchronous write operation.</summary>
        <param name="result">a <see cref="T:System.IAsyncResult" /> object that references the pending asynchronous write operation.</param>
        <remarks>This method blocks until the write operation has finished.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Seek">
      <MemberSignature Language="C#" Value="public override long Seek (long offset, System.IO.SeekOrigin origin);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int64</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="offset" Type="System.Int64" />
        <Parameter Name="origin" Type="System.IO.SeekOrigin" />
      </Parameters>
      <Docs>
        <summary>Sets the position within the current stream.</summary>
        <param name="offset">a <see cref="T:System.Int64" /> that specifies the byte offset relative to origin.</param>
        <param name="origin">a <see cref="T:System.IO.SeekOrigin" /> value indicating the reference point used to obtain the new position.</param>
        <returns>a <see cref="T:System.Int64" /> that specifies the new position within the current stream.</returns>
        <remarks>This method only works for readable synchronous streams (see <see cref="M:Gnome.Vfs.VfsStream.IsAsync" />).</remarks>
      </Docs>
    </Member>
    <Member MemberName="SetLength">
      <MemberSignature Language="C#" Value="public override void SetLength (long length);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="length" Type="System.Int64" />
      </Parameters>
      <Docs>
        <summary>Sets the length of the current stream.</summary>
        <param name="length">a <see cref="T:System.Int64" /> that specifies the desired length of the current stream in bytes.</param>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Flush">
      <MemberSignature Language="C#" Value="public override void Flush ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Flushes the internal buffer.</summary>
        <remarks>NOOP.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Close">
      <MemberSignature Language="C#" Value="public override void Close ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Closes the current stream and releases any resources associated with the current stream.</summary>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public VfsStream (string uri, System.IO.FileMode mode);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="uri" Type="System.String" />
        <Parameter Name="mode" Type="System.IO.FileMode" />
      </Parameters>
      <Docs>
        <summary>Construct a new instance of the VfsStream with the specified <see cref="T:System.IO.FileMode" />.</summary>
        <param name="uri">
          <see cref="T:System.String" /> representing the <see cref="T:Gnome.Vfs.Uri" /> to open.</param>
        <param name="mode">
          <see cref="T:System.IO.FileMode" /> specifying how to open the <see cref="T:Gnome.Vfs.Uri" />.</param>
        <returns>a <see cref="T:Gnome.Vfs.VfsStream" /></returns>
        <remarks>The underlying file will be accessed synchronously using the <see cref="T:Gnome.Vfs.Sync" /> class.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public VfsStream (string text_uri, System.IO.FileMode mode, bool async);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="text_uri" Type="System.String" />
        <Parameter Name="mode" Type="System.IO.FileMode" />
        <Parameter Name="async" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <summary>Construct a new instance of the VfsStream with the specified <see cref="T:System.IO.FileMode" />. Based the async parameter, the file will be accessed (a)synchronously.</summary>
        <param name="text_uri">
          <see cref="T:System.String" /> representing the <see cref="T:Gnome.Vfs.Uri" /> to open.</param>
        <param name="mode">
          <see cref="T:System.IO.FileMode" /> specifying how to open the <see cref="T:Gnome.Vfs.Uri" />.</param>
        <param name="async">whether to access the file (a)sychronously.</param>
        <returns>a <see cref="T:Gnome.Vfs.VfsStream" /></returns>
        <remarks>The underlying file will be accessed either by using the <see cref="T:Gnome.Vfs.Sync" /> or <see cref="T:Gnome.Vfs.Async" /> class.</remarks>
      </Docs>
    </Member>
    <Member MemberName="CanRead">
      <MemberSignature Language="C#" Value="public override bool CanRead { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <see cref="T:System.Boolean" /> value indicating whether the current stream supports reading.</summary>
        <returns>a <see cref="T:System.Boolean" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="CanWrite">
      <MemberSignature Language="C#" Value="public override bool CanWrite { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <see cref="T:System.Boolean" /> value indicating whether the current stream supports writing.</summary>
        <returns>a <see cref="T:System.Boolean" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="CanSeek">
      <MemberSignature Language="C#" Value="public override bool CanSeek { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <see cref="T:System.Boolean" /> value indicating whether the current stream supports seeking.</summary>
        <returns>a <see cref="T:System.Boolean" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="IsAsync">
      <MemberSignature Language="C#" Value="public virtual bool IsAsync { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <see cref="T:System.Boolean" /> value indicating whether the current stream is (a)synchronous.</summary>
        <returns>a <see cref="T:System.Boolean" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Uri">
      <MemberSignature Language="C#" Value="public string Uri { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Gets the <see cref="T:System.String" /> representing the <see cref="T:Gnome.Vfs.Uri" /> which this stream reads and writes from.</summary>
        <returns>a <see cref="T:System.String" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Length">
      <MemberSignature Language="C#" Value="public override long Length { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int64</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Gets the length in bytes of the stream.</summary>
        <returns>a <see cref="T:System.Int64" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="Position">
      <MemberSignature Language="C#" Value="public override long Position { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int64</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Gets or sets the position within the current stream.</summary>
        <returns>a <see cref="T:System.Int64" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
  </Members>
</Type>