File tree Expand file tree Collapse file tree 3 files changed +23
-58
lines changed Expand file tree Collapse file tree 3 files changed +23
-58
lines changed Original file line number Diff line number Diff line change @@ -42,10 +42,15 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
42
42
43
43
``` go
44
44
func ReadAndWrite () {
45
- resp := NewSmbNegotiateResponseV2 ()
46
- stream := kaitai.NewReadWriteStream (kaitai.NewStream (reader))
47
- resp.Read (stream, nil , resp)
48
- // stream.Check()
49
- err = stream.Write ()
45
+ // read
46
+ stream := kaitai.NewStream (kaitai.NewFakeWriter (reader))
47
+ resp := drda.NewDrda ()
48
+ err = resp.Read (stream, nil , resp)
49
+
50
+ // write
51
+ writer := buffer.NewSeekableBuffer ()
52
+ err = resp.Check ()
53
+ assert.Nil (err)
54
+ err = resp.Write (kaitai.NewStream (writer))
50
55
}
51
56
```
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ package kaitai
3
3
import (
4
4
"bytes"
5
5
"compress/zlib"
6
+ "errors"
6
7
"io"
7
8
"math/bits"
8
9
"strings"
@@ -123,3 +124,15 @@ func ByteArrayIndexof(arr []byte, b byte) int {
123
124
}
124
125
return - 1
125
126
}
127
+
128
+ type FakeWriter struct {
129
+ io.ReadSeeker
130
+ }
131
+
132
+ func (fw * FakeWriter ) Write ([]byte ) (n int , err error ) {
133
+ return 0 , errors .New ("unsupported write" )
134
+ }
135
+
136
+ func NewFakeWriter (reader io.ReadSeeker ) io.ReadWriteSeeker {
137
+ return & FakeWriter {reader }
138
+ }
Original file line number Diff line number Diff line change @@ -22,56 +22,3 @@ func (h *WriteBackHandler) writeBack(parent *Stream) error {
22
22
}
23
23
return h .handler (parent )
24
24
}
25
-
26
- type ReadWriteTrait interface {
27
- FetchInstances () error
28
- WriteSeq () error
29
- Check () error
30
- }
31
-
32
- type ReadWriteStream struct {
33
- Stream
34
-
35
- FetchInstance func () error
36
- WriteSeq func () error
37
- Check func () error
38
- }
39
-
40
- func NewReadWriteStream (stream * Stream ) * ReadWriteStream {
41
- return & ReadWriteStream {
42
- Stream : * stream ,
43
- }
44
- }
45
-
46
- func (k * ReadWriteStream ) setFetchInstanceHandler (handler func () error ) {
47
- k .FetchInstance = handler
48
- }
49
-
50
- func (k * ReadWriteStream ) setWriteSeqHandler (handler func () error ) {
51
- k .WriteSeq = handler
52
- }
53
-
54
- func (k * ReadWriteStream ) setCheckHandler (handler func () error ) {
55
- k .Check = handler
56
- }
57
-
58
- func (k * ReadWriteStream ) Write (rt ReadWriteTrait ) error {
59
- k .setFetchInstanceHandler (rt .FetchInstances )
60
- k .setWriteSeqHandler (rt .WriteSeq )
61
- k .setCheckHandler (rt .Check )
62
-
63
- err := k .Check ()
64
- if err != nil {
65
- return err
66
- }
67
- err = k .WriteSeq ()
68
- if err != nil {
69
- return err
70
- }
71
- err = k .FetchInstance ()
72
- if err != nil {
73
- return err
74
- }
75
- err = k .WriteBackChildStreams ()
76
- return err
77
- }
You can’t perform that action at this time.
0 commit comments