6
6
"github.com/jjeffcaii/reactor-go"
7
7
"github.com/jjeffcaii/reactor-go/flux"
8
8
"github.com/jjeffcaii/reactor-go/scheduler"
9
+
9
10
"github.com/rsocket/rsocket-go/payload"
10
11
"github.com/rsocket/rsocket-go/rx"
11
12
)
@@ -76,12 +77,19 @@ func (p proxy) ToChan(ctx context.Context, cap int) (<-chan payload.Payload, <-c
76
77
err <- reactor .ErrSubscribeCancelled
77
78
}
78
79
}).
80
+ Map (func (any reactor.Any ) (reactor.Any , error ) {
81
+ return payload .Clone (any .(payload.Payload )), nil
82
+ }).
79
83
SubscribeWithChan (ctx , ch , err )
80
84
return ch , err
81
85
}
82
86
83
87
func (p proxy ) BlockFirst (ctx context.Context ) (first payload.Payload , err error ) {
84
- v , err := p .Flux .BlockFirst (ctx )
88
+ v , err := p .Flux .
89
+ Map (func (any reactor.Any ) (reactor.Any , error ) {
90
+ return payload .Clone (any .(payload.Payload )), nil
91
+ }).
92
+ BlockFirst (ctx )
85
93
if err != nil {
86
94
return
87
95
}
@@ -92,14 +100,18 @@ func (p proxy) BlockFirst(ctx context.Context) (first payload.Payload, err error
92
100
}
93
101
94
102
func (p proxy ) BlockLast (ctx context.Context ) (last payload.Payload , err error ) {
95
- v , err := p .Flux .BlockLast (ctx )
103
+ v , err := p .Flux .
104
+ Map (func (any reactor.Any ) (reactor.Any , error ) {
105
+ return payload .Clone (any .(payload.Payload )), nil
106
+ }).
107
+ BlockLast (ctx )
96
108
if err != nil {
97
109
return
98
110
}
99
- if v = = nil {
100
- return
111
+ if v ! = nil {
112
+ last = v .(payload. Payload )
101
113
}
102
- last = v .(payload. Payload )
114
+
103
115
return
104
116
}
105
117
@@ -119,7 +131,7 @@ func (p proxy) BlockSlice(ctx context.Context) (results []payload.Payload, err e
119
131
Subscribe (
120
132
ctx ,
121
133
reactor .OnNext (func (v reactor.Any ) error {
122
- results = append (results , v .(payload.Payload ))
134
+ results = append (results , payload . Clone ( v .(payload.Payload ) ))
123
135
return nil
124
136
}),
125
137
reactor .OnError (func (e error ) {
0 commit comments