| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | 
							- // Copyright (C) 2014 The Syncthing Authors.
 
- //
 
- // This Source Code Form is subject to the terms of the Mozilla Public
 
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
 
- // You can obtain one at https://mozilla.org/MPL/2.0/.
 
- package beacon
 
- import (
 
- 	"net"
 
- 	stdsync "sync"
 
- 	"github.com/thejerf/suture"
 
- )
 
- type recv struct {
 
- 	data []byte
 
- 	src  net.Addr
 
- }
 
- type Interface interface {
 
- 	suture.Service
 
- 	Send(data []byte)
 
- 	Recv() ([]byte, net.Addr)
 
- 	Error() error
 
- }
 
- type errorHolder struct {
 
- 	err error
 
- 	mut stdsync.Mutex // uses stdlib sync as I want this to be trivially embeddable, and there is no risk of blocking
 
- }
 
- func (e *errorHolder) setError(err error) {
 
- 	e.mut.Lock()
 
- 	e.err = err
 
- 	e.mut.Unlock()
 
- }
 
- func (e *errorHolder) Error() error {
 
- 	e.mut.Lock()
 
- 	err := e.err
 
- 	e.mut.Unlock()
 
- 	return err
 
- }
 
 
  |