예제 #1
0
class Capsule:

    def __init__(self, host, port):

        self.ns = NameService()

        self.marshaller_client = Marshaller()
        self.c = ClientRequestHandler()
        self.requestor = Requestor(self.marshaller_client, self.c)

        self.server = threading.Thread(target = self.createServer, args = (host, port) )

        self.server.daemon = True

        self.server.start()            

    def resetNS(self):
        self.ns.reset()

    def createServer(self, host, port):
        self.marshaller_server = Marshaller()
        self.invoker = Invoker(self.marshaller_server)
        self.s = ServerRequestHandler(host, port, self.invoker)
        self.invoker.addServer(self.s);

    def registerRemoteObject(self, id, name, obj, host, port):
        self.ns.register(id, name, host, port)
        self.invoker.register(id, name, obj)

    def invoke(self, obj, method, args):
        result = self.requestor.invoke(obj, method, args)
        return result
예제 #2
0
    def __init__(self, host, port):

        self.ns = NameService()

        self.marshaller_client = Marshaller()
        self.c = ClientRequestHandler()
        self.requestor = Requestor(self.marshaller_client, self.c)

        self.server = threading.Thread(target = self.createServer, args = (host, port) )

        self.server.daemon = True

        self.server.start()            
예제 #3
0
class Requestor:

    def __init__(self, m, c):
        print ">>> Requestor"
        self.marshaller = m
        self.client = c
        self.ns = NameService()

    def invoke(self, obj, method, args):
        iRef = self.ns.lookupName(obj)[0]
        return self.invokeByAddr(iRef.host, iRef.port, iRef.name, method, args)

    def invokeByAddr(self, host, port, obj, method, args):
        msg = Message(obj, method, args)

        json = self.marshaller.encode(msg)

        self.client.connect(host, port)
        response = self.client.send(json)
        result = self.marshaller.decode(response)
        return result
예제 #4
0
파일: watch.py 프로젝트: pypot/hbase_pot
import logging
import time
import sys

from os.path import basename, join
from nameservice import NameService


if __name__ == "__main__":

    if len(sys.argv) != 3 :
        print "Usage : %s service_name, ip_method" % sys.argv[0]
        exit()

    name_service = NameService("localhost:2181", sys.argv[2])

    if name_service.watch_service(sys.argv[1]) == False :
        print "Failed to watch_service()", sys.argv[1]
        exit()

    if name_service.start() == False :
        print "Failed to start()"
        exit()

    print "Started!"


    while raw_input() != 'q' :
        (ret_str, host, port) = name_service.get_service_host_and_port(sys.argv[1], name_service.EPOLICY_RANDOM)
예제 #5
0
import socket
from nameservice import NameService
from client_thread import client_thread
import json

config_file = "conf.json"

with open(config_file) as f:
    conf = json.load(f)

HOST_ADDRESS = conf['HOST']
PORT = conf['PORT']
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST_ADDRESS, PORT))
s.listen(1)

nameservice = NameService()

while 1:
    conn, addr = s.accept()
    ct = client_thread(conn, nameservice)
    ct.run()
예제 #6
0
파일: register.py 프로젝트: pypot/hbase_pot
# date: 2013.4.19
# version: 1.0

import logging
import time
import sys

from os.path import basename, join
from nameservice import NameService


if __name__ == "__main__":

    if len(sys.argv) != 5 :
        print "Usage : %s service_name, service_port, service_version, ip_method" % sys.argv[0]
        exit()

    name_service = NameService("localhost:2181", sys.argv[4])

    if name_service.register_service(sys.argv[1], int(sys.argv[2]), sys.argv[3]) == False :
        print "Failed to register_service()", sys.argv[1], int(sys.argv[2]), sys.argv[3]
        exit()

    if name_service.start() == False :
        print "Failed to start()"
        exit()

    print "Started!"

    time.sleep(1000)
예제 #7
0
 def __init__(self, m, c):
     print ">>> Requestor"
     self.marshaller = m
     self.client = c
     self.ns = NameService()
예제 #8
0
import logging
import time
import sys

from os.path import basename, join
from nameservice import NameService


if __name__ == "__main__":

    if len(sys.argv) != 6 :
        print "Usage : %s service_name, service_port, service_version, ip_method, watch_service_name" % sys.argv[0]
        exit()

    name_service = NameService("localhost:2181", sys.argv[4])

    if name_service.register_service(sys.argv[1], int(sys.argv[2]), sys.argv[3]) == False :
        print "Failed to register_service()", sys.argv[1], int(sys.argv[2]), sys.argv[3]
        exit()

    if name_service.watch_service(sys.argv[5]) == False :
        print "Failed to watch_service()", sys.argv[1]
        exit()

    if name_service.start() == False :
        print "Failed to start()"
        exit()

    print "Started!"