Ignore:
Timestamp:
Aug 21, 2008, 7:21:48 PM (16 years ago)
Author:
イグトランス (egtra)
Message:

非同期入出力(Begin/End-Read/Writeメソッド)を実装。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/ablib/src/Classes/System/IO/Stream.ab

    r568 r605  
    44
    55Class Stream
    6     Implements System.IDisposable
     6    Implements IDisposable
    77
    8 Public 'Protected
     8Protected
    99    Sub Stream()
    1010    End Sub
    1111Public
    12     Virtual Sub ~Stream()
     12    Sub ~Stream()
    1313        This.Dispose(False)
    1414    End Sub
     
    1818
    1919    Virtual Function CanTimeout() As Boolean
    20         Return True
     20        Return False
    2121    End Function
    2222
    2323    Abstract Function CanWrite() As Boolean
    24     Abstract Function Length() As Int64
    25     Abstract Sub Position(value As Int64)
    26     Abstract Function Position() As Int64
     24    Abstract Function Length() As QWord
     25    Abstract Sub Position(value As QWord)
     26    Abstract Function Position() As QWord
    2727
    2828    Virtual Sub ReadTimeout(value As Long)
    29         ' Throw InvalidOperationException
     29        Throw New InvalidOperationException("Stream does not support Timeout.")
    3030    End Sub
    3131
    3232    Virtual Function ReadTimeout() As Long
    33         ' Throw InvalidOperationException
     33        Throw New InvalidOperationException("Stream does not support Timeout.")
    3434    End Function
    3535
    3636    Virtual Sub WriteTimeout(value As Long)
    37         ' Throw InvalidOperationException
     37        Throw New InvalidOperationException("Stream does not support Timeout.")
    3838    End Sub
    3939
    4040    Virtual Function WriteTimeout() As Long
    41         ' Throw InvalidOperationException
     41        Throw New InvalidOperationException("Stream does not support Timeout.")
    4242    End Function
    4343
    4444Public
    4545    Virtual Function BeginRead(buffer As *Byte, offset As Long, count As Long, callback As AsyncCallback, state As Object) As System.IAsyncResult
    46         Read(buffer,offset,count)
     46        Dim r = Read(buffer,offset,count)
     47        Return New Detail.SyncStreamResultImpl(r, state)
    4748    End Function
    4849    Virtual Function BeginWrite(buffer As *Byte, offset As Long, count As Long, callback As AsyncCallback, state As Object) As System.IAsyncResult
    4950        Write(buffer,offset,count)
     51        Return New Detail.SyncStreamResultImpl(0, state)
    5052    End Function
    5153    Sub Close()
     
    5658    End Sub
    5759    Virtual Function EndRead(asyncResult As System.IAsyncResult) As Long
     60        Dim ar = asyncResult As Detail.IAsyncStreamResult
     61        EndRead = ar.WaitAndGetResult
    5862    End Function
    5963    Virtual Sub EndWrite(asyncResult As System.IAsyncResult)
     
    7377
    7478    Abstract Function Seek(offset As Int64, origin As SeekOrigin) As Int64
    75     Abstract Sub SetLength(value As Int64)
     79    Abstract Sub SetLength(value As QWord)
    7680    Abstract Sub Write(buffer As *Byte, offset As Long, count As Long)
    7781    Virtual Sub WriteByte(b As Byte)
     
    8185    Virtual Sub Dispose(disposing As Boolean)
    8286    End Sub
    83     Virtual Function CreateWaitHandle() As System.Threading.WaitHandle
    84     End Function
    8587End Class
    8688
Note: See TracChangeset for help on using the changeset viewer.