package net
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/vocdoni/go-dvote/types"
|
|
)
|
|
|
|
type Transport interface {
|
|
Listen(reciever chan<- types.Message, errors chan<- error)
|
|
Send(msg []byte, errors chan<- error)
|
|
Init() error
|
|
}
|
|
type TransportID int
|
|
|
|
const (
|
|
PubSub TransportID = iota + 1
|
|
PSS
|
|
)
|
|
|
|
func TransportIDFromString(i string) TransportID {
|
|
switch i {
|
|
case "PubSub":
|
|
return PubSub
|
|
case "PSS":
|
|
return PSS
|
|
default:
|
|
return -1
|
|
}
|
|
}
|
|
|
|
func Init(t TransportID) (Transport, error) {
|
|
switch t {
|
|
case PubSub:
|
|
p := new(PubSubHandle)
|
|
defaultConnection := new(types.Connection)
|
|
defaultConnection.Topic = "vocdoni_testing"
|
|
p.c = defaultConnection
|
|
p.Init()
|
|
return p, nil
|
|
case PSS:
|
|
p := new(PSSHandle)
|
|
defaultConnection := new(types.Connection)
|
|
defaultConnection.Topic = "vocdoni_testing"
|
|
defaultConnection.Key = ""
|
|
defaultConnection.Kind = "sym"
|
|
p.c = defaultConnection
|
|
p.Init()
|
|
return p, nil
|
|
default:
|
|
return nil, errors.New("Bad transport type specification")
|
|
}
|
|
}
|