예제 #1
0
def client_loop(callback, channel, idle=None):
    import socket

    def do_idle():
        if idle: idle()
        else:
            print("TIMEOUT")
            tb.print_exc()
            time.sleep(1)

    def do_error():
        tb.print_exc()
        time.sleep(1)
        try:
            connect()
        except:
            print("ERR2")
            tb.print_exc()

    while 1:
        try:
            peer2peer.subscribe(Ps, channel)
            while 1:
                msgs = peer2peer.recv(Ps)
                callback(msgs[2])
                time.sleep(0.2)
        except peer2peer.WebSocketTimeoutException:
            do_idle()
        except socket.error, e:
            if e.errno == 35: do_idle()
            else: do_error()
        except Exception, e:
            do_error()
예제 #2
0
def main():
    while 1:
        try:
            peer2peer.subscribe(Ps, 'dbd')
            while 1:
                msgs = peer2peer.recv(Ps)
                msg = msgs[2]
                arr = msg.split(' ', 4)
                if   arr[1] == 'hola':
                    peer2peer.publish(Ps, arr[0], arr[2] + " YO!")
                elif arr[1] == 'put':
                    db.Put(arr[3], arr[4])
                    peer2peer.publish(Ps, arr[0], arr[2] + " OK")
                elif arr[1] == 'get':
                    try:
                        result = db.Get(arr[3])
                        peer2peer.publish(Ps, arr[0], arr[2] + ' ' + result)
                    except KeyError:
                        peer2peer.publish(Ps, arr[0], arr[2])
                elif arr[1] == 'keys':
                    try:
                        result = ' '.join(list(keys(arr[3],arr[4])))
                        #print("RESLT", repr(result))
                        peer2peer.publish(Ps, arr[0], arr[2] + ' ' + result)
                    except KeyError:
                        peer2peer.publish(Ps, arr[0], arr[2])
                elif arr[1] == 'zap':
                    for key in keys(''):
                        db.Delete(key)
                else:
                    print("ERROR, DONT KNOW HOW TO DO THAT")
                    pass
                time.sleep(0.2)
        except:
            tb.print_exc()
            print("ERR")
            time.sleep(1)
            try:
                connect()
            except:
                print("ERR2")
                tb.print_exc()
                pass
            pass
예제 #3
0
def db_connect():
    global Db
    Db = peer2peer.conn()
    peer2peer.subscribe(Db, UUID)
    return Db
예제 #4
0
def xdb_connect():
    global XDb
    XDb = peer2peer.conn('v.ccl.io:8080')
    peer2peer.subscribe(XDb, UUID)
    return XDb
예제 #5
0
def subscribe(ch):
    return peer2peer.subscribe(Ps, ch)
예제 #6
0
def xsubscribe(ch):
    return peer2peer.subscribe(Xps, ch)