Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Discover ¶ added in v0.3.6
Example ¶
package main
import (
"fmt"
"time"
"github.com/ipfs/go-cid"
symbols "github.com/taubyte/go-sdk-symbols/p2p/node"
"github.com/taubyte/go-sdk/p2p/node"
)
var (
cid1 cid.Cid
cid2 cid.Cid
cid3 cid.Cid
)
// Initialize some CIDs test
func init() {
var err error
cid1, err = cid.Parse("bafzaajaiaejcatsa2r73dij2iewq47p2c6runxmvht2evx6agmojnk3pjflfcn52")
if err != nil {
panic(err)
}
cid2, err = cid.Parse("bafzaajaiaejcbiutf54aucf7ej47lrr27fuqarekshylvkbnwzd77p23wc2gzl3s")
if err != nil {
panic(err)
}
cid3, err = cid.Parse("bafzaajaiaejcbsmuszumjrisswnmvahkpycbjrlzhzrzdjryyqej4kww73kyxnnd")
if err != nil {
panic(err)
}
}
func main() {
// Mocking the calls to the vm for usage in tests and playground
symbols.MockData{
DiscoverMax: 3,
DiscoverTimeout: uint32(time.Second * 2),
DiscoverId: 4,
Peers: []cid.Cid{cid1, cid2, cid3},
}.Mock()
peers, err := node.Discover(3, time.Second*2)
if err != nil {
return
}
for _, peer := range peers {
fmt.Println(peer.String())
}
}
Output: bafzaajaiaejcatsa2r73dij2iewq47p2c6runxmvht2evx6agmojnk3pjflfcn52 bafzaajaiaejcbiutf54aucf7ej47lrr27fuqarekshylvkbnwzd77p23wc2gzl3s bafzaajaiaejcbsmuszumjrisswnmvahkpycbjrlzhzrzdjryyqej4kww73kyxnnd
Types ¶
type Command ¶
type Command uint32
A p2p command
func (Command) Send ¶
Send returns the command response and an error, used to send data over p2p on given protocol and command.
Example ¶
package main
import (
"fmt"
symbols "github.com/taubyte/go-sdk-symbols/p2p/node"
"github.com/taubyte/go-sdk/event"
"github.com/taubyte/go-sdk/p2p/node"
)
func main() {
// Mocking the calls to the vm for usage in tests and playground
m := symbols.MockData{
Protocol: "/test/v1",
Command: "someCommand",
SendResponse: []byte("Hello from the other side!"),
}.Mock()
service := node.New(m.Protocol)
// Instantiate a command `someCommand` to protocol `/test/v1`
command, err := service.Command(m.Command)
if err != nil {
return
}
// Send the command with data []byte("Hello, world!")
response, err := command.Send([]byte("Hello, world!"))
if err != nil {
return
}
// A function representing the call executed by the above command
_ = func(e event.Event) uint32 {
p2pEvent, err := e.P2P()
if err != nil {
return 1
}
data, err := p2pEvent.Data()
if err != nil {
return 1
}
if string(data) == "Hello, world!" {
p2pEvent.Write([]byte("Hello from the other side!"))
return 0
}
return 1
}
fmt.Println(string(response))
}
Output: Hello from the other side!
func (Command) SendTo ¶ added in v0.3.6
SendTo returns the command response and an error, used to send data over p2p on given protocol and command.
Example ¶
// Mocking the calls to the vm for usage in tests and playground
m := symbols.MockData{
Protocol: "/test/v1",
Command: "someCommand",
SendResponse: []byte("Hello from the other side!"),
SendTo: cid1,
}.Mock()
service := node.New(m.Protocol)
// Instantiate a command `someCommand` to protocol `/test/v1`
command, err := service.Command(m.Command)
if err != nil {
return
}
// Send the command to cid1 with data []byte("Hello, world!")
response, err := command.SendTo([]byte("Hello, world!"), cid1)
if err != nil {
return
}
// A function representing the call executed by the above command
_ = func(e event.Event) uint32 {
p2pEvent, err := e.P2P()
if err != nil {
return 1
}
data, err := p2pEvent.Data()
if err != nil {
return 1
}
if string(data) == "Hello, world!" {
p2pEvent.Write([]byte("Hello from the other side!"))
return 0
}
return 1
}
fmt.Println(string(response))
Output: Hello from the other side!
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
A p2p service with on a given protocol
func (*Service) Command ¶
Command returns a p2p Command and an error Used for sending a given command on a protocol
Example ¶
package main
import (
"fmt"
symbols "github.com/taubyte/go-sdk-symbols/p2p/node"
"github.com/taubyte/go-sdk/p2p/node"
)
func main() {
// Mocking the calls to the vm for usage in tests and playground
symbols.MockData{
Protocol: "/test/v1",
Command: "someCommand",
CommandId: 5,
}.Mock()
service := node.New("/test/v1")
// Instantiate a command `someCommand` to protocol `/test/v1`
command, err := service.Command("someCommand")
if err != nil {
return
}
fmt.Println(command)
}
Output: 5
func (*Service) Listen ¶
Listen returns the projectProtocol and an error. Asks a node to listen on a protocol, and returns the protocol the node is set to listen on.
Example ¶
package main
import (
"fmt"
symbols "github.com/taubyte/go-sdk-symbols/p2p/node"
"github.com/taubyte/go-sdk/p2p/node"
)
func main() {
// Mocking the calls to the vm for usage in tests and playground
symbols.MockData{
ListenHash: "QmZjBpQzR",
ListenProtocol: "/test/v1",
}.Mock()
// Instantiate a service with protocol `/test/v1`
service := node.New("/test/v1")
listenProtocol, err := service.Listen()
if err != nil {
return
}
fmt.Println(listenProtocol)
}
Output: /QmZjBpQzR/test/v1
func (*Service) Protocol ¶
Returns the protocol of a given service
Example ¶
package main
import (
"fmt"
symbols "github.com/taubyte/go-sdk-symbols/p2p/node"
"github.com/taubyte/go-sdk/p2p/node"
)
func main() {
// Mocking the calls to the vm for usage in tests and playground
symbols.MockData{
Protocol: "/test/v1",
}.Mock()
service := node.New("/test/v1")
fmt.Println(service.Protocol())
}
Output: /test/v1
Click to show internal directories.
Click to hide internal directories.