Changeset 316

Show
Ignore:
Timestamp:
05/20/09 17:57:36 (3 years ago)
Author:
ocjhb
Message:

receiving coins via http now stopable via leftclick

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/sandbox/jhb/mobile/ocwallet.py

    r315 r316  
    3939            self.wallet_menu.bind(EKeyRightArrow,self.displayActionMenu) 
    4040 
    41     def feedback(self,text): 
    42         status(unicode(text)) 
     41    def feedback(self,text,cb=None): 
     42        status(unicode(text),callback=cb) 
    4343         
    4444 
     
    212212     
    213213    def receiveCoinsHTTP(self,transport,port): 
    214         import BaseHTTPServer, urllib 
    215          
     214        import BaseHTTPServer, urllib,socket 
     215        
     216        class StoppableHTTPServer(BaseHTTPServer.HTTPServer): 
     217 
     218            def server_bind(self): 
     219                BaseHTTPServer.HTTPServer.server_bind(self) 
     220                self.socket.settimeout(0.5) 
     221                self.run = True 
     222 
     223            def get_request(self): 
     224                while self.run: 
     225                    try: 
     226                        e32.ao_yield() 
     227                        sock, addr = self.socket.accept() 
     228                        sock.settimeout(None) 
     229                        return (sock, addr) 
     230                    except socket.timeout: 
     231                        if not self.run: 
     232                            self.socket.close() 
     233                            raise socket.error 
     234 
     235            def stop(self): 
     236                self.run = False 
     237 
     238            def serve(self): 
     239                while self.run: 
     240                    self.handle_request() 
     241 
     242 
    216243        class OCHandler(BaseHTTPServer.BaseHTTPRequestHandler): 
    217244 
     
    239266        #r = urllib.urlopen('http://google.com') 
    240267        #ip = urllib.urlopen('http://opencoin.org/myownip').read() 
    241         httpd = BaseHTTPServer.HTTPServer(("",port),OCHandler) 
    242         self.feedback(u'Receiving coins: waiting at %s' % (self.ip)) 
    243         httpd.handle_request() 
    244         httpd.handle_request() 
     268        self.httpd = StoppableHTTPServer(("",port),OCHandler) 
     269        self.feedback(u'Receiving coins: waiting at %s' % (self.ip),self.stopReceiveCoinsHTTP) 
     270        if self.httpd.run: 
     271            self.httpd.handle_request() 
     272        if self.httpd.run: 
     273            self.httpd.handle_request() 
     274        self.httpd.socket.close()           
    245275        self.stopInternet() 
     276 
     277    def stopReceiveCoinsHTTP(self): 
     278        self.httpd.stop() 
     279 
    246280 
    247281    def getBTTransport(self): 
     
    408442 
    409443 
    410 def status(text,icon=None): 
     444def status(text,icon=None,callback=None): 
    411445    if ':' in text: 
    412446        items = [unicode(p.strip()) for p in text.split(':',1)] 
     
    415449    if icon: 
    416450        items.append(icon) 
    417     appuifw.app.body = appuifw.Listbox([tuple(items)], lambda: None) 
    418451             
     452    body = appuifw.Listbox([tuple(items)], lambda: None) 
     453    if callback: 
     454            body.bind(EKeyLeftArrow,callback) 
     455    appuifw.app.body=body 
    419456    e32.ao_sleep(0.3) 
    420457