mirror of
https://github.com/sot-tech/mochi.git
synced 2026-07-12 03:28:10 -07:00
Merge pull request #165 from mrd0ll4r/add-peer
middleware: added peer store updates middleware (swarm)
This commit is contained in:
@@ -57,14 +57,14 @@ func key(ip net.IP) [16]byte {
|
||||
}
|
||||
|
||||
func (s *ipStore) AddNetwork(network string) error {
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
|
||||
key, length, err := netmatch.ParseNetwork(network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
|
||||
return s.networks.Add(key, length)
|
||||
}
|
||||
|
||||
@@ -78,9 +78,9 @@ func (s *ipStore) AddIP(ip net.IP) error {
|
||||
}
|
||||
|
||||
func (s *ipStore) HasIP(ip net.IP) (bool, error) {
|
||||
key := key(ip)
|
||||
s.RLock()
|
||||
defer s.RUnlock()
|
||||
key := key(ip)
|
||||
|
||||
_, ok := s.ips[key]
|
||||
if ok {
|
||||
@@ -138,22 +138,31 @@ func (s *ipStore) HasAllIPs(ips []net.IP) (bool, error) {
|
||||
}
|
||||
|
||||
func (s *ipStore) RemoveIP(ip net.IP) error {
|
||||
key := key(ip)
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
|
||||
delete(s.ips, key(ip))
|
||||
if _, ok := s.ips[key]; !ok {
|
||||
return store.ErrResourceDoesNotExist
|
||||
}
|
||||
|
||||
delete(s.ips, key)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *ipStore) RemoveNetwork(network string) error {
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
|
||||
key, length, err := netmatch.ParseNetwork(network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return s.networks.Remove(key, length)
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
|
||||
err = s.networks.Remove(key, length)
|
||||
if err != nil && err == netmatch.ErrNotContained {
|
||||
return store.ErrResourceDoesNotExist
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/chihaya/chihaya/server/store"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
@@ -64,7 +65,7 @@ func TestIPStore(t *testing.T) {
|
||||
|
||||
// check removes
|
||||
err = s.RemoveIP(v6)
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
err = s.RemoveIP(v4s)
|
||||
assert.Nil(t, err)
|
||||
|
||||
@@ -119,10 +119,16 @@ func (s *peerStore) DeleteSeeder(infoHash chihaya.InfoHash, p chihaya.Peer) erro
|
||||
defer shard.Unlock()
|
||||
|
||||
if shard.peers[key] == nil {
|
||||
return nil
|
||||
return store.ErrResourceDoesNotExist
|
||||
}
|
||||
|
||||
delete(shard.peers[key], peerKey(p))
|
||||
pk := peerKey(p)
|
||||
|
||||
if _, ok := shard.peers[key][pk]; !ok {
|
||||
return store.ErrResourceDoesNotExist
|
||||
}
|
||||
|
||||
delete(shard.peers[key], pk)
|
||||
|
||||
if len(shard.peers[key]) == 0 {
|
||||
delete(shard.peers, key)
|
||||
@@ -156,10 +162,16 @@ func (s *peerStore) DeleteLeecher(infoHash chihaya.InfoHash, p chihaya.Peer) err
|
||||
defer shard.Unlock()
|
||||
|
||||
if shard.peers[key] == nil {
|
||||
return nil
|
||||
return store.ErrResourceDoesNotExist
|
||||
}
|
||||
|
||||
delete(shard.peers[key], peerKey(p))
|
||||
pk := peerKey(p)
|
||||
|
||||
if _, ok := shard.peers[key][pk]; !ok {
|
||||
return store.ErrResourceDoesNotExist
|
||||
}
|
||||
|
||||
delete(shard.peers[key], pk)
|
||||
|
||||
if len(shard.peers[key]) == 0 {
|
||||
delete(shard.peers, key)
|
||||
|
||||
@@ -51,6 +51,10 @@ func (ss *stringStore) RemoveString(s string) error {
|
||||
ss.Lock()
|
||||
defer ss.Unlock()
|
||||
|
||||
if _, ok := ss.strings[s]; !ok {
|
||||
return store.ErrResourceDoesNotExist
|
||||
}
|
||||
|
||||
delete(ss.strings, s)
|
||||
|
||||
return nil
|
||||
|
||||
@@ -5,9 +5,11 @@
|
||||
package memory
|
||||
|
||||
import (
|
||||
"github.com/chihaya/chihaya/server/store"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/chihaya/chihaya/server/store"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -30,7 +32,7 @@ func TestStringStore(t *testing.T) {
|
||||
assert.False(t, has)
|
||||
|
||||
err = ss.RemoveString(s1)
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
err = ss.PutString(s1)
|
||||
assert.Nil(t, err)
|
||||
|
||||
Reference in New Issue
Block a user