def __init__(self): super(ClockServer, self).__init__() self.daemon = True self.socket = zmq_context.socket(zmq.REP) self.socket.bind(bind_for(CLOCK))
def __init__(self): super(ClockClient, self).__init__() self.daemon = True self.socket = zmq_context.socket(zmq.REQ) self.socket.connect(address_for(CLOCK)) self.deltas = collections.deque(maxlen=100)
#!/usr/bin/env python import zmq, sys from util import zmq_context from config import * import hashlib import os.path def sha256(data): return hashlib.sha256(data).hexdigest() socket = zmq_context.socket(zmq.REQ) socket.connect(address_for(COMMANDS)) name = sys.argv[1] with open(name, "rb") as f: data = f.read() new_name = sha256(data)[:10] + os.path.splitext(name)[1] socket.send_multipart(["play", new_name, data]) print socket.recv()
#!/usr/bin/env python import zmq, time from util import time_us, zmq_context from clock import ClockServer from config import * clock_server = ClockServer() clock_server.start() receiver = zmq_context.socket(zmq.REP) receiver.bind(bind_for(COMMANDS)) broadcaster = zmq_context.socket(zmq.PUB) broadcaster.bind(bind_for(BROADCAST)) time.sleep(1) broadcaster.send("new song") name, start_us = "", 0 while True: msg = receiver.recv_multipart() command = msg[0] if command == "play": if len(msg) != 3: receiver.send("bad format") else: name, data = msg[1:] with open(name, "wb") as f: f.write(data) data = None start_us = time_us() + 10**6 * 2
#!/usr/bin/env python import zmq, subprocess, sys, time, os from util import time_us, zmq_context from clock import ClockClient from config import * clock_client = ClockClient() clock_client.start() receiver = zmq_context.socket(zmq.REQ) receiver.connect(address_for(COMMANDS)) broadcaster = zmq_context.socket(zmq.SUB) broadcaster.connect(address_for(BROADCAST)) broadcaster.setsockopt(zmq.SUBSCRIBE, "new song") child = None prefix = "{0}-".format(os.getpid()) while True: receiver.send("get song") msg = receiver.recv_multipart() result = msg[0] if result != "ok": print result continue name, start_us = msg[1:] start_us = int(start_us) if child is not None: