1
Fork 0

Rename client to webClient.

This commit is contained in:
Juliusz Chroboczek 2020-05-27 11:44:49 +02:00
parent 50982fddc6
commit d8b984979b
3 changed files with 55 additions and 55 deletions

View File

@ -281,7 +281,7 @@ type downConnection interface {
type rtpDownConnection struct {
id string
client *client
client *webClient
pc *webrtc.PeerConnection
remote *upConnection
tracks []*rtpDownTrack

View File

@ -21,22 +21,6 @@ import (
"github.com/pion/webrtc/v2"
)
type client struct {
group *group
id string
username string
permissions userPermission
requested map[string]uint32
done chan struct{}
writeCh chan interface{}
writerDone chan struct{}
actionCh chan interface{}
mu sync.Mutex
down map[string]*rtpDownConnection
up map[string]*upConnection
}
type chatHistoryEntry struct {
id string
user string
@ -57,7 +41,7 @@ type group struct {
locked uint32
mu sync.Mutex
clients map[string]*client
clients map[string]*webClient
history []chatHistoryEntry
}
@ -80,7 +64,7 @@ type getUpAction struct {
}
type pushConnsAction struct {
c *client
c *webClient
}
type connectionFailedAction struct {
@ -138,7 +122,7 @@ func addGroup(name string, desc *groupDescription) (*group, error) {
g = &group{
name: name,
description: desc,
clients: make(map[string]*client),
clients: make(map[string]*webClient),
}
groups.groups[name] = g
} else if desc != nil {
@ -211,7 +195,7 @@ type userid struct {
username string
}
func addClient(name string, client *client, user, pass string) (*group, []userid, error) {
func addClient(name string, client *webClient, user, pass string) (*group, []userid, error) {
g, err := addGroup(name, nil)
if err != nil {
return nil, nil, err
@ -247,7 +231,7 @@ func addClient(name string, client *client, user, pass string) (*group, []userid
return g, users, nil
}
func delClient(c *client) {
func delClient(c *webClient) {
c.group.mu.Lock()
defer c.group.mu.Unlock()
g := c.group
@ -259,10 +243,10 @@ func delClient(c *client) {
delete(g.clients, c.id)
}
func (g *group) getClients(except *client) []*client {
func (g *group) getClients(except *webClient) []*webClient {
g.mu.Lock()
defer g.mu.Unlock()
clients := make([]*client, 0, len(g.clients))
clients := make([]*webClient, 0, len(g.clients))
for _, c := range g.clients {
if c != except {
clients = append(clients, c)
@ -271,7 +255,7 @@ func (g *group) getClients(except *client) []*client {
return clients
}
func (g *group) getClientUnlocked(id string) *client {
func (g *group) getClientUnlocked(id string) *webClient {
for _, c := range g.clients {
if c.id == id {
return c
@ -280,7 +264,7 @@ func (g *group) getClientUnlocked(id string) *client {
return nil
}
func (g *group) Range(f func(c *client) bool) {
func (g *group) Range(f func(c *webClient) bool) {
g.mu.Lock()
defer g.mu.Unlock()
for _, c := range g.clients {
@ -327,7 +311,7 @@ func (err writerDeadError) Error() string {
return "client writer died"
}
func (c *client) write(m clientMessage) error {
func (c *webClient) write(m clientMessage) error {
select {
case c.writeCh <- m:
return nil
@ -336,7 +320,7 @@ func (c *client) write(m clientMessage) error {
}
}
func (c *client) error(err error) error {
func (c *webClient) error(err error) error {
switch e := err.(type) {
case userError:
return c.write(clientMessage{
@ -354,7 +338,7 @@ func (err clientDeadError) Error() string {
return "client dead"
}
func (c *client) action(m interface{}) error {
func (c *webClient) action(m interface{}) error {
select {
case c.actionCh <- m:
return nil
@ -611,7 +595,7 @@ func getGroupStats() []groupStats {
return gs
}
func getClientStats(c *client) clientStats {
func getClientStats(c *webClient) clientStats {
c.mu.Lock()
defer c.mu.Unlock()

View File

@ -91,6 +91,22 @@ func isWSNormalError(err error) bool {
websocket.CloseGoingAway)
}
type webClient struct {
group *group
id string
username string
permissions userPermission
requested map[string]uint32
done chan struct{}
writeCh chan interface{}
writerDone chan struct{}
actionCh chan interface{}
mu sync.Mutex
down map[string]*rtpDownConnection
up map[string]*upConnection
}
type rateMap map[string]uint32
func (v *rateMap) UnmarshalJSON(b []byte) error {
@ -183,7 +199,7 @@ func startClient(conn *websocket.Conn) (err error) {
return
}
c := &client{
c := &webClient{
id: m.Id,
username: m.Username,
actionCh: make(chan interface{}, 10),
@ -262,7 +278,7 @@ func startClient(conn *websocket.Conn) (err error) {
return clientLoop(c, conn)
}
func getUpConn(c *client, id string) *upConnection {
func getUpConn(c *webClient, id string) *upConnection {
c.mu.Lock()
defer c.mu.Unlock()
@ -276,7 +292,7 @@ func getUpConn(c *client, id string) *upConnection {
return conn
}
func getUpConns(c *client) []string {
func getUpConns(c *webClient) []string {
c.mu.Lock()
defer c.mu.Unlock()
up := make([]string, 0, len(c.up))
@ -286,7 +302,7 @@ func getUpConns(c *client) []string {
return up
}
func addUpConn(c *client, id string) (*upConnection, error) {
func addUpConn(c *webClient, id string) (*upConnection, error) {
pc, err := groups.api.NewPeerConnection(iceConfiguration())
if err != nil {
return nil, err
@ -563,7 +579,7 @@ func rtcpUpListener(conn *upConnection, track *upTrack, r *webrtc.RTPReceiver) {
}
}
func sendRR(c *client, conn *upConnection) error {
func sendRR(c *webClient, conn *upConnection) error {
c.mu.Lock()
if len(conn.tracks) == 0 {
c.mu.Unlock()
@ -604,7 +620,7 @@ func sendRR(c *client, conn *upConnection) error {
})
}
func rtcpUpSender(c *client, conn *upConnection) {
func rtcpUpSender(c *webClient, conn *upConnection) {
for {
time.Sleep(time.Second)
err := sendRR(c, conn)
@ -617,7 +633,7 @@ func rtcpUpSender(c *client, conn *upConnection) {
}
}
func delUpConn(c *client, id string) bool {
func delUpConn(c *webClient, id string) bool {
c.mu.Lock()
defer c.mu.Unlock()
@ -653,7 +669,7 @@ func delUpConn(c *client, id string) bool {
return true
}
func getDownConn(c *client, id string) *rtpDownConnection {
func getDownConn(c *webClient, id string) *rtpDownConnection {
if c.down == nil {
return nil
}
@ -667,7 +683,7 @@ func getDownConn(c *client, id string) *rtpDownConnection {
return conn
}
func getConn(c *client, id string) iceConnection {
func getConn(c *webClient, id string) iceConnection {
up := getUpConn(c, id)
if up != nil {
return up
@ -679,7 +695,7 @@ func getConn(c *client, id string) iceConnection {
return nil
}
func addDownConn(c *client, id string, remote *upConnection) (*rtpDownConnection, error) {
func addDownConn(c *webClient, id string, remote *upConnection) (*rtpDownConnection, error) {
pc, err := groups.api.NewPeerConnection(iceConfiguration())
if err != nil {
return nil, err
@ -716,7 +732,7 @@ func addDownConn(c *client, id string, remote *upConnection) (*rtpDownConnection
return conn, nil
}
func delDownConn(c *client, id string) bool {
func delDownConn(c *webClient, id string) bool {
c.mu.Lock()
defer c.mu.Unlock()
@ -740,7 +756,7 @@ func delDownConn(c *client, id string) bool {
return true
}
func addDownTrack(c *client, conn *rtpDownConnection, remoteTrack *upTrack, remoteConn *upConnection) (*webrtc.RTPSender, error) {
func addDownTrack(c *webClient, conn *rtpDownConnection, remoteTrack *upTrack, remoteConn *upConnection) (*webrtc.RTPSender, error) {
local, err := conn.pc.NewTrack(
remoteTrack.track.PayloadType(),
remoteTrack.track.SSRC(),
@ -1058,7 +1074,7 @@ func sendRecovery(p *rtcp.TransportLayerNack, track *rtpDownTrack) {
}
}
func negotiate(c *client, down *rtpDownConnection) error {
func negotiate(c *webClient, down *rtpDownConnection) error {
offer, err := down.pc.CreateOffer(nil)
if err != nil {
return err
@ -1094,7 +1110,7 @@ func negotiate(c *client, down *rtpDownConnection) error {
})
}
func sendICE(c *client, id string, candidate *webrtc.ICECandidate) error {
func sendICE(c *webClient, id string, candidate *webrtc.ICECandidate) error {
if candidate == nil {
return nil
}
@ -1106,7 +1122,7 @@ func sendICE(c *client, id string, candidate *webrtc.ICECandidate) error {
})
}
func gotOffer(c *client, id string, offer webrtc.SessionDescription, labels map[string]string) error {
func gotOffer(c *webClient, id string, offer webrtc.SessionDescription, labels map[string]string) error {
var err error
up, ok := c.up[id]
if !ok {
@ -1147,7 +1163,7 @@ func gotOffer(c *client, id string, offer webrtc.SessionDescription, labels map[
})
}
func gotAnswer(c *client, id string, answer webrtc.SessionDescription) error {
func gotAnswer(c *webClient, id string, answer webrtc.SessionDescription) error {
down := getDownConn(c, id)
if down == nil {
return protocolError("unknown id in answer")
@ -1168,7 +1184,7 @@ func gotAnswer(c *client, id string, answer webrtc.SessionDescription) error {
return nil
}
func gotICE(c *client, candidate *webrtc.ICECandidateInit, id string) error {
func gotICE(c *webClient, candidate *webrtc.ICECandidateInit, id string) error {
conn := getConn(c, id)
if conn == nil {
return errors.New("unknown id in ICE")
@ -1176,7 +1192,7 @@ func gotICE(c *client, candidate *webrtc.ICECandidateInit, id string) error {
return conn.addICECandidate(candidate)
}
func (c *client) setRequested(requested map[string]uint32) error {
func (c *webClient) setRequested(requested map[string]uint32) error {
if c.down != nil {
for id := range c.down {
c.write(clientMessage{
@ -1199,11 +1215,11 @@ func (c *client) setRequested(requested map[string]uint32) error {
return nil
}
func (c *client) isRequested(label string) bool {
func (c *webClient) isRequested(label string) bool {
return c.requested[label] != 0
}
func addDownConnTracks(c *client, remote *upConnection, tracks []*upTrack) (*rtpDownConnection, error) {
func addDownConnTracks(c *webClient, remote *upConnection, tracks []*upTrack) (*rtpDownConnection, error) {
requested := false
for _, t := range tracks {
if c.isRequested(t.label) {
@ -1234,14 +1250,14 @@ func addDownConnTracks(c *client, remote *upConnection, tracks []*upTrack) (*rtp
return down, nil
}
func pushConn(c *client, conn *upConnection, tracks []*upTrack, label string) {
func pushConn(c *webClient, conn *upConnection, tracks []*upTrack, label string) {
c.action(addConnAction{conn, tracks})
if label != "" {
c.action(addLabelAction{conn.id, conn.label})
}
}
func clientLoop(c *client, conn *websocket.Conn) error {
func clientLoop(c *webClient, conn *websocket.Conn) error {
read := make(chan interface{}, 1)
go clientReader(conn, read, c.done)
@ -1393,7 +1409,7 @@ func clientLoop(c *client, conn *websocket.Conn) error {
}
}
func failConnection(c *client, id string, message string) error {
func failConnection(c *webClient, id string, message string) error {
if id != "" {
err := c.write(clientMessage{
Type: "abort",
@ -1412,7 +1428,7 @@ func failConnection(c *client, id string, message string) error {
return nil
}
func handleClientMessage(c *client, m clientMessage) error {
func handleClientMessage(c *webClient, m clientMessage) error {
switch m.Type {
case "request":
err := c.setRequested(m.Request)
@ -1507,7 +1523,7 @@ func handleClientMessage(c *client, m clientMessage) error {
return nil
}
func sendRateUpdate(c *client) {
func sendRateUpdate(c *webClient) {
type remb struct {
pc *webrtc.PeerConnection
ssrc uint32