Zippytal-Node/webrtcFsMiddleware.go

168 lines
5.0 KiB
Go

package localserver
// import (
// context "context"
// "encoding/json"
// "strconv"
// "github.com/pion/webrtc/v3"
// )
// const (
// INCOMING_PEER_FS ReqType = "incoming_peer_fs"
// LEAVING_PEER_FS ReqType = "leaving_peer_fs"
// WEBRTC_OFFER_FS ReqType = "offer_fs"
// WEBRTC_ANSWER_FS ReqType = "answer_fs"
// WEBRTC_RENNEGOTIATION_OFFER_FS ReqType = "rennegotiation_offer_fs"
// WEBRTC_RENNEGOTIATION_ANSWER_FS ReqType = "rennegotiation_answer_fs"
// WEBRTC_COUNTER_OFFER_FS ReqType = "webrtc_counter_offer_fs"
// WEBRTC_CANDIDATE_FS ReqType = "webrtc_candidate_fs"
// )
// type WebRTCFsMiddleware struct {
// Manager *WebrtcFsManager
// stream SignalingService_LinkClient
// }
// func NewWebRTCFsMiddleware(manager *WebrtcFsManager) (webrtcFsMiddleware *WebRTCFsMiddleware) {
// webrtcFsMiddleware = &WebRTCFsMiddleware{
// Manager: manager,
// }
// return
// }
// func (wfm *WebRTCFsMiddleware) signalCandidate(to string, candidate *webrtc.ICECandidate) (err error) {
// bs, err := json.Marshal(map[string]string{
// "from": "lolo_local_serv",
// "to": to,
// "candidate": candidate.ToJSON().Candidate,
// "sdpMid": *candidate.ToJSON().SDPMid,
// "sdpMLineIndex": strconv.Itoa(int(*candidate.ToJSON().SDPMLineIndex)),
// })
// if err != nil {
// return
// }
// err = wfm.stream.Send(&SignalingMessage{
// Type: string(WEBRTC_CANDIDATE_FS),
// From: "lolo_local_serv",
// Payload: bs,
// })
// return
// }
// func (wfm *WebRTCFsMiddleware) Process(ctx context.Context, req *SignalingMessage, stream SignalingService_LinkClient) (err error) {
// done, errCh := make(chan struct{}), make(chan error)
// go func() {
// var payload map[string]string
// if e := json.Unmarshal(req.Payload, &payload); err != nil {
// errCh <- e
// return
// }
// switch req.Type {
// case string(INCOMING_PEER_FS):
// // logger.Println("quit squad called")
// if from, ok := payload[FROM]; ok {
// // logger.Println(from)
// //wfm.Manager.HandleLeavingMember(from)
// done <- struct{}{}
// }
// case string(PEER_CONNECTION_REQUEST):
// if err := validateRequest(payload, FROM, TO); err != nil {
// errCh <- err
// return
// }
// // if err := wfm.Manager.CreateOffer(ctx, payload[FROM], payload[TO], wfm.signalCandidate); err != nil {
// // errCh <- err
// // return
// // }
// done <- struct{}{}
// case string(WEBRTC_OFFER_FS):
// if err := validateRequest(payload, FROM, TO, SDP); err != nil {
// errCh <- err
// return
// }
// if err := wfm.Manager.HandleOffer(ctx, payload, wfm.signalCandidate); err != nil {
// errCh <- err
// return
// }
// done <- struct{}{}
// case string(WEBRTC_ANSWER_FS):
// if err := validateRequest(payload, FROM, TO, SDP); err != nil {
// errCh <- err
// return
// }
// if err := wfm.Manager.HandleAnswer(ctx, payload); err != nil {
// errCh <- err
// return
// }
// done <- struct{}{}
// case string(WEBRTC_COUNTER_OFFER_FS):
// if err := validateRequest(payload, FROM); err != nil {
// errCh <- err
// return
// }
// if err := wfm.Manager.HandleCounterOffer(ctx, payload); err != nil {
// errCh <- err
// return
// }
// done <- struct{}{}
// case string(WEBRTC_RENNEGOTIATION_ANSWER_FS):
// if err := validateRequest(payload, FROM, SDP); err != nil {
// errCh <- err
// return
// }
// if err := wfm.Manager.HandleRennegotiationAnswer(payload[FROM], "lolo_local_serv", payload[SDP]); err != nil {
// errCh <- err
// return
// }
// done <- struct{}{}
// case string(WEBRTC_RENNEGOTIATION_OFFER_FS):
// if err := validateRequest(payload, FROM, SDP); err != nil {
// errCh <- err
// return
// }
// if err := wfm.Manager.HandleRennegotiationOffer(payload[FROM], "", payload[SDP]); err != nil {
// errCh <- err
// return
// }
// done <- struct{}{}
// case string(WEBRTC_CANDIDATE_FS):
// if err := validateRequest(payload, FROM, "candidate", "sdpMLineIndex", "sdpMid"); err != nil {
// errCh <- err
// return
// }
// // logger.Println(payload)
// i, err := strconv.Atoi(payload["sdpMLineIndex"])
// if err != nil {
// errCh <- err
// return
// }
// SDPMLineIndex := uint16(i)
// sdpMid := payload["sdpMid"]
// // logger.Println(sdpMid, SDPMLineIndex)
// if err := wfm.Manager.AddCandidate(&webrtc.ICECandidateInit{
// Candidate: payload["candidate"],
// SDPMid: &sdpMid,
// SDPMLineIndex: &SDPMLineIndex,
// }, payload[FROM]); err != nil {
// errCh <- err
// return
// }
// done <- struct{}{}
// default:
// // logger.Println("fs is correctly linked")
// done <- struct{}{}
// }
// done <- struct{}{}
// }()
// select {
// case <-ctx.Done():
// err = ctx.Err()
// return
// case <-done:
// return
// case err = <-errCh:
// return
// }
// }