1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2025-01-02 15:36:41 -05:00
This commit is contained in:
v2ray 2016-04-26 01:08:41 +02:00
parent d9d3eac8f7
commit d9367efb2d
2 changed files with 12 additions and 0 deletions

View File

@ -1,10 +1,12 @@
package signal
// CancelSignal is a signal passed to goroutine, in order to cancel the goroutine on demand.
type CancelSignal struct {
cancel chan struct{}
done chan struct{}
}
// NewCloseSignal creates a new CancelSignal.
func NewCloseSignal() *CancelSignal {
return &CancelSignal{
cancel: make(chan struct{}),
@ -12,18 +14,22 @@ func NewCloseSignal() *CancelSignal {
}
}
// Cancel signals the goroutine to stop.
func (this *CancelSignal) Cancel() {
close(this.cancel)
}
// WaitForCancel should be monitored by the goroutine for when to stop.
func (this *CancelSignal) WaitForCancel() <-chan struct{} {
return this.cancel
}
// Done signals the caller that the goroutine has completely finished.
func (this *CancelSignal) Done() {
close(this.done)
}
// WaitForDone is used by caller to wait for the goroutine finishes.
func (this *CancelSignal) WaitForDone() <-chan struct{} {
return this.done
}

View File

@ -16,14 +16,17 @@ var (
type UUID [16]byte
// String returns the string representation of this UUID.
func (this *UUID) String() string {
return bytesToString(this.Bytes())
}
// Bytes returns the bytes representation of this UUID.
func (this *UUID) Bytes() []byte {
return this[:]
}
// Equals returns true if this UUID equals another UUID by value.
func (this *UUID) Equals(another *UUID) bool {
if this == nil && another == nil {
return true
@ -61,12 +64,14 @@ func bytesToString(bytes []byte) string {
return result
}
// New creates an UUID with random value.
func New() *UUID {
uuid := new(UUID)
rand.Read(uuid.Bytes())
return uuid
}
// PraseBytes converts an UUID in byte form to object.
func ParseBytes(b []byte) (*UUID, error) {
if len(b) != 16 {
return nil, ErrorInvalidID
@ -76,6 +81,7 @@ func ParseBytes(b []byte) (*UUID, error) {
return uuid, nil
}
// ParseString converts an UUID in string form to object.
func ParseString(str string) (*UUID, error) {
text := []byte(str)
if len(text) < 32 {