| 69 | type requestHandlerFn func(ctx context.Context, stream network.Stream) |
| 70 | |
| 71 | func MakeStreamHandler(resourcesCtx context.Context, lg log.Logger, fn requestHandlerFn) network.StreamHandler { |
| 72 | return func(stream network.Stream) { |
| 73 | handleLog := lg.New("peer", stream.Conn().ID(), "remote", stream.Conn().RemoteMultiaddr()) |
| 74 | defer func() { |
| 75 | if err := recover(); err != nil { |
| 76 | handleLog.Error("P2p server request handling panic", "err", err, "protocol", stream.Protocol()) |
| 77 | } |
| 78 | }() |
| 79 | defer stream.Close() |
| 80 | fn(resourcesCtx, stream) |
| 81 | } |
| 82 | } |
| 83 | |
| 84 | type newStreamFn func(ctx context.Context, peerId peer.ID, protocolId ...protocol.ID) (network.Stream, error) |
| 85 | |