sugar-toolkit-gtk3/sugar/p2p/StreamWriter.py

44 lines
1.1 KiB
Python
Raw Normal View History

import xmlrpclib
import traceback
import socket
import network
class StreamWriter:
def __init__(self, group, service):
self._group = group
self._service = service
self._address = self._service.get_address()
self._port = self._service.get_port()
if self._service.is_multicast():
self._setup_multicast()
else:
self._setup_unicast()
def write(self, data):
if self._service.is_multicast():
self._multicast_write(data)
else:
self._unicast_write(data)
def _setup_unicast(self):
xmlrpc_addr = "http://%s:%d" % (self._address, self._port)
self._uclient = xmlrpclib.ServerProxy(xmlrpc_addr)
def _unicast_write(self, data):
try:
nick_name = self._group.get_owner().get_nick_name()
self._uclient.message(nick_name, data)
return True
except (socket.error, xmlrpclib.Fault, xmlrpclib.ProtocolError), e:
traceback.print_exc()
return False
def _setup_multicast(self):
self._mclient = network.GroupClient(self._address, self._port)
def _multicast_write(self, data):
nick_name = self._group.get_owner().get_nick_name()
self._mclient.send_msg(nick_name + " |**| " + data)