37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
import asyncore
|
|
import logging
|
|
import socket
|
|
import sys
|
|
|
|
from mopidy import settings
|
|
from mopidy.session import MpdSession
|
|
|
|
logger = logging.getLogger(u'server')
|
|
|
|
class MpdServer(asyncore.dispatcher):
|
|
def __init__(self, session_class=MpdSession, backend=None):
|
|
asyncore.dispatcher.__init__(self)
|
|
self.session_class = session_class
|
|
self.backend = backend
|
|
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
self.set_reuse_addr()
|
|
self.bind((settings.MPD_SERVER_HOSTNAME, settings.MPD_SERVER_PORT))
|
|
self.listen(1)
|
|
logger.info(u'Please connect to %s port %s using a MPD client.',
|
|
settings.MPD_SERVER_HOSTNAME, settings.MPD_SERVER_PORT)
|
|
|
|
def handle_accept(self):
|
|
(client_socket, client_address) = self.accept()
|
|
logger.info(u'Connection from: [%s]:%s', *client_address)
|
|
self.session_class(self, client_socket, client_address,
|
|
backend=self.backend)
|
|
|
|
def handle_close(self):
|
|
self.close()
|
|
|
|
def do_kill(self):
|
|
logger.info(u'Received "kill". Shutting down.')
|
|
self.handle_close()
|
|
sys.exit(0)
|
|
|