Documentation
¶
Overview ¶
Package rpc implements the rpc layer for the bloomfilter, following the principles from https://golang.org/pkg/net/rpc
Example (Integration) ¶
client, err := rpc.Dial("tcp", "127.0.0.1:1234")
if err != nil {
fmt.Printf("dialing error: %s", err.Error())
return
}
var (
addOutput AddOutput
checkOutput CheckOutput
unionOutput UnionOutput
elems1 = [][]byte{[]byte("rrrr"), []byte("elem2")}
elems2 = [][]byte{[]byte("house")}
elems3 = [][]byte{[]byte("house"), []byte("mouse")}
cfg = rotate.Config{
Config: bloomfilter.Config{
N: 10000000,
P: 0.0000001,
HashName: "optimal",
},
TTL: 1500,
}
)
err = client.Call("BloomfilterRPC.Add", AddInput{elems1}, &addOutput)
if err != nil {
fmt.Printf("unexpected error: %s", err.Error())
return
}
err = client.Call("BloomfilterRPC.Check", CheckInput{elems1}, &checkOutput)
if err != nil {
fmt.Printf("unexpected error: %s", err.Error())
return
}
if len(checkOutput.Checks) != 2 || !checkOutput.Checks[0] || !checkOutput.Checks[1] {
fmt.Printf("checks error, expected true elements")
return
}
divCall := client.Go("BloomfilterRPC.Check", elems1, &checkOutput, nil)
<-divCall.Done
if len(checkOutput.Checks) != 2 || !checkOutput.Checks[0] || !checkOutput.Checks[1] {
fmt.Printf("checks error, expected true elements")
return
}
var bf2 = rotate.New(context.Background(), cfg)
bf2.Add([]byte("house"))
err = client.Call("BloomfilterRPC.Union", UnionInput{bf2}, &unionOutput)
if err != nil {
fmt.Printf("unexpected error: %s", err.Error())
return
}
fmt.Println(unionOutput.Capacity < 1e-6)
err = client.Call("BloomfilterRPC.Check", CheckInput{elems2}, &checkOutput)
if err != nil {
fmt.Printf("unexpected error: %s", err.Error())
return
}
fmt.Println(checkOutput.Checks)
if len(checkOutput.Checks) != 1 || !checkOutput.Checks[0] {
fmt.Println("checks error, expected true element")
return
}
var bf3 = rotate.New(context.Background(), cfg)
bf3.Add([]byte("mouse"))
divCall = client.Go("BloomfilterRPC.Union", UnionInput{bf3}, &unionOutput, nil)
<-divCall.Done
err = client.Call("BloomfilterRPC.Check", CheckInput{elems3}, &checkOutput)
if err != nil {
fmt.Printf("unexpected error: %s", err.Error())
return
}
fmt.Println(unionOutput.Capacity < 1e-6)
fmt.Println(checkOutput.Checks)
if len(checkOutput.Checks) != 2 || !checkOutput.Checks[0] || !checkOutput.Checks[1] {
fmt.Println("checks error, expected true element")
return
}
Output: true [true] true [true true]
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var (
ErrNoBloomfilterInitialized = fmt.Errorf("Bloomfilter not initialized")
)
ErrNoBloomfilterInitialized error
Functions ¶
This section is empty.
Types ¶
type AddOutput ¶
type AddOutput struct {
Count int
}
AddOutput type for an array of elements to a sliding bloomfilter set
type Bloomfilter ¶
type Bloomfilter struct {
BloomfilterRPC
}
Bloomfilter wrapper for BloomfilterRPC type
func New ¶
func New(ctx context.Context, cfg Config) *Bloomfilter
New rpc layer implementation of creating a sliding bloomfilter set
func (*Bloomfilter) Bloomfilter ¶
func (b *Bloomfilter) Bloomfilter() *rotate.Bloomfilter
Bloomfilter getter
type BloomfilterRPC ¶
type BloomfilterRPC int
BloomfilterRPC type
func (*BloomfilterRPC) Add ¶
func (b *BloomfilterRPC) Add(in AddInput, out *AddOutput) error
Add rpc layer implementation of an array of elements to a sliding bloomfilter set
func (*BloomfilterRPC) Check ¶
func (b *BloomfilterRPC) Check(in CheckInput, out *CheckOutput) error
Check rpc layer implementation of an array of elements in a sliding bloomfilter set
func (*BloomfilterRPC) Union ¶
func (b *BloomfilterRPC) Union(in UnionInput, out *UnionOutput) error
Union rpc layer implementation of two sliding bloomfilter sets
type CheckInput ¶
type CheckInput struct {
Elems [][]byte
}
CheckInput type for an array of elements
type CheckOutput ¶
type CheckOutput struct {
Checks []bool
}
CheckOutput type for check result of an array of elements in a sliding bloomfilter set
type UnionInput ¶
type UnionInput struct {
BF *rotate.Bloomfilter
}
UnionInput type for sliding bloomfilter set
type UnionOutput ¶
type UnionOutput struct {
Capacity float64
}
UnionOutput type for sliding bloomfilter set fill degree
Directories
¶
| Path | Synopsis |
|---|---|
|
Package client implements an rpc client for the bloomfilter, along with Add and Check methods.
|
Package client implements an rpc client for the bloomfilter, along with Add and Check methods. |
|
Package server implements an rpc server for the bloomfilter, registering a bloomfilter and accepting a tcp listener.
|
Package server implements an rpc server for the bloomfilter, registering a bloomfilter and accepting a tcp listener. |