pypsyc/mjacob2/pypsyc/server/place.py

35 lines
1.1 KiB
Python

"""
pypsyc.server.place
~~~~~~~~~~~~~~~~~~
:copyright: 2010 by Manuel Jacob
:license: MIT
"""
from pypsyc.protocol import (ContextMaster as ContextProtocol,
ConferencingServer as ConferencingProtocol)
class Place(object):
def __init__(self, entity):
self.entity = entity
entity.add_handler(ContextProtocol(self))
self.conferencing_protocol = ConferencingProtocol(self)
entity.add_handler(self.conferencing_protocol)
self.members = set()
def enter_request(self, uni):
nick = uni.rsplit('/', 1)[1].lstrip('~')
self.conferencing_protocol.cast_member_entered(uni, nick)
self.members.add(uni)
return self.entity.context_master.add_member(uni)
def leave_context(self, uni):
self.entity.context_master.remove_member(uni)
self.conferencing_protocol.cast_member_left(uni)
self.members.remove(uni)
def public_message(self, source, message):
member = source.rsplit('/', 1)[0]
if member in self.members:
self.conferencing_protocol.cast_public_message(member, message)