| 55 |
55 |
self.session_details = None # either None or a big dict
|
| 56 |
56 |
self.rtcp_stats = None # either None or a big dict
|
| 57 |
57 |
self.error_messages = None # either None or a big dict
|
|
58 |
self.warnings = None # either None or a big dict
|
| 58 |
59 |
|
| 59 |
60 |
def get_max_channels_in_raw(self):
|
| 60 |
61 |
"""
|
| ... | ... | |
| 264 |
265 |
"send": [], # list of strings
|
| 265 |
266 |
"receive": [], # list of strings
|
| 266 |
267 |
}
|
|
268 |
self.warnings = {
|
|
269 |
"send": [], # list of strings
|
|
270 |
"receive": [], # list of strings
|
|
271 |
}
|
| 267 |
272 |
|
| 268 |
273 |
def start(self, host):
|
| 269 |
274 |
"""
|
| ... | ... | |
| 528 |
533 |
"""
|
| 529 |
534 |
Handles a new line from our receiver process' stdout
|
| 530 |
535 |
"""
|
|
536 |
|
|
537 |
if "WARNING" in line:
|
|
538 |
log.warning(line)
|
|
539 |
self.warnings["receive"].append(line)
|
| 531 |
540 |
try:
|
| 532 |
541 |
if "stream connected" in line:
|
| 533 |
542 |
if "audio" in line:
|
| ... | ... | |
| 540 |
549 |
elif "audio" in line:
|
| 541 |
550 |
self.rtcp_stats["receive"]["audio"]["bitrate"] = int(line.split(":")[-1])
|
| 542 |
551 |
else:
|
| 543 |
|
log.debug("%9s stdout: %s" % (process_manager.identifier, line))
|
|
552 |
log.debug("%s stdout: %s" % (process_manager.identifier, line))
|
| 544 |
553 |
except ValueError, e:
|
| 545 |
554 |
log.error("%s when parsing line '%s' from receiver" % (e, line))
|
| 546 |
555 |
|
| ... | ... | |
| 551 |
560 |
log.error("%9s stderr: %s" % (process_manager.identifier, line))
|
| 552 |
561 |
if "CRITICAL" in line or "ERROR" in line:
|
| 553 |
562 |
self.error_messages["receive"].append(line)
|
|
563 |
if "WARNING" in line:
|
|
564 |
log.warning(line)
|
|
565 |
self.warnings["receive"].append(line)
|
| 554 |
566 |
|
| 555 |
567 |
def on_sender_stdout_line(self, process_manager, line):
|
| 556 |
568 |
"""
|
| 557 |
569 |
Handles a new line from our receiver process' stdout
|
| 558 |
570 |
"""
|
| 559 |
|
log.debug("%9s stdout: %s" % (process_manager.identifier, line))
|
|
571 |
log.debug("%s stdout: %s" % (process_manager.identifier, line))
|
|
572 |
if "WARNING" in line:
|
|
573 |
log.warning(line)
|
|
574 |
self.warnings["receive"].append(line)
|
| 560 |
575 |
try:
|
| 561 |
576 |
if "PACKETS-LOST" in line:
|
| 562 |
577 |
if "video" in line:
|
| ... | ... | |
| 600 |
615 |
log.error("%9s stderr: %s" % (process_manager.identifier, line))
|
| 601 |
616 |
if "CRITICAL" in line or "ERROR" in line:
|
| 602 |
617 |
self.error_messages["send"].append(line)
|
|
618 |
if "WARNING" in line:
|
|
619 |
log.warning(line)
|
|
620 |
self.warnings["receive"].append(line)
|
| 603 |
621 |
|
| 604 |
622 |
def is_busy(self):
|
| 605 |
623 |
"""
|
| ... | ... | |
| 659 |
677 |
#TODO: internationalize
|
| 660 |
678 |
log.info("All streamers are stopped.")
|
| 661 |
679 |
if len(self.error_messages["send"]) != 0:
|
|
680 |
show_error_dialog = True
|
| 662 |
681 |
log.error("Error messages from the sender for this session: %s" % (self.error_messages["send"]))
|
| 663 |
682 |
details += _("Errors from local sender:") + "\n"
|
| 664 |
683 |
for line in self.error_messages["send"]:
|
| 665 |
684 |
details += " * " + line + "\n"
|
| 666 |
|
show_error_dialog = True
|
|
685 |
if len(self.warnings["send"]) != 0:
|
|
686 |
details += _("Warnings from local sender:") + "\n"
|
|
687 |
for line in self.warnings["send"]:
|
|
688 |
details += " * " + line + "\n"
|
| 667 |
689 |
if len(self.error_messages["receive"]) != 0:
|
|
690 |
show_error_dialog = True
|
| 668 |
691 |
log.error("Error messages from the receiver for this session: %s" % (self.error_messages["receive"]))
|
| 669 |
692 |
details += _("Errors from local receiver:") + "\n"
|
| 670 |
693 |
for line in self.error_messages["receive"]:
|
| 671 |
694 |
details += " * " + line + "\n"
|
| 672 |
|
show_error_dialog = True
|
|
695 |
if len(self.warnings["receive"]) != 0:
|
|
696 |
details += _("Warnings from local receiver:") + "\n"
|
|
697 |
for line in self.warnings["send"]:
|
|
698 |
details += " * " + line + "\n"
|
| 673 |
699 |
if show_error_dialog:
|
| 674 |
700 |
msg = _("Some errors occured during the audio/video streaming session.")
|
| 675 |
701 |
self.app.gui.show_error_dialog(msg, details=details)
|
| ... | ... | |
| 682 |
708 |
self.extra_receiver = None
|
| 683 |
709 |
self.midi_receiver = None
|
| 684 |
710 |
self.midi_sender = None
|
| 685 |
|
log.debug("Process managers should all be None: %s" % (self.get_all_streamer_process_managers()))
|
|
711 |
log.debug("Done stopping steaming")
|
| 686 |
712 |
|
| 687 |
713 |
def _set_state(self, new_state):
|
| 688 |
714 |
"""
|
| ... | ... | |
| 709 |
735 |
if proc is not None:
|
| 710 |
736 |
if proc.state != process.STATE_STOPPED and proc.state != process.STATE_STOPPING:
|
| 711 |
737 |
proc.stop()
|
|
738 |
|