mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-25 12:27:43 +08:00
29 lines
765 B
Go
29 lines
765 B
Go
package network
|
|
|
|
import (
|
|
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
|
bsmsg "github.com/jbenet/go-ipfs/bitswap/message"
|
|
peer "github.com/jbenet/go-ipfs/peer"
|
|
)
|
|
|
|
// Forwarder receives messages and forwards them to the delegate.
|
|
//
|
|
// Forwarder breaks the circular dependency between the BitSwap Session and the
|
|
// Network Service.
|
|
type Forwarder struct {
|
|
delegate Receiver
|
|
}
|
|
|
|
func (r *Forwarder) ReceiveMessage(
|
|
ctx context.Context, sender *peer.Peer, incoming bsmsg.BitSwapMessage) (
|
|
*peer.Peer, bsmsg.BitSwapMessage, error) {
|
|
if r.delegate == nil {
|
|
return nil, nil, nil
|
|
}
|
|
return r.delegate.ReceiveMessage(ctx, sender, incoming)
|
|
}
|
|
|
|
func (r *Forwarder) Delegate(delegate Receiver) {
|
|
r.delegate = delegate
|
|
}
|