proto

package
v0.0.0-...-e7c6d99 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 7, 2022 License: MIT Imports: 13 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Subscription_Layer_name = map[int32]string{
		0: "Q",
		1: "H",
		2: "F",
	}
	Subscription_Layer_value = map[string]int32{
		"Q": 0,
		"H": 1,
		"F": 2,
	}
)

Enum value maps for Subscription_Layer.

View Source
var File_proto_isglb_proto protoreflect.FileDescriptor
View Source
var ISGLB_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "isglb.ISGLB",
	HandlerType: (*ISGLBServer)(nil),
	Methods:     []grpc.MethodDesc{},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "SyncSFU",
			Handler:       _ISGLB_SyncSFU_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
	},
	Metadata: "proto/isglb.proto",
}

ISGLB_ServiceDesc is the grpc.ServiceDesc for ISGLB service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)

Functions

func RegisterISGLBServer

func RegisterISGLBServer(s grpc.ServiceRegistrar, srv ISGLBServer)

Types

type Algorithm

type Algorithm interface {

	// UpdateStatus tell the algorithm that the SFU graph and the computation and communication quality has changed
	// `current` is the changed SFU's current status
	// `reports` is a series of Quality Report
	// `expected` is that which SFU's status should change
	UpdateStatus(current []Status, reports []Report) (expected []Status)
}

Algorithm is the node selection algorithm interface

type AlgorithmWrapper

type AlgorithmWrapper struct {
	ProtobufAlgorithm
}

AlgorithmWrapper wrap the ProtobufAlgorithm

func (AlgorithmWrapper) UpdateStatus

func (w AlgorithmWrapper) UpdateStatus(current []Status, reports []Report) (expected []Status)

type ClientNeededSession

type ClientNeededSession struct {
	Session string `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"`
	User    string `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	// contains filtered or unexported fields
}

Which session do the client need. May be a lot of track in one session

func (*ClientNeededSession) Clone

func (*ClientNeededSession) Compare

func (i *ClientNeededSession) Compare(data util.DisorderSetItem) bool

func (*ClientNeededSession) Descriptor deprecated

func (*ClientNeededSession) Descriptor() ([]byte, []int)

Deprecated: Use ClientNeededSession.ProtoReflect.Descriptor instead.

func (*ClientNeededSession) GetSession

func (x *ClientNeededSession) GetSession() string

func (*ClientNeededSession) GetUser

func (x *ClientNeededSession) GetUser() string

func (*ClientNeededSession) Key

func (i *ClientNeededSession) Key() string

func (*ClientNeededSession) ProtoMessage

func (*ClientNeededSession) ProtoMessage()

func (*ClientNeededSession) ProtoReflect

func (x *ClientNeededSession) ProtoReflect() protoreflect.Message

func (*ClientNeededSession) Reset

func (x *ClientNeededSession) Reset()

func (*ClientNeededSession) String

func (x *ClientNeededSession) String() string

type ClientNeededSessions

type ClientNeededSessions []*ClientNeededSession

func (ClientNeededSessions) ToDisorderSetItemList

func (clients ClientNeededSessions) ToDisorderSetItemList() util.DisorderSetItemList[*ClientNeededSession]

type ClientSessionItemList

type ClientSessionItemList util.DisorderSetItemList[*ClientNeededSession]

func (ClientSessionItemList) ToClientSessions

func (list ClientSessionItemList) ToClientSessions() []*ClientNeededSession

type ComputationReport

type ComputationReport struct {
	Node   *Node    `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
	Report *any.Any `protobuf:"bytes,2,opt,name=report,proto3" json:"report,omitempty"` //TODO: Add a more specific Report type
	// contains filtered or unexported fields
}

func (*ComputationReport) Descriptor deprecated

func (*ComputationReport) Descriptor() ([]byte, []int)

Deprecated: Use ComputationReport.ProtoReflect.Descriptor instead.

func (*ComputationReport) GetNode

func (x *ComputationReport) GetNode() *Node

func (*ComputationReport) GetReport

func (x *ComputationReport) GetReport() *any.Any

func (*ComputationReport) ProtoMessage

func (*ComputationReport) ProtoMessage()

func (*ComputationReport) ProtoReflect

func (x *ComputationReport) ProtoReflect() protoreflect.Message

func (*ComputationReport) Reset

func (x *ComputationReport) Reset()

func (*ComputationReport) String

func (x *ComputationReport) String() string

type ForwardTrack

type ForwardTrack struct {

	//  src + remoteSessionId is unique, use it as key
	Src             *Node           `protobuf:"bytes,1,opt,name=src,proto3" json:"src,omitempty"`
	RemoteSessionId string          `protobuf:"bytes,2,opt,name=remoteSessionId,proto3" json:"remoteSessionId,omitempty"` // The video/audio has session id in different nodes
	LocalSessionId  string          `protobuf:"bytes,3,opt,name=localSessionId,proto3" json:"localSessionId,omitempty"`   // The video/audio has session id in different nodes
	Tracks          []*Subscription `protobuf:"bytes,4,rep,name=tracks,proto3" json:"tracks,omitempty"`
	// contains filtered or unexported fields
}

The track in session `remoteSessionId` from `src` node was/should forwarded to local session `localSessionId`

func (*ForwardTrack) Clone

func (i *ForwardTrack) Clone() util.DisorderSetItem

func (*ForwardTrack) Compare

func (i *ForwardTrack) Compare(data util.DisorderSetItem) bool

func (*ForwardTrack) Descriptor deprecated

func (*ForwardTrack) Descriptor() ([]byte, []int)

Deprecated: Use ForwardTrack.ProtoReflect.Descriptor instead.

func (*ForwardTrack) GetLocalSessionId

func (x *ForwardTrack) GetLocalSessionId() string

func (*ForwardTrack) GetRemoteSessionId

func (x *ForwardTrack) GetRemoteSessionId() string

func (*ForwardTrack) GetSrc

func (x *ForwardTrack) GetSrc() *Node

func (*ForwardTrack) GetTracks

func (x *ForwardTrack) GetTracks() []*Subscription

func (*ForwardTrack) Key

func (i *ForwardTrack) Key() string

func (*ForwardTrack) ProtoMessage

func (*ForwardTrack) ProtoMessage()

func (*ForwardTrack) ProtoReflect

func (x *ForwardTrack) ProtoReflect() protoreflect.Message

func (*ForwardTrack) Reset

func (x *ForwardTrack) Reset()

func (*ForwardTrack) String

func (x *ForwardTrack) String() string

type ForwardTrackItemList

type ForwardTrackItemList util.DisorderSetItemList[*ForwardTrack]

func (ForwardTrackItemList) ToForwardTracks

func (list ForwardTrackItemList) ToForwardTracks() []*ForwardTrack

type ForwardTracks

type ForwardTracks []*ForwardTrack

func (ForwardTracks) ToDisorderSetItemList

func (tracks ForwardTracks) ToDisorderSetItemList() util.DisorderSetItemList[*ForwardTrack]

type ISGLBClient

type ISGLBClient interface {
	// When forward path changed, upload the SFUStatus from client to ISGLB
	// When forward path should change, send expected SFUStatus from ISGLB to client
	// Report the communication quality or computation quality of the edge
	SyncSFU(ctx context.Context, opts ...grpc.CallOption) (ISGLB_SyncSFUClient, error)
}

ISGLBClient is the client API for ISGLB service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.

func NewISGLBClient

func NewISGLBClient(cc grpc.ClientConnInterface) ISGLBClient

type ISGLBServer

type ISGLBServer interface {
	// When forward path changed, upload the SFUStatus from client to ISGLB
	// When forward path should change, send expected SFUStatus from ISGLB to client
	// Report the communication quality or computation quality of the edge
	SyncSFU(ISGLB_SyncSFUServer) error
	// contains filtered or unexported methods
}

ISGLBServer is the server API for ISGLB service. All implementations must embed UnimplementedISGLBServer for forward compatibility

type ISGLB_SyncSFUClient

type ISGLB_SyncSFUClient interface {
	Send(*SyncRequest) error
	Recv() (*SFUStatus, error)
	grpc.ClientStream
}

type ISGLB_SyncSFUServer

type ISGLB_SyncSFUServer interface {
	Send(*SFUStatus) error
	Recv() (*SyncRequest, error)
	grpc.ServerStream
}

type Node

type Node struct {
	Id   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Info *any.Any `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"`
	// contains filtered or unexported fields
}

func (*Node) Descriptor deprecated

func (*Node) Descriptor() ([]byte, []int)

Deprecated: Use Node.ProtoReflect.Descriptor instead.

func (*Node) GetId

func (x *Node) GetId() string

func (*Node) GetInfo

func (x *Node) GetInfo() *any.Any

func (*Node) ProtoMessage

func (*Node) ProtoMessage()

func (*Node) ProtoReflect

func (x *Node) ProtoReflect() protoreflect.Message

func (*Node) Reset

func (x *Node) Reset()

func (*Node) String

func (x *Node) String() string

type ProceedTrack

type ProceedTrack struct {
	DstSessionId     string   `protobuf:"bytes,1,opt,name=dstSessionId,proto3" json:"dstSessionId,omitempty"`
	Procedure        *any.Any `protobuf:"bytes,2,opt,name=procedure,proto3" json:"procedure,omitempty"`               //src track should be proceeded by what kind of procedure
	SrcSessionIdList []string `protobuf:"bytes,3,rep,name=srcSessionIdList,proto3" json:"srcSessionIdList,omitempty"` //TODO: procedure should be more specific
	// contains filtered or unexported fields
}

The track from srcSessionId was/should be proceeded and output track's session id is `dstSessionId`

func (*ProceedTrack) Clone

func (i *ProceedTrack) Clone() util.DisorderSetItem

func (*ProceedTrack) Compare

func (i *ProceedTrack) Compare(data util.DisorderSetItem) bool

func (*ProceedTrack) Descriptor deprecated

func (*ProceedTrack) Descriptor() ([]byte, []int)

Deprecated: Use ProceedTrack.ProtoReflect.Descriptor instead.

func (*ProceedTrack) GetDstSessionId

func (x *ProceedTrack) GetDstSessionId() string

func (*ProceedTrack) GetProcedure

func (x *ProceedTrack) GetProcedure() *any.Any

func (*ProceedTrack) GetSrcSessionIdList

func (x *ProceedTrack) GetSrcSessionIdList() []string

func (*ProceedTrack) Key

func (i *ProceedTrack) Key() string

func (*ProceedTrack) ProtoMessage

func (*ProceedTrack) ProtoMessage()

func (*ProceedTrack) ProtoReflect

func (x *ProceedTrack) ProtoReflect() protoreflect.Message

func (*ProceedTrack) Reset

func (x *ProceedTrack) Reset()

func (*ProceedTrack) String

func (x *ProceedTrack) String() string

type ProceedTrackItemList

type ProceedTrackItemList util.DisorderSetItemList[*ProceedTrack]

func (ProceedTrackItemList) ToProceedTracks

func (list ProceedTrackItemList) ToProceedTracks() []*ProceedTrack

type ProceedTracks

type ProceedTracks []*ProceedTrack

func (ProceedTracks) ToDisorderSetItemList

func (tracks ProceedTracks) ToDisorderSetItemList() util.DisorderSetItemList[*ProceedTrack]

type ProtobufAlgorithm

type ProtobufAlgorithm interface {
	UpdateSFUStatus(current []*SFUStatus, reports []*QualityReport) (expected []*SFUStatus)
}

type QualityReport

type QualityReport struct {
	Timestamp *timestamp.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	// Types that are assignable to Report:
	//	*QualityReport_Transmission
	//	*QualityReport_Computation
	Report isQualityReport_Report `protobuf_oneof:"report"`
	// contains filtered or unexported fields
}

func (*QualityReport) Clone

func (r *QualityReport) Clone() Report

Clone implement isglb.Report.Clone

func (*QualityReport) Descriptor deprecated

func (*QualityReport) Descriptor() ([]byte, []int)

Deprecated: Use QualityReport.ProtoReflect.Descriptor instead.

func (*QualityReport) GetComputation

func (x *QualityReport) GetComputation() *ComputationReport

func (*QualityReport) GetReport

func (m *QualityReport) GetReport() isQualityReport_Report

func (*QualityReport) GetTimestamp

func (x *QualityReport) GetTimestamp() *timestamp.Timestamp

func (*QualityReport) GetTransmission

func (x *QualityReport) GetTransmission() *TransmissionReport

func (*QualityReport) ProtoMessage

func (*QualityReport) ProtoMessage()

func (*QualityReport) ProtoReflect

func (x *QualityReport) ProtoReflect() protoreflect.Message

func (*QualityReport) Reset

func (x *QualityReport) Reset()

func (*QualityReport) String

func (x *QualityReport) String() string

type QualityReport_Computation

type QualityReport_Computation struct {
	Computation *ComputationReport `protobuf:"bytes,3,opt,name=computation,proto3,oneof"`
}

type QualityReport_Transmission

type QualityReport_Transmission struct {
	Transmission *TransmissionReport `protobuf:"bytes,2,opt,name=transmission,proto3,oneof"`
}

type Report

type Report interface {
	// String stringify it
	String() string
	// Clone clone return a copy of this struct
	Clone() Report
}

type Request

type Request interface {
	// contains filtered or unexported methods
}

type RequestReport

type RequestReport struct {
	Report Report
}

type RequestStatus

type RequestStatus struct {
	Status Status
}

type SFUStatus

type SFUStatus struct {
	SFU           *Node                  `protobuf:"bytes,1,opt,name=SFU,proto3" json:"SFU,omitempty"`
	ForwardTracks []*ForwardTrack        `protobuf:"bytes,2,rep,name=forwardTracks,proto3" json:"forwardTracks,omitempty"`
	ProceedTracks []*ProceedTrack        `protobuf:"bytes,3,rep,name=proceedTracks,proto3" json:"proceedTracks,omitempty"`
	Clients       []*ClientNeededSession `protobuf:"bytes,4,rep,name=clients,proto3" json:"clients,omitempty"`
	// contains filtered or unexported fields
}

TODO: move SFUStatus to SFU module

func (*SFUStatus) Clone

func (s *SFUStatus) Clone() Status

Clone implement isglb.Status.Clone

func (*SFUStatus) Compare

func (s *SFUStatus) Compare(status Status) bool

Compare implement isglb.Status.Compare

func (*SFUStatus) Descriptor deprecated

func (*SFUStatus) Descriptor() ([]byte, []int)

Deprecated: Use SFUStatus.ProtoReflect.Descriptor instead.

func (*SFUStatus) GetClients

func (x *SFUStatus) GetClients() []*ClientNeededSession

func (*SFUStatus) GetForwardTracks

func (x *SFUStatus) GetForwardTracks() []*ForwardTrack

func (*SFUStatus) GetProceedTracks

func (x *SFUStatus) GetProceedTracks() []*ProceedTrack

func (*SFUStatus) GetSFU

func (x *SFUStatus) GetSFU() *Node

func (*SFUStatus) Key

func (s *SFUStatus) Key() string

Key implement isglb.Status.Key

func (*SFUStatus) ProtoMessage

func (*SFUStatus) ProtoMessage()

func (*SFUStatus) ProtoReflect

func (x *SFUStatus) ProtoReflect() protoreflect.Message

func (*SFUStatus) Reset

func (x *SFUStatus) Reset()

func (*SFUStatus) String

func (x *SFUStatus) String() string

type Status

type Status interface {
	// Key return the key of this item
	Key() string
	// Compare compare if two IndexData is the same
	Compare(Status) bool
	// String stringify it
	String() string
	// Clone clone return a copy of this struct
	Clone() Status
}

type Subscription

type Subscription struct {
	TrackId string             `protobuf:"bytes,1,opt,name=TrackId,proto3" json:"TrackId,omitempty"`
	Mute    bool               `protobuf:"varint,2,opt,name=Mute,proto3" json:"Mute,omitempty"`
	Layer   Subscription_Layer `protobuf:"varint,3,opt,name=layer,proto3,enum=isglb.Subscription_Layer" json:"layer,omitempty"`
	// contains filtered or unexported fields
}

func (*Subscription) Descriptor deprecated

func (*Subscription) Descriptor() ([]byte, []int)

Deprecated: Use Subscription.ProtoReflect.Descriptor instead.

func (*Subscription) GetLayer

func (x *Subscription) GetLayer() Subscription_Layer

func (*Subscription) GetMute

func (x *Subscription) GetMute() bool

func (*Subscription) GetTrackId

func (x *Subscription) GetTrackId() string

func (*Subscription) ProtoMessage

func (*Subscription) ProtoMessage()

func (*Subscription) ProtoReflect

func (x *Subscription) ProtoReflect() protoreflect.Message

func (*Subscription) Reset

func (x *Subscription) Reset()

func (*Subscription) String

func (x *Subscription) String() string

type Subscription_Layer

type Subscription_Layer int32
const (
	Subscription_Q Subscription_Layer = 0
	Subscription_H Subscription_Layer = 1
	Subscription_F Subscription_Layer = 2
)

func (Subscription_Layer) Descriptor

func (Subscription_Layer) Enum

func (Subscription_Layer) EnumDescriptor deprecated

func (Subscription_Layer) EnumDescriptor() ([]byte, []int)

Deprecated: Use Subscription_Layer.Descriptor instead.

func (Subscription_Layer) Number

func (Subscription_Layer) String

func (x Subscription_Layer) String() string

func (Subscription_Layer) Type

type SyncRequest

type SyncRequest struct {

	// Types that are assignable to Request:
	//	*SyncRequest_Status
	//	*SyncRequest_Report
	Request isSyncRequest_Request `protobuf_oneof:"request"`
	// contains filtered or unexported fields
}

func (*SyncRequest) Descriptor deprecated

func (*SyncRequest) Descriptor() ([]byte, []int)

Deprecated: Use SyncRequest.ProtoReflect.Descriptor instead.

func (*SyncRequest) GetReport

func (x *SyncRequest) GetReport() *QualityReport

func (*SyncRequest) GetRequest

func (m *SyncRequest) GetRequest() isSyncRequest_Request

func (*SyncRequest) GetStatus

func (x *SyncRequest) GetStatus() *SFUStatus

func (*SyncRequest) ProtoMessage

func (*SyncRequest) ProtoMessage()

func (*SyncRequest) ProtoReflect

func (x *SyncRequest) ProtoReflect() protoreflect.Message

func (*SyncRequest) Reset

func (x *SyncRequest) Reset()

func (*SyncRequest) String

func (x *SyncRequest) String() string

type SyncRequest_Report

type SyncRequest_Report struct {
	Report *QualityReport `protobuf:"bytes,2,opt,name=report,proto3,oneof"`
}

type SyncRequest_Status

type SyncRequest_Status struct {
	Status *SFUStatus `protobuf:"bytes,1,opt,name=status,proto3,oneof"`
}

type TransmissionReport

type TransmissionReport struct {
	Src    *Node    `protobuf:"bytes,1,opt,name=src,proto3" json:"src,omitempty"`
	Dst    *Node    `protobuf:"bytes,2,opt,name=dst,proto3" json:"dst,omitempty"`
	Report *any.Any `protobuf:"bytes,3,opt,name=report,proto3" json:"report,omitempty"` //TODO: Add a more specific Report type
	// contains filtered or unexported fields
}

func (*TransmissionReport) Descriptor deprecated

func (*TransmissionReport) Descriptor() ([]byte, []int)

Deprecated: Use TransmissionReport.ProtoReflect.Descriptor instead.

func (*TransmissionReport) GetDst

func (x *TransmissionReport) GetDst() *Node

func (*TransmissionReport) GetReport

func (x *TransmissionReport) GetReport() *any.Any

func (*TransmissionReport) GetSrc

func (x *TransmissionReport) GetSrc() *Node

func (*TransmissionReport) ProtoMessage

func (*TransmissionReport) ProtoMessage()

func (*TransmissionReport) ProtoReflect

func (x *TransmissionReport) ProtoReflect() protoreflect.Message

func (*TransmissionReport) Reset

func (x *TransmissionReport) Reset()

func (*TransmissionReport) String

func (x *TransmissionReport) String() string

type UnimplementedISGLBServer

type UnimplementedISGLBServer struct {
}

UnimplementedISGLBServer must be embedded to have forward compatible implementations.

func (UnimplementedISGLBServer) SyncSFU

type UnsafeISGLBServer

type UnsafeISGLBServer interface {
	// contains filtered or unexported methods
}

UnsafeISGLBServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to ISGLBServer will result in compilation errors.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL