livekit-protocol 0.7.5

Livekit protocol and utilities for the Rust SDK
Documentation
package traceid

import (
	"encoding/binary"
	"strconv"
	"strings"
)

// ID helps distinguish specific object with unique IDs in Go stack traces.
//
// Stack trace only prints integer arguments, so this ID is generated by converting a unique object ID to hex,
// and passing it explicitly as an argument to functions we want tagged. Just storing or logging it won't help.
type ID uint64

func (id ID) String() string {
	return strconv.FormatUint(uint64(id), 16)
}

// FromString creates ID from 8-byte prefix of a string.
// It does not make any assumptions about string format.
func FromString(s string) ID {
	var data [8]byte
	copy(data[:], s)
	return ID(binary.BigEndian.Uint64(data[:]))
}

// FromGUID creates ID from a GUID in the format TYPE_<SOMEID>.
func FromGUID(id string) ID {
	if i := strings.IndexByte(id, '_'); i != -1 {
		id = id[i+1:]
	}
	return FromString(id)
}