class poller:
    def __init__(self, model):
        self.log = logging.getLogger("poller")
        self.model = model
        self.Pollfrequancy = Observable(1)
        self.PollNext = Observable(datetime.datetime.now())

    def isDue(self):
        lastPolled = self.PollNext.get()
        now = datetime.datetime.now()
        if now > lastPolled:
            return True
        return False

    def handleResponce(self, responce, ding, dong, foo):
        self.log.error('Programing error this methd shoudl be overridern')

    def wrapOutput(self, listcommands):
        now = datetime.datetime.now()
        pollfrequancy = self.Pollfrequancy.get()
        next = now + datetime.timedelta(seconds=pollfrequancy)
        self.PollNext.update(next)
        output = []
        for command in listcommands:
            seconds, message = command
            msg = json.dumps(message, sort_keys=True, indent=4)
            #print 'seconds, msg' ,seconds, msg
            next = now + datetime.timedelta(seconds=seconds)
            diction = {
                'dueDate' : next,
                'msg' : msg
            }
            output.append(diction)
        return output
class poller:
    def __init__(self, model):
        self.log = logging.getLogger("poller")
        self.model = model
        self.Pollfrequancy = Observable(1)
        self.PollNext = Observable(datetime.datetime.now())

    def isDue(self):
        lastPolled = self.PollNext.get()
        now = datetime.datetime.now()
        if now > lastPolled:
            return True
        return False

    def handleResponce(self, responce, ding, dong, foo):
        self.log.error('Programing error this methd shoudl be overridern')

    def wrapOutput(self, listcommands):
        now = datetime.datetime.now()
        pollfrequancy = self.Pollfrequancy.get()
        next = now + datetime.timedelta(seconds=pollfrequancy)
        self.PollNext.update(next)

        output = []
        for command in listcommands:
            seconds, message = command
            msg = json.dumps(message, sort_keys=True, indent=4)
            #print 'seconds, msg' ,seconds, msg
            next = now + datetime.timedelta(seconds=seconds)
            diction = {'dueDate': next, 'msg': msg}
            output.append(diction)

        return output
class squeezeConMdle:
    def __init__(self):
        self.host = Observable("localhost")
        self.port = Observable(9000)
        # connectionStr : a simple to observe break of connection settings obj
        self.connectionStr = Observable("localhost:9000")
        self.connected = Observable(False)
        # Number of players on the server that can be used
        self.playersCount = Observable(0)
        # Socket Computer diagnostic error. Will be 0 when no error
        self.SocketErrNo = Observable(0)
        # Socket Human diagnostic error. Will be "" with no error,
        self.SocketErrMsg = Observable("")
        self.playerList = []
        self.Players = ObservableDict()
        self.CbPlayersAvailable= []
        self.CbChurrentTrack = []
        self.host.addCallback(self.OnHostChange)
        self.port.addCallback(self.OnPortChange)
        self.connectionStr.addCallback(self.OnConnectedChange)
        self.connected.addCallback(self.OnConnectedChange)
        self.playersCount.addCallback(self.OnPlayersCountChange)
        self.SongCache = ObservableDict()

    def OnHostChange(self, value):
        newHost = self.host.get()
        newPort = self.port.get()
        newConnectionStr = "%s:%s" % (self.host.get(), self.port.get())
        self.connectionStr.update(newConnectionStr)

    def OnPortChange(self, value):
        newHost = self.host.get()
        newPort = self.port.get()
        newConnectionStr = "%s:%s" % (self.host.get(), self.port.get())
        self.connectionStr.update(newConnectionStr)

    def OnConnectedChange(self, value):
        if not self.connected.get():
            if 0 != self.playersCount.get():
                self.playersCount.set(0)

    def OnPlayersCountChange(self, value):
        self.playerList = []
        for index in range(value):
            self.playerList.append(squeezePlayerMdl(index))
            self.playerList[index].discovered.addCallback(self.OnPlayersAvailableChange)
            self.playerList[index].CurrentTrackId.addCallback(self.OnCurrentTrack)
        self.OnPlayersAvailableChange(value)

    def OnPlayersAvailableChange(self, value):
        #print "OnPlayersAvailableChange"
        AvailablePlayersList = []
        for index in range(len(self.playerList)):
            if True != self.playerList[index].discovered.get():
                continue
            PlayerName = self.playerList[index].name.get()
            AvailablePlayersList.append(PlayerName)
            if PlayerName in self.Players:
                continue
            self.Players[PlayerName] = self.playerList[index]
        AvailablePlayersSet = set(AvailablePlayersList)
        for item in AvailablePlayersSet.symmetric_difference(self.Players):
            del self.Players[item]

        for func, args, kargs in self.CbPlayersAvailable:
            func(*args, **kargs)

    def CbPlayersAvailableAdd(self, func, *args, **kargs):
        self.CbPlayersAvailable.append((func, args, kargs))

    def CbChurrentTrackAdd(self, func, *args, **kargs):
        self.CbChurrentTrack.append((func, args, kargs))

    def OnCurrentTrack(self, value):
        #print "OnCurrentTrack (%s)" % value
        for func, args, kargs in self.CbChurrentTrack:
            func(*args, **kargs)

    def playerListClear(self):
        self.playerList = []
        if 0 != self.playersCount.get():
            self.playersCount.set(0)
Exemple #4
0
class squeezeConMdle:
    def __init__(self):

        self.host = Observable("localhost")
        self.port = Observable(9000)
        # connectionStr : a simple to observe break of connection settings obj
        self.connectionStr = Observable("localhost:9000")
        self.connected = Observable(False)
        # Number of players on the server that can be used
        self.playersCount = Observable(0)
        # Socket Computer diagnostic error. Will be 0 when no error
        self.SocketErrNo = Observable(0)
        # Socket Human diagnostic error. Will be "" with no error,
        self.SocketErrMsg = Observable("")

        self.playerList = []
        self.Players = ObservableDict()
        self.CbPlayersAvailable = []
        self.CbChurrentTrack = []
        self.host.addCallback(self.OnHostChange)
        self.port.addCallback(self.OnPortChange)

        self.connectionStr.addCallback(self.OnConnectedChange)
        self.connected.addCallback(self.OnConnectedChange)
        self.playersCount.addCallback(self.OnPlayersCountChange)

        self.SongCache = ObservableDict()

    def OnHostChange(self, value):
        newHost = self.host.get()
        newPort = self.port.get()
        newConnectionStr = "%s:%s" % (self.host.get(), self.port.get())
        self.connectionStr.update(newConnectionStr)

    def OnPortChange(self, value):
        newHost = self.host.get()
        newPort = self.port.get()
        newConnectionStr = "%s:%s" % (self.host.get(), self.port.get())
        self.connectionStr.update(newConnectionStr)

    def OnConnectedChange(self, value):
        if not self.connected.get():
            if 0 != self.playersCount.get():
                self.playersCount.set(0)

    def OnPlayersCountChange(self, value):
        self.playerList = []
        for index in range(value):
            self.playerList.append(squeezePlayerMdl(index))
            self.playerList[index].discovered.addCallback(
                self.OnPlayersAvailableChange)
            self.playerList[index].CurrentTrackId.addCallback(
                self.OnCurrentTrack)
        self.OnPlayersAvailableChange(value)

    def OnPlayersAvailableChange(self, value):
        #print "OnPlayersAvailableChange"
        AvailablePlayersList = []
        for index in range(len(self.playerList)):
            if True != self.playerList[index].discovered.get():
                continue
            PlayerName = self.playerList[index].name.get()
            AvailablePlayersList.append(PlayerName)
            if PlayerName in self.Players:
                continue
            self.Players[PlayerName] = self.playerList[index]
        AvailablePlayersSet = set(AvailablePlayersList)
        for item in AvailablePlayersSet.symmetric_difference(self.Players):
            del self.Players[item]

        for func, args, kargs in self.CbPlayersAvailable:
            func(*args, **kargs)

    def CbPlayersAvailableAdd(self, func, *args, **kargs):
        self.CbPlayersAvailable.append((func, args, kargs))

    def CbChurrentTrackAdd(self, func, *args, **kargs):
        self.CbChurrentTrack.append((func, args, kargs))

    def OnCurrentTrack(self, value):
        #print "OnCurrentTrack (%s)" % value
        for func, args, kargs in self.CbChurrentTrack:
            func(*args, **kargs)

    def playerListClear(self):
        self.playerList = []
        if 0 != self.playersCount.get():
            self.playersCount.set(0)