--- /dev/null
+package torrent
+
+import (
+ pp "github.com/anacrolix/torrent/peer_protocol"
+)
+
+// These are called synchronously, and do not pass ownership. The Client and other locks may still
+// be held. nil functions are not called.
+type Callbacks struct {
+ CompletedHandshake func(_ *PeerConn, infoHash InfoHash)
+ ReadMessage func(*PeerConn, *pp.Message)
+}
c.PeerExtensionBytes = res.PeerExtensionBits
c.PeerID = res.PeerID
c.completedHandshake = time.Now()
+ if cb := cl.config.Callbacks.CompletedHandshake; cb != nil {
+ cb(c, res.Hash)
+ }
return
}
defer cl.lock()
err = decoder.Decode(&msg)
}()
+ if cb := cl.config.Callbacks.ReadMessage; cb != nil && err == nil {
+ cb(c, &msg)
+ }
if t.closed.IsSet() || c.closed.IsSet() {
return nil
}