Commit 991f2c38 authored by Łukasz Magiera's avatar Łukasz Magiera

Implement SearchValue

parent 7a10aeb4
......@@ -34,7 +34,12 @@ func (c *client) GetValue(ctx context.Context, key string, opts ...ropts.Option)
return c.vs.GetValue(ctx, key, opts...)
}
func (c *client) FindProviders(ctx context.Context, key cid.Cid) ([]pstore.PeerInfo, error) {
func (c *client) SearchValue(ctx context.Context, key string, opts ...ropts.Option) (<-chan []byte, error) {
log.Debugf("SearchValue: %s", key)
return c.vs.SearchValue(ctx, key, opts...)
}
func (c *client) FindProviders(ctx context.Context, key *cid.Cid) ([]pstore.PeerInfo, error) {
return c.server.Providers(key), nil
}
......
......@@ -26,6 +26,10 @@ func (c *nilclient) GetValue(_ context.Context, _ string, _ ...ropts.Option) ([]
return nil, errors.New("tried GetValue from nil routing")
}
func (c *nilclient) SearchValue(_ context.Context, _ string, _ ...ropts.Option) (<-chan []byte, error) {
return nil, errors.New("tried SearchValue from nil routing")
}
func (c *nilclient) FindPeer(_ context.Context, _ peer.ID) (pstore.PeerInfo, error) {
return pstore.PeerInfo{}, nil
}
......
......@@ -90,6 +90,19 @@ func (c *offlineRouting) GetValue(ctx context.Context, key string, _ ...ropts.Op
return val, nil
}
func (c *offlineRouting) SearchValue(ctx context.Context, key string, _ ...ropts.Option) (<-chan []byte, error) {
out := make(chan []byte)
go func() {
defer close(out)
v, _ := c.GetValue(ctx, key)
select {
case out <- v:
case <-ctx.Done():
}
}()
return out, nil
}
func (c *offlineRouting) FindPeer(ctx context.Context, pid peer.ID) (pstore.PeerInfo, error) {
return pstore.PeerInfo{}, ErrOffline
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment