Documentation ¶
Index ¶
- Constants
- func CleanupObjectKey(orig string) string
- func ReadPlaylistFile(playlistFile string) (uri string, content []string, err error)
- type Broadcaster
- type FSEvent
- type FileSystemWatcher
- type S3BulkDeleteError
- type S3Client
- type SegmentMetricsAgent
- type SegmentReader
- type SegmentReturnCallback
- type VideoSegmentCache
Constants ¶
const ( MetricsNameUtilCacheCurrentCount = "utils_segment_cache_currently_cached" MetricsNameUtilCacheSegmentLen = "utils_segment_cache_io_bytes_total" MetricsNameUtilCacheIOLatency = "utils_segment_cache_io_latency_sec_total" MetricsNameUtilCacheIOCount = "utils_segment_cache_io_ops_total" MetricsNameUtilFetcherSegmentLen = "utils_segment_fetcher_read_bytes_total" MetricsNameUtilFetcherReadLatency = "utils_segment_fetcher_read_latency_sec_total" MetricsNameUtilFetcherIOCount = "utils_segment_fetcher_read_ops_total" MetricsNameVODSegmentMgmtSegmentLen = "vod_segment_mgmt_read_bytes_total" MetricsNameVODSegmentMgmtIOCount = "vod_segment_mgmt_read_ops_total" MetricsNameVODPlaylistBuiltCount = "vod_playlist_builder_playlist_gen_total" MetricsNameTrackerMonitorPlaylistReadCount = "tracker_monitor_read_playlists_total" MetricsNameTrackerMonitorNewSegmentCount = "tracker_monitor_new_segment_total" MetricsNameTrackerMonitorSegmentReadLen = "tracker_monitor_read_segment_bytes_total" MetricsNameTrackerMonitorSegmentReadCount = "tracker_monitor_read_segment_total" MetricsNameTrackerMonitorSegmentForwardLen = "tracker_monitor_forward_segment_bytes_total" MetricsNameTrackerMonitorSegmentForwardCount = "tracker_monitor_forward_segment_total" MetricsNameForwarderSenderSegmentForwardLen = "forwarder_sender_segment_bytes_total" MetricsNameForwarderSenderSegmentForwardLatency = "forwarder_sender_segment_send_latency_sec_total" MetricsNameForwarderSenderSegmentForwardCount = "forwarder_sender_segment_total" MetricsNameEdgeManagerSegmentReadLen = "edge_manager_read_segment_bytes_total" MetricsNameEdgeManagerSegmentReadCount = "edge_manager_read_segment_total" MetricsNameEdgeManagerActiveRecordingCount = "edge_manager_currently_active_recordings" MetricsNameControlCentralSegmentMgmtSegmentReadLen = "control_segment_mgmt_read_bytes_total" MetricsNameControlCentralSegmentMgmtSegmentReadCount = "control_segment_mgmt_read_total" MetricsNameControlManagerRegisteredSourceCount = "control_manager_registered_sources" MetricsNameControlManagerConnectedSourceCount = "control_manager_connected_sources" MetricsNameControlManagerRegisteredRecordingCount = "control_manager_registered_recordings" MetricsNameControlManagerActiveRecordingCount = "control_manager_active_recordings" )
Metrics generated by the system
Variables ¶
This section is empty.
Functions ¶
func CleanupObjectKey ¶
CleanupObjectKey cleanup object key string
Remove any leading `/` from object key
Types ¶
type Broadcaster ¶
type Broadcaster interface { /* Broadcast broadcast a message @param ctxt context.Context - execution context @param message interface{} - message to broadcast */ Broadcast(ctxt context.Context, message interface{}) error }
Broadcaster message broadcasting client
func NewPubSubBroadcaster ¶
func NewPubSubBroadcaster( psClient goutils.PubSubClient, broadcastTopic string, ) (Broadcaster, error)
NewPubSubBroadcaster define new PubSub message broadcast client
@param psClient goutils.PubSubClient - PubSub client @param broadcastTopic string - message broadcast PubSub topic @returns new client
type FileSystemWatcher ¶
type FileSystemWatcher interface { /* Start begin the file system watch loop @param ctxt context.Context - execution context @param runtimeCtxt context.Context - runtime context for any background tasks */ Start(ctxt, runtimeCtxt context.Context) error /* Stop end the file system watch loop @param ctxt context.Context - execution context */ Stop(ctxt context.Context) error /* AddPath add path to list of path to watch @param ctxt context.Context - execution context @param newPath string - new path to watch */ AddPath(ctxt context.Context, newPath string) error /* RemovePath remove path from list of watched path @param ctxt context.Context - execution context @param path string - new path to watch */ RemovePath(ctxt context.Context, path string) error }
FileSystemWatcher monitor a DIR for file system changes
func NewFileSystemWatcher ¶
func NewFileSystemWatcher(eventChan chan FSEvent) (FileSystemWatcher, error)
NewFileSystemWatcher define new FileSystemWatcher
@param eventChan chan FSEvent - the channel to return file system events @returns watcher
type S3BulkDeleteError ¶
S3BulkDeleteError a wrapper object returned if bulk object delete failed for any particular objects
func (S3BulkDeleteError) Error ¶
func (e S3BulkDeleteError) Error() string
Error implement the error interface
type S3Client ¶
type S3Client interface { /* ListBuckets get a list of available buckets at the server @param ctxt context.Context - execution context @returns list of bucket names */ ListBuckets(ctxt context.Context) ([]string, error) /* ListObjects get a list of objects in a bucket @param ctxt context.Context - execution context @param bucket string - the bucket name @param prefix *string - optionally, specify the object prefix to filter on @return list of bucket objects */ ListObjects(ctxt context.Context, bucket string, prefix *string) ([]string, error) /* CreateBucket create a bucket @param ctxt context.Context - execution context @param bucketName string - new bucket name */ CreateBucket(ctxt context.Context, bucketName string) error /* DeleteBucket delete a bucket @param ctxt context.Context - execution context @param bucketName string - new bucket name */ DeleteBucket(ctxt context.Context, bucketName string) error /* PutObject put a new object into a bucket @param ctxt context.Context - execution context @param bucketName string - target bucket name @param objectKey string - target object name within the bucket @param content []byte - object */ PutObject(ctxt context.Context, bucketName, objectKey string, content []byte) error /* GetObject get an object from a bucket @param ctxt context.Context - execution context @param bucketName string - target bucket name @param objectKey string - target object name within the bucket @returns object content */ GetObject(ctxt context.Context, bucketName, objectKey string) ([]byte, error) /* DeleteObject delete an object from a bucket @param ctxt context.Context - execution context @param bucketName string - target bucket name @param objectKey string - target object name within the bucket */ DeleteObject(ctxt context.Context, bucketName, objectKey string) error /* DeleteObjects delete a group of objects from a bucket @param ctxt context.Context - execution context @param bucketName string - target bucket name @param objectKeys []string - target object names within the bucket */ DeleteObjects( ctxt context.Context, bucketName string, objectKeys []string, ) []S3BulkDeleteError }
S3Client client for interacting with S3
type SegmentMetricsAgent ¶
type SegmentMetricsAgent interface { /* RecordSegment update metrics for new segment @param segmentSize int - segment size @param labels map[string]string - label to attach to the metrics */ RecordSegment(segmentSize int, labels map[string]string) }
SegmentMetricsAgent helper agent for writing segment related metrics
func NewSegmentMetricsAgent ¶
func NewSegmentMetricsAgent( ctxt context.Context, collector goutils.MetricsCollector, lengthMetricsName, lengthMetricsHelpMsg, countMetricsName, countMetricsHelpMsg string, expectedLabels []string, ) (SegmentMetricsAgent, error)
NewSegmentMetricsAgent define a new SegmentMetricsAgent
@param ctxt context.Context - execution context @param lengthMetricsName string - segment length metrics name @param lengthMetricsHelpMsg string - segment length metrics helper message @param countMetricsName string - segment count metrics name @param countMetricsHelpMsg string - segment count metrics helper message @param expectedLabels []string - set of labels to attach to the metrics @returns new metrics helper agent
type SegmentReader ¶
type SegmentReader interface { /* ReadSegment read one segment from specified location @param ctxt context.Context - execution context @param segment common.VideoSegment - video segment @param returnCB SegmentReturnCallback - callback used to return the read segment back */ ReadSegment( ctxt context.Context, segment common.VideoSegment, returnCB SegmentReturnCallback, ) error /* Stop stops the daemon process @param ctxt context.Context - execution context */ Stop(ctxt context.Context) error }
SegmentReader support daemon process which reads HLS MPEG-TS segment asynchronously
func NewSegmentReader ¶
func NewSegmentReader( parentContext context.Context, workerCount int, s3 S3Client, metrics goutils.MetricsCollector, ) (SegmentReader, error)
NewSegmentReader define new SegmentReader
@param parentContext context.Context - context from which to define the worker context @param workerCount int - number of parallel read worker to define @param s3 S3Client - S3 client for operating against the S3 server @param metrics goutils.MetricsCollector - metrics framework client @return new SegmentReader
type SegmentReturnCallback ¶
SegmentReturnCallback function signature of callback to receive a read segment
type VideoSegmentCache ¶
type VideoSegmentCache interface { /* CacheSegment add video segment to cache @param ctxt context.Context - execution context @param segment common.VideoSegmentWithData - video segment to cache @param ttl time.Duration - data retention in seconds before the entry expires */ CacheSegment(ctxt context.Context, segment common.VideoSegmentWithData, ttl time.Duration) error /* PurgeSegment delete video segment from cache @param ctxt context.Context - execution context @param segments []common.VideoSegment - list of segments to purge */ PurgeSegments(ctxt context.Context, segments []common.VideoSegment) error /* GetSegment fetch video segment from cache @param ctxt context.Context - execution context @param segment common.VideoSegment - segment to read @returns MPEG-TS file content */ GetSegment(ctxt context.Context, segment common.VideoSegment) ([]byte, error) /* GetSegments fetch group of video segments from cache. The returned entries are what is currently available within the cache. @param ctxt context.Context - execution context @param segments []common.VideoSegment - segments to read @returns set of MPEG-TS file content */ GetSegments(ctxt context.Context, segments []common.VideoSegment) (map[string][]byte, error) /* CacheEntryCount return the number of cached entries @param ctxt context.Context - execution context @returns the number of cached entries */ CacheEntryCount(ctxt context.Context) (int, error) }
VideoSegmentCache video segment cache
func NewLocalVideoSegmentCache ¶
func NewLocalVideoSegmentCache( parentContext context.Context, retentionCheckInterval time.Duration, metrics goutils.MetricsCollector, ) (VideoSegmentCache, error)
NewLocalVideoSegmentCache define new local in process single HLS source video segment cache
@param parentContext context.Context - parent context from which a worker context is defined for the data retention enforcement process @param retentionCheckInterval time.Duration - cache entry retention enforce interval @param metrics goutils.MetricsCollector - metrics framework client @returns new VideoSegmentCache
func NewMemcachedVideoSegmentCache ¶
func NewMemcachedVideoSegmentCache( ctxt context.Context, servers []string, metrics goutils.MetricsCollector, ) (VideoSegmentCache, error)
NewMemcachedVideoSegmentCache define new memcached video segment cache
@param ctxt context.Context - execution context @param servers []string - list of memcached servers to connect to @param metrics goutils.MetricsCollector - metrics framework client @returns new VideoSegmentCache