You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lal/pkg/base/t_http_an__notify.go

150 lines
3.7 KiB
Go

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// Copyright 2020, Chef. All rights reserved.
// https://github.com/q191201771/lal
//
// Use of this source code is governed by a MIT-style license
// that can be found in the License file.
//
// Author: Chef (191201771@qq.com)
package base
// 文档见: https://pengrl.com/lal/#/HTTPNotify
// EventCommonInfo 所有事件共有的字段
type EventCommonInfo struct {
ServerId string `json:"server_id"`
}
// SessionEventCommonInfo session相关的事件的共有的字段
type SessionEventCommonInfo struct {
EventCommonInfo
SessionId string `json:"session_id"`
Protocol string `json:"protocol"`
BaseType string `json:"base_type"`
RemoteAddr string `json:"remote_addr"`
Url string `json:"url"`
AppName string `json:"app_name"`
StreamName string `json:"stream_name"`
UrlParam string `json:"url_param"`
HasInSession bool `json:"has_in_session"`
HasOutSession bool `json:"has_out_session"`
// TODO(chef): [opt] 这两个字段实际需求出发点是有业务方需要在stop事件做流量统计但是现在的实现为所有session事件都添加了是否合适 202208
ReadBytesSum uint64 `json:"read_bytes_sum"`
WroteBytesSum uint64 `json:"wrote_bytes_sum"`
}
type UpdateInfo struct {
EventCommonInfo
Groups []StatGroup `json:"groups"`
}
type PubStartInfo struct {
SessionEventCommonInfo
}
type PubStopInfo struct {
SessionEventCommonInfo
}
type SubStartInfo struct {
SessionEventCommonInfo
}
type SubStopInfo struct {
SessionEventCommonInfo
}
type PullStartInfo struct {
SessionEventCommonInfo
}
type PullStopInfo struct {
SessionEventCommonInfo
}
type RtmpConnectInfo struct {
EventCommonInfo
SessionId string `json:"session_id"`
RemoteAddr string `json:"remote_addr"`
App string `json:"app"`
FlashVer string `json:"flashVer"`
TcUrl string `json:"tcUrl"`
}
type HlsMakeTsInfo struct {
EventCommonInfo
Event string `json:"event"`
StreamName string `json:"stream_name"`
Cwd string `json:"cwd"`
TsFile string `json:"ts_file"`
LiveM3u8File string `json:"live_m3u8_file"`
RecordM3u8File string `json:"record_m3u8_file"`
Id int `json:"id"`
Duration float64 `json:"duration"`
}
// ---------------------------------------------------------------------------------------------------------------------
func Session2PubStartInfo(session ISession) PubStartInfo {
return PubStartInfo{
session2EventCommonInfo(session),
}
}
func Session2PubStopInfo(session ISession) PubStopInfo {
return PubStopInfo{
session2EventCommonInfo(session),
}
}
func Session2SubStartInfo(session ISession) SubStartInfo {
return SubStartInfo{
session2EventCommonInfo(session),
}
}
func Session2SubStopInfo(session ISession) SubStopInfo {
return SubStopInfo{
session2EventCommonInfo(session),
}
}
func Session2PullStartInfo(session ISession) PullStartInfo {
return PullStartInfo{
session2EventCommonInfo(session),
}
}
func Session2PullStopInfo(session ISession) PullStopInfo {
return PullStopInfo{
session2EventCommonInfo(session),
}
}
// ---------------------------------------------------------------------------------------------------------------------
func session2EventCommonInfo(session ISession) SessionEventCommonInfo {
var info SessionEventCommonInfo
stat := session.GetStat()
info.SessionId = stat.SessionId
info.Protocol = stat.Protocol
info.BaseType = stat.BaseType
info.RemoteAddr = stat.RemoteAddr
info.Url = session.Url()
info.AppName = session.AppName()
info.StreamName = session.StreamName()
info.Url = session.Url()
info.UrlParam = session.RawQuery()
info.ReadBytesSum = stat.ReadBytesSum
info.WroteBytesSum = stat.WroteBytesSum
return info
}