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