Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-dms3
Commits
a7ef0955
Commit
a7ef0955
authored
10 years ago
by
Brian Tiger Chow
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor(bitswap:notifications) move, rename
add interface
parent
cc163a95
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
20 additions
and
13 deletions
+20
-13
bitswap/bitswap.go
bitswap/bitswap.go
+3
-2
bitswap/notifications/notifications.go
bitswap/notifications/notifications.go
+14
-8
bitswap/notifications/notifications_test.go
bitswap/notifications/notifications_test.go
+3
-3
No files found.
bitswap/bitswap.go
View file @
a7ef0955
...
...
@@ -7,6 +7,7 @@ import (
proto
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto"
ds
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
notifications
"github.com/jbenet/go-ipfs/bitswap/notifications"
blocks
"github.com/jbenet/go-ipfs/blocks"
swarm
"github.com/jbenet/go-ipfs/net/swarm"
peer
"github.com/jbenet/go-ipfs/peer"
...
...
@@ -39,7 +40,7 @@ type BitSwap struct {
// routing interface for communication
routing
*
dht
.
IpfsDHT
notifications
*
notifications
notifications
notifications
.
PubSub
// partners is a map of currently active bitswap relationships.
// The Ledger has the peer.ID, and the peer connection works through net.
...
...
@@ -69,7 +70,7 @@ func NewBitSwap(p *peer.Peer, net swarm.Network, d ds.Datastore, r routing.IpfsR
routing
:
r
.
(
*
dht
.
IpfsDHT
),
meschan
:
net
.
GetChannel
(
swarm
.
PBWrapper_BITSWAP
),
haltChan
:
make
(
chan
struct
{}),
notifications
:
n
ewN
otifications
(),
notifications
:
notifications
.
New
(),
}
go
bs
.
handleMessages
()
...
...
This diff is collapsed.
Click to expand it.
bitswap/notifications.go
→
bitswap/notifications
/notifications
.go
View file @
a7ef0955
package
bitswap
package
notifications
import
(
context
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
...
...
@@ -8,16 +8,22 @@ import (
u
"github.com/jbenet/go-ipfs/util"
)
type
notifications
struct
{
wrapped
*
pubsub
.
PubSub
type
PubSub
interface
{
Publish
(
block
*
blocks
.
Block
)
Subscribe
(
ctx
context
.
Context
,
k
u
.
Key
)
<-
chan
*
blocks
.
Block
Shutdown
()
}
func
n
ew
Notifications
()
*
notifications
{
func
N
ew
()
PubSub
{
const
bufferSize
=
16
return
&
notifications
{
pubsub
.
New
(
bufferSize
)}
return
&
impl
{
pubsub
.
New
(
bufferSize
)}
}
type
impl
struct
{
wrapped
*
pubsub
.
PubSub
}
func
(
ps
*
notifications
)
Publish
(
block
*
blocks
.
Block
)
{
func
(
ps
*
impl
)
Publish
(
block
*
blocks
.
Block
)
{
topic
:=
string
(
block
.
Key
())
ps
.
wrapped
.
Pub
(
block
,
topic
)
}
...
...
@@ -25,7 +31,7 @@ func (ps *notifications) Publish(block *blocks.Block) {
// Subscribe returns a one-time use |blockChannel|. |blockChannel| returns nil
// if the |ctx| times out or is cancelled. Then channel is closed after the
// block given by |k| is sent.
func
(
ps
*
notifications
)
Subscribe
(
ctx
context
.
Context
,
k
u
.
Key
)
<-
chan
*
blocks
.
Block
{
func
(
ps
*
impl
)
Subscribe
(
ctx
context
.
Context
,
k
u
.
Key
)
<-
chan
*
blocks
.
Block
{
topic
:=
string
(
k
)
subChan
:=
ps
.
wrapped
.
SubOnce
(
topic
)
blockChannel
:=
make
(
chan
*
blocks
.
Block
)
...
...
@@ -44,6 +50,6 @@ func (ps *notifications) Subscribe(ctx context.Context, k u.Key) <-chan *blocks.
return
blockChannel
}
func
(
ps
*
notifications
)
Shutdown
()
{
func
(
ps
*
impl
)
Shutdown
()
{
ps
.
wrapped
.
Shutdown
()
}
This diff is collapsed.
Click to expand it.
bitswap/notifications_test.go
→
bitswap/notifications
/notifications
_test.go
View file @
a7ef0955
package
bitswap
package
notifications
import
(
"bytes"
...
...
@@ -13,7 +13,7 @@ import (
func
TestPublishSubscribe
(
t
*
testing
.
T
)
{
blockSent
:=
getBlockOrFail
(
t
,
"Greetings from The Interval"
)
n
:=
n
ew
Notifications
()
n
:=
N
ew
()
defer
n
.
Shutdown
()
ch
:=
n
.
Subscribe
(
context
.
Background
(),
blockSent
.
Key
())
...
...
@@ -28,7 +28,7 @@ func TestCarryOnWhenDeadlineExpires(t *testing.T) {
impossibleDeadline
:=
time
.
Nanosecond
fastExpiringCtx
,
_
:=
context
.
WithTimeout
(
context
.
Background
(),
impossibleDeadline
)
n
:=
n
ew
Notifications
()
n
:=
N
ew
()
defer
n
.
Shutdown
()
blockChannel
:=
n
.
Subscribe
(
fastExpiringCtx
,
getBlockOrFail
(
t
,
"A Missed Connection"
)
.
Key
())
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment