@@ -33,6 +33,7 @@ type inProgressResponseStatus struct {
33
33
ctx context.Context
34
34
span trace.Span
35
35
cancelFn func ()
36
+ peer peer.ID
36
37
request gsmsg.GraphSyncRequest
37
38
loader ipld.BlockReadOpener
38
39
traverser ipldutil.Traverser
@@ -43,11 +44,6 @@ type inProgressResponseStatus struct {
43
44
responseStream responseassembler.ResponseStream
44
45
}
45
46
46
- type responseKey struct {
47
- p peer.ID
48
- requestID graphsync.RequestID
49
- }
50
-
51
47
// RequestHooks is an interface for processing request hooks
52
48
type RequestHooks interface {
53
49
ProcessRequestHooks (p peer.ID , request graphsync.RequestData ) hooks.RequestResult
@@ -107,7 +103,7 @@ type ResponseManager struct {
107
103
blockSentListeners BlockSentListeners
108
104
networkErrorListeners NetworkErrorListeners
109
105
messages chan responseManagerMessage
110
- inProgressResponses map [responseKey ]* inProgressResponseStatus
106
+ inProgressResponses map [graphsync. RequestID ]* inProgressResponseStatus
111
107
connManager network.ConnManager
112
108
// maximum number of links to traverse per request. A value of zero = infinity, or no limit
113
109
maxLinksPerRequest uint64
@@ -144,7 +140,7 @@ func New(ctx context.Context,
144
140
blockSentListeners : blockSentListeners ,
145
141
networkErrorListeners : networkErrorListeners ,
146
142
messages : messages ,
147
- inProgressResponses : make (map [responseKey ]* inProgressResponseStatus ),
143
+ inProgressResponses : make (map [graphsync. RequestID ]* inProgressResponseStatus ),
148
144
connManager : connManager ,
149
145
maxLinksPerRequest : maxLinksPerRequest ,
150
146
responseQueue : responseQueue ,
@@ -158,9 +154,9 @@ func (rm *ResponseManager) ProcessRequests(ctx context.Context, p peer.ID, reque
158
154
}
159
155
160
156
// UnpauseResponse unpauses a response that was previously paused
161
- func (rm * ResponseManager ) UnpauseResponse (p peer. ID , requestID graphsync.RequestID , extensions ... graphsync.ExtensionData ) error {
157
+ func (rm * ResponseManager ) UnpauseResponse (ctx context. Context , requestID graphsync.RequestID , extensions ... graphsync.ExtensionData ) error {
162
158
response := make (chan error , 1 )
163
- rm .send (& unpauseRequestMessage {p , requestID , response , extensions }, nil )
159
+ rm .send (& unpauseRequestMessage {requestID , response , extensions }, ctx . Done () )
164
160
select {
165
161
case <- rm .ctx .Done ():
166
162
return errors .New ("context cancelled" )
@@ -170,9 +166,9 @@ func (rm *ResponseManager) UnpauseResponse(p peer.ID, requestID graphsync.Reques
170
166
}
171
167
172
168
// PauseResponse pauses an in progress response (may take 1 or more blocks to process)
173
- func (rm * ResponseManager ) PauseResponse (p peer. ID , requestID graphsync.RequestID ) error {
169
+ func (rm * ResponseManager ) PauseResponse (ctx context. Context , requestID graphsync.RequestID ) error {
174
170
response := make (chan error , 1 )
175
- rm .send (& pauseRequestMessage {p , requestID , response }, nil )
171
+ rm .send (& pauseRequestMessage {requestID , response }, ctx . Done () )
176
172
select {
177
173
case <- rm .ctx .Done ():
178
174
return errors .New ("context cancelled" )
@@ -182,9 +178,9 @@ func (rm *ResponseManager) PauseResponse(p peer.ID, requestID graphsync.RequestI
182
178
}
183
179
184
180
// CancelResponse cancels an in progress response
185
- func (rm * ResponseManager ) CancelResponse (p peer. ID , requestID graphsync.RequestID ) error {
181
+ func (rm * ResponseManager ) CancelResponse (ctx context. Context , requestID graphsync.RequestID ) error {
186
182
response := make (chan error , 1 )
187
- rm .send (& errorRequestMessage {p , requestID , queryexecutor .ErrCancelledByCommand , response }, nil )
183
+ rm .send (& errorRequestMessage {requestID , queryexecutor .ErrCancelledByCommand , response }, ctx . Done () )
188
184
select {
189
185
case <- rm .ctx .Done ():
190
186
return errors .New ("context cancelled" )
@@ -204,39 +200,39 @@ func (rm *ResponseManager) synchronize() {
204
200
}
205
201
206
202
// StartTask starts the given task from the peer task queue
207
- func (rm * ResponseManager ) StartTask (task * peertask.Task , responseTaskChan chan <- queryexecutor.ResponseTask ) {
208
- rm .send (& startTaskRequest {task , responseTaskChan }, nil )
203
+ func (rm * ResponseManager ) StartTask (task * peertask.Task , p peer. ID , responseTaskChan chan <- queryexecutor.ResponseTask ) {
204
+ rm .send (& startTaskRequest {task , p , responseTaskChan }, nil )
209
205
}
210
206
211
207
// GetUpdates is called to read pending updates for a task and clear them
212
- func (rm * ResponseManager ) GetUpdates (p peer. ID , requestID graphsync.RequestID , updatesChan chan <- []gsmsg.GraphSyncRequest ) {
213
- rm .send (& responseUpdateRequest {responseKey { p , requestID } , updatesChan }, nil )
208
+ func (rm * ResponseManager ) GetUpdates (requestID graphsync.RequestID , updatesChan chan <- []gsmsg.GraphSyncRequest ) {
209
+ rm .send (& responseUpdateRequest {requestID , updatesChan }, nil )
214
210
}
215
211
216
212
// FinishTask marks a task from the task queue as done
217
- func (rm * ResponseManager ) FinishTask (task * peertask.Task , err error ) {
213
+ func (rm * ResponseManager ) FinishTask (task * peertask.Task , p peer. ID , err error ) {
218
214
done := make (chan struct {}, 1 )
219
- rm .send (& finishTaskRequest {task , err , done }, nil )
215
+ rm .send (& finishTaskRequest {task , p , err , done }, nil )
220
216
select {
221
217
case <- rm .ctx .Done ():
222
218
case <- done :
223
219
}
224
220
}
225
221
226
222
// CloseWithNetworkError closes a request due to a network error
227
- func (rm * ResponseManager ) CloseWithNetworkError (p peer. ID , requestID graphsync.RequestID ) {
223
+ func (rm * ResponseManager ) CloseWithNetworkError (requestID graphsync.RequestID ) {
228
224
done := make (chan error , 1 )
229
- rm .send (& errorRequestMessage {p , requestID , queryexecutor .ErrNetworkError , done }, nil )
225
+ rm .send (& errorRequestMessage {requestID , queryexecutor .ErrNetworkError , done }, nil )
230
226
select {
231
227
case <- rm .ctx .Done ():
232
228
case <- done :
233
229
}
234
230
}
235
231
236
232
// TerminateRequest indicates a request has finished sending data and should no longer be tracked
237
- func (rm * ResponseManager ) TerminateRequest (p peer. ID , requestID graphsync.RequestID ) {
233
+ func (rm * ResponseManager ) TerminateRequest (requestID graphsync.RequestID ) {
238
234
done := make (chan struct {}, 1 )
239
- rm .send (& terminateRequestMessage {p , requestID , done }, nil )
235
+ rm .send (& terminateRequestMessage {requestID , done }, nil )
240
236
select {
241
237
case <- rm .ctx .Done ():
242
238
case <- done :
0 commit comments