Rough outline of tunnel types
This commit is contained in:
parent
000431f489
commit
4074cce397
@ -7,8 +7,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type tun struct {
|
type tun struct {
|
||||||
options Options
|
|
||||||
sync.RWMutex
|
sync.RWMutex
|
||||||
|
tr transport.Transport
|
||||||
|
options Options
|
||||||
connected bool
|
connected bool
|
||||||
closed chan bool
|
closed chan bool
|
||||||
}
|
}
|
||||||
@ -21,7 +22,11 @@ func newTunnel(opts ...Option) Tunnel {
|
|||||||
o(&options)
|
o(&options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// tunnel transport
|
||||||
|
tr := newTransport()
|
||||||
|
|
||||||
t := &tun{
|
t := &tun{
|
||||||
|
tr: tr,
|
||||||
options: options,
|
options: options,
|
||||||
closed: make(chan bool),
|
closed: make(chan bool),
|
||||||
}
|
}
|
||||||
@ -29,30 +34,37 @@ func newTunnel(opts ...Option) Tunnel {
|
|||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Id returns tunnel id
|
||||||
func (t *tun) Id() string {
|
func (t *tun) Id() string {
|
||||||
return t.options.Id
|
return t.options.Id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Options returns tunnel options
|
||||||
|
func (t *tun) Options() Options {
|
||||||
|
return t.options
|
||||||
|
}
|
||||||
|
|
||||||
|
// Address returns tunnel listen address
|
||||||
func (t *tun) Address() string {
|
func (t *tun) Address() string {
|
||||||
return t.options.Address
|
return t.options.Address
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Transport returns tunnel client transport
|
||||||
func (t *tun) Transport() transport.Transport {
|
func (t *tun) Transport() transport.Transport {
|
||||||
return nil
|
return t.tr
|
||||||
}
|
|
||||||
|
|
||||||
func (t *tun) Options() transport.Options {
|
|
||||||
return transport.Options{}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Connect connects establishes point to point tunnel
|
||||||
func (t *tun) Connect() error {
|
func (t *tun) Connect() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close closes the tunnel
|
||||||
func (t *tun) Close() error {
|
func (t *tun) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Status returns tunnel status
|
||||||
func (t *tun) Status() Status {
|
func (t *tun) Status() Status {
|
||||||
select {
|
select {
|
||||||
case <-t.closed:
|
case <-t.closed:
|
||||||
|
25
tunnel/socket.go
Normal file
25
tunnel/socket.go
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package tunnel
|
||||||
|
|
||||||
|
import "github.com/micro/go-micro/transport"
|
||||||
|
|
||||||
|
type tunSocket struct{}
|
||||||
|
|
||||||
|
func (s *tunSocket) Recv(m *transport.Message) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *tunSocket) Send(m *transport.Message) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *tunSocket) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *tunSocket) Local() string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *tunSocket) Remote() string {
|
||||||
|
return ""
|
||||||
|
}
|
51
tunnel/transport.go
Normal file
51
tunnel/transport.go
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package tunnel
|
||||||
|
|
||||||
|
import "github.com/micro/go-micro/transport"
|
||||||
|
|
||||||
|
type tunTransport struct {
|
||||||
|
options transport.Options
|
||||||
|
}
|
||||||
|
|
||||||
|
type tunClient struct {
|
||||||
|
*tunSocket
|
||||||
|
options transport.DialOptions
|
||||||
|
}
|
||||||
|
|
||||||
|
type tunListener struct {
|
||||||
|
conn chan *tunSocket
|
||||||
|
}
|
||||||
|
|
||||||
|
func newTransport(opts ...transport.Option) transport.Transport {
|
||||||
|
var options transport.Options
|
||||||
|
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &tunTransport{
|
||||||
|
options: options,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *tunTransport) Init(opts ...transport.Option) error {
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&t.options)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *tunTransport) Options() transport.Options {
|
||||||
|
return t.options
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *tunTransport) Dial(addr string, opts ...transport.DialOption) (transport.Client, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *tunTransport) Listen(addr string, opts ...transport.ListenOption) (transport.Listener, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *tunTransport) String() string {
|
||||||
|
return "micro"
|
||||||
|
}
|
@ -19,9 +19,11 @@ const (
|
|||||||
type Tunnel interface {
|
type Tunnel interface {
|
||||||
// Id returns tunnel id
|
// Id returns tunnel id
|
||||||
Id() string
|
Id() string
|
||||||
|
// Options returns the tunnel options
|
||||||
|
Options() Options
|
||||||
// Address returns tunnel address
|
// Address returns tunnel address
|
||||||
Address() string
|
Address() string
|
||||||
// Tramsport returns tunnel transport
|
// Transport to use by tunne clients
|
||||||
Transport() transport.Transport
|
Transport() transport.Transport
|
||||||
// Connect connects the tunnel
|
// Connect connects the tunnel
|
||||||
Connect() error
|
Connect() error
|
||||||
|
Loading…
Reference in New Issue
Block a user