(dcLabel string, dci *webrtc.DataChannelInit)
| 1381 | } |
| 1382 | |
| 1383 | func (t *PCTransport) CreateDataChannelIfEmpty(dcLabel string, dci *webrtc.DataChannelInit) (label string, id uint16, existing bool, err error) { |
| 1384 | if dcLabel == DataTrackDataChannel && !t.params.EnableDataTracks { |
| 1385 | t.params.Logger.Debugw("data tracks not enabled") |
| 1386 | err = errors.New("data tracks not enabled") |
| 1387 | return |
| 1388 | } |
| 1389 | |
| 1390 | t.lock.RLock() |
| 1391 | var dcw *datachannel.DataChannelWriter[*webrtc.DataChannel] |
| 1392 | switch dcLabel { |
| 1393 | case ReliableDataChannel: |
| 1394 | dcw = t.reliableDC |
| 1395 | case LossyDataChannel: |
| 1396 | dcw = t.lossyDC |
| 1397 | case DataTrackDataChannel: |
| 1398 | dcw = t.dataTrackDC |
| 1399 | default: |
| 1400 | t.params.Logger.Warnw("unknown data channel label", nil, "label", label) |
| 1401 | err = errors.New("unknown data channel label") |
| 1402 | } |
| 1403 | t.lock.RUnlock() |
| 1404 | if err != nil { |
| 1405 | return |
| 1406 | } |
| 1407 | |
| 1408 | if dcw != nil { |
| 1409 | dc := dcw.BufferedAmountGetter() |
| 1410 | return dc.Label(), *dc.ID(), true, nil |
| 1411 | } |
| 1412 | |
| 1413 | dc, err := t.pc.CreateDataChannel(dcLabel, dci) |
| 1414 | if err != nil { |
| 1415 | return |
| 1416 | } |
| 1417 | |
| 1418 | t.onDataChannel(dc) |
| 1419 | return dc.Label(), *dc.ID(), false, nil |
| 1420 | } |
| 1421 | |
| 1422 | func (t *PCTransport) GetRTT() (float64, bool) { |
| 1423 | scps, ok := t.iceTransport.GetSelectedCandidatePairStats() |
no test coverage detected