mirror of https://github.com/tailscale/tailscale/
cmd/tailscaled, ipn/{ipnlocal,ipnserver}: let netstack get access to LocalBackend
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>pull/1493/head
parent
25d2dd868b
commit
2bc518dcb2
@ -0,0 +1,28 @@
|
||||
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package ipnlocal
|
||||
|
||||
import "sync"
|
||||
|
||||
// LocalBackendFuture is a Future that returns a *LocalBackend.
|
||||
type LocalBackendFuture struct {
|
||||
getOnce sync.Once
|
||||
ch chan *LocalBackend
|
||||
v *LocalBackend
|
||||
}
|
||||
|
||||
func (f *LocalBackendFuture) Get() *LocalBackend {
|
||||
f.getOnce.Do(f.get)
|
||||
return f.v
|
||||
}
|
||||
|
||||
func (f *LocalBackendFuture) get() { f.v = <-f.ch }
|
||||
func (f *LocalBackendFuture) Set(v *LocalBackend) { f.ch <- v }
|
||||
|
||||
func NewLocalBackendFuture() *LocalBackendFuture {
|
||||
return &LocalBackendFuture{
|
||||
ch: make(chan *LocalBackend, 1),
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue