mirror of git://git.psyced.org/git/pypsyc
35 lines
1.1 KiB
Python
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)
|