package scraperService
import (
"math/rand"
"net"
"github.com/ewhal/nyaa/model"
)
const InitialConnectionID = 0x41727101980
type Bucket struct {
Addr net.Addr
transactions map[uint32]*Transaction
}
func (b *Bucket) NewTransaction(swarms []model.Torrent) (t *Transaction) {
id := rand.Uint32()
// get good id
_, ok := b.transactions[id]
for !ok {
id = rand.Uint32()
_, ok = b.transactions[id]
t = &Transaction{
TransactionID: id,
swarms: swarms,
state: stateSendID,
b.transactions[id] = t
return
func (b *Bucket) VisitTransaction(tid uint32, v func(*Transaction)) {
t, ok := b.transactions[tid]
if ok {
go v(t)
} else {
v(nil)
func NewBucket(a net.Addr) *Bucket {
return &Bucket{
transactions: make(map[uint32]*Transaction),
Addr: a,