Skip to content

Commit

Permalink
Merge branch 'release/0.8.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
fuzeman committed Jul 8, 2014
2 parents 611b7b1 + f0a5ed5 commit 2c5aa97
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 14 deletions.
2 changes: 1 addition & 1 deletion spotify/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = '0.7.1-beta'
__version__ = '0.8.0'

try:
from spotify.client import Spotify
Expand Down
5 changes: 4 additions & 1 deletion spotify/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ def connect(self):
log.info('Connecting...')
self._resolve_ap()

def disconnect(self):
self.components.connection.disconnect()

# Resolve AP
def _resolve_ap(self):
params = {
Expand Down Expand Up @@ -131,7 +134,7 @@ def on_user_info(self, message):

if catalogue != 'premium':
self.emit('error', 'Please upgrade to premium (catalogue: %s)' % repr(catalogue))
self.components.connection.disconnect()
self.disconnect()
return

self.emit('login')
Expand Down
2 changes: 1 addition & 1 deletion spotify/commands/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def on_error(self, message):
log.warn('Error returned from command handler, disconnecting...')

# Trigger disconnection
self.sp.components.connection.disconnect()
self.sp.disconnect()

# Fire 'error'
self.emit('error', message)
31 changes: 20 additions & 11 deletions spotify/components/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
from spotify.core.request import Request

from pyemitter import Emitter
from threading import Lock, Thread
from threading import Lock, Timer
from ws4py.client.threadedclient import WebSocketClient
import json
import logging
import time

log = logging.getLogger(__name__)

Expand All @@ -22,7 +21,7 @@ def __init__(self, sp):
self.connected = False
self.disconnecting = False

self.heartbeat_thread = None
self.heartbeat_timer = None

self.seq = 0
self.requests = {}
Expand All @@ -33,7 +32,9 @@ def reset(self):
self.connected = False
self.disconnecting = False

self.heartbeat_thread = None
if self.heartbeat_timer:
self.heartbeat_timer.cancel()
self.heartbeat_timer = None

self.seq = 0
self.requests = {}
Expand Down Expand Up @@ -109,9 +110,12 @@ def on_close(self, code, reason=None):

if self.disconnecting:
log.debug('Client requested disconnect, ignoring "close" event')
self.reset()
return

self.disconnect()
self.reset()

self.emit('close', code=code, reason=reason)

def send(self, name, *args):
Expand Down Expand Up @@ -163,13 +167,19 @@ def send_heartbeat(self):
.pipe('error', self)\
.send()

def heartbeat(self):
while self.connected:
time.sleep(self.heartbeat_interval)
def schedule_heartbeat(self):
if not self.connected:
pass

def heartbeat_trigger():
# Send heartbeat ('sp/echo')
self.send_heartbeat()

log.debug('heartbeat thread finished (disconnected)')
# Schedule next heartbeat
self.schedule_heartbeat()

self.heartbeat_timer = Timer(self.heartbeat_interval, heartbeat_trigger)
self.heartbeat_timer.start()

def on_connect(self, message):
log.debug('SpotifyConnection "connect" event: %s', message)
Expand All @@ -182,9 +192,8 @@ def on_connect(self, message):
log.debug('connected')
self.connected = True

# Start heartbeats ('sp/echo')
self.heartbeat_thread = Thread(target=self.heartbeat)
self.heartbeat_thread.start()
# Schedule initial heartbeat
self.schedule_heartbeat()

self.emit('connect')

Expand Down

0 comments on commit 2c5aa97

Please sign in to comment.