//
// Sinks.js
//
// Copyright (c) 2019 2020 Andrea Bondavalli. All rights reserved.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
//
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import RestAPI from './Services';
import Loader from './Loader';
import SinkEdit from './SinkEdit';
import SinkRemove from './SinkRemove';
require('./styles.css');
class SinkEntry extends Component {
static propTypes = {
id: PropTypes.number.isRequired,
name: PropTypes.string.isRequired,
channels: PropTypes.number.isRequired,
onEditClick: PropTypes.func.isRequired,
onTrashClick: PropTypes.func.isRequired
};
constructor(props) {
super(props);
this.state = {
min_time: 'n/a',
flags: 'n/a',
errors: 'n/a'
};
}
handleEditClick = () => {
this.props.onEditClick(this.props.id);
};
handleTrashClick = () => {
this.props.onTrashClick(this.props.id);
};
componentDidMount() {
RestAPI.getSinkStatus(this.props.id)
.then(response => response.json())
.then(function(status) {
let errors = '';
if (status.sink_flags.rtp_seq_id_error)
errors += 'SEQID';
if (status.sink_flags.rtp_ssrc_error)
errors += (errors ? ',' : '') + 'SSRC';
if (status.sink_flags.rtp_payload_type_error)
errors += (errors ? ',' : '') + 'payload type';
if (status.sink_flags.rtp_sac_error)
errors += (errors ? ',' : '') + 'SAC';
let flags = '';
if (status.sink_flags.receiving_rtp_packet)
flags += 'receiving';
if (status.sink_flags._some_muted)
flags += (flags ? ',' : '') + 'some muted';
if (status.sink_flags._all_muted)
flags += (flags ? ',' : '') + 'all muted';
if (status.sink_flags._muted)
flags += (flags ? ',' : '') + 'muted';
this.setState({
min_time: status.sink_min_time + ' ms',
flags: flags ? flags : 'idle',
errors: errors ? errors : 'none'
});
}.bind(this));
}
render() {
return (