Show
Ignore:
Timestamp:
2009-10-01 23:44:16 (5 months ago)
Author:
fuktommy
Message:

例外のときイベントを作る。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • fuktommy.com/trunk/niconico/nicolivealert.py

    r257 r260  
    5555 
    5656__version__ = "$Revision$" 
    57 __all__ = ['MessageEvent', 'StreamEvent', 'connect'] 
     57__all__ = ['Event', 'connect'] 
    5858 
    5959GET_ALERT_INFO = 'http://live.nicovideo.jp/api/getalertinfo' 
     
    115115    is_new_stream = False 
    116116    is_message = False 
     117    is_error = False 
    117118    message = '' 
    118119 
     
    131132    def __str__(self): 
    132133        return self.message 
     134 
     135 
     136class ErrorEvent(Event): 
     137    """Event for exception. 
     138    """ 
     139 
     140    is_error = True 
     141    error = None 
     142 
     143    def __init__(self, error): 
     144        self.error = error 
     145 
     146    def __str__(self): 
     147        return '[error]' 
    133148 
    134149 
     
    280295        self.to_reconnect = False 
    281296 
     297    def close_server(self): 
     298        if self.comment_server: 
     299            self.comment_server.close() 
     300            self.comment_server = None 
     301 
    282302    def close(self): 
    283303        self.processing = False 
    284304        self.to_reconnect = False 
    285         if self.comment_server: 
    286             self.comment_server.close() 
    287             self.comment_server = None 
     305        self.close_server() 
    288306 
    289307    def connect(self): 
     
    300318        self.processing = True 
    301319        while self.processing: 
    302             time.sleep(1) 
    303             self.close() 
    304             self.connect() 
    305             yield MessageEvent('[connect]') 
    306             for comment in self.comment_server: 
    307                 if self.to_reconnect or self.agent.is_busy(): 
    308                     break 
    309                 yield StreamEvent(comment, self.stream_info) 
    310             yield MessageEvent('[close]') 
     320            try: 
     321                time.sleep(1) 
     322                self.close_server() 
     323                self.connect() 
     324                yield MessageEvent('[connect]') 
     325                for comment in self.comment_server: 
     326                    if self.to_reconnect or self.agent.is_busy(): 
     327                        break 
     328                    yield StreamEvent(comment, self.stream_info) 
     329                yield MessageEvent('[close]') 
     330            except Exception, err: 
     331                time.sleep(10) 
     332                yield ErrorEvent(err) 
    311333 
    312334