Ejemplo n.º 1
0
Archivo: main.py Proyecto: Starbat/tocc
def main(args):
    if len(args) > 0:
        cli = CLI()
        cli.run()
    else:
        appctxt = AppContext()  # 1. Instantiate ApplicationContext
        exit_code = appctxt.run()  # 2. Invoke appctxt.app.exec_()
        sys.exit(exit_code)
Ejemplo n.º 2
0
class Node:
    def __init__(self):

        self.udp_ip = cfg.UdpServer['ip']
        self.udp_port = cfg.UdpServer['port']
        self.flask_ip = cfg.FlaskServer['ip']
        self.flask_port = cfg.FlaskServer['port']
        self.username = cfg.Application['name']
        self.dir = cfg.Application['dir']
        self.bs_ip = cfg.BoostrapServer['ip']
        self.bs_port = cfg.BoostrapServer['port']

        self.routing_table = RoutingTable()
        self.cli = CLI()
        self.udp_server = UDPServer(self.udp_ip, self.udp_port)
        self.rest_server = RESTServer(self.flask_ip, self.flask_port)

    def run(self):

        # generate random files to be shared
        self.generate_files(random.randint(2, 5))

        self.reg_in_bs()
        self.connect_to_network()

        # starting udp server in a new process
        self.udp_server.run()

        # starting rest server in a new process
        self.rest_server.run()

        # starting cli in the main process
        self.cli.run()

        self.udp_server.terminate()
        self.rest_server.terminate()

        self.unreg_from_bs()
        self.disconnect_from_network()
        shutil.rmtree(self.dir)

    def reg_in_bs(self):

        query = query_builder("REG",
                              data=[self.udp_ip, self.udp_port, self.username])
        data = udp_send_recv(self.bs_ip, self.bs_port, query)

        try:
            res_type, data = query_parser(data)
        except Exception as e:
            print("Error:", str(e))
            sys.exit("Exiting, Couldn't connect to BS")
        else:
            if res_type == "REGOK":
                for i in range(0, len(data), 2):
                    self.routing_table.add(data[i], data[i + 1])
            else:
                print("Error: Invalid response from BS")
                sys.exit("Exiting, Couldn't connect to BS")

    def unreg_from_bs(self):
        query = query_builder("UNREG",
                              data=[self.udp_ip, self.udp_port, self.username])
        res = udp_send_recv(self.bs_ip, self.bs_port, query)
        try:
            res_type, res = query_parser(res)
        except Exception as e:
            pass

    def connect_to_network(self):
        for ip, port in self.routing_table.get():
            query = query_builder("JOIN", data=[self.udp_ip, self.udp_port])
            data = udp_send_recv(ip, port, query)
            try:
                res_type, data = query_parser(data)
            except Exception as e:
                print("Error:", str(e))
                self.routing_table.remove((ip, port))
            else:
                if res_type == "JOINOK":
                    pass

    def disconnect_from_network(self):
        for ip, port in self.routing_table.get():
            query = query_builder("LEAVE", data=[self.udp_ip, self.udp_port])
            data = udp_send_recv(ip, port, query)
            try:
                res_type, data = query_parser(data)
            except Exception as e:
                print("Error:", str(e))
            else:
                if res_type == "LEAVEOK":
                    pass

    def generate_files(self, num_files):
        if os.path.isdir(self.dir):
            print("path already exist")
        else:
            os.mkdir(self.dir)

        file_names = []
        with open("File Names.txt", 'r') as in_file:
            for line in in_file:
                file_names.append(line.strip())
        random.shuffle(file_names)

        for i in range(num_files):
            generate_random_file(self.dir, file_names[i],
                                 random.randint(2, 10))
Ejemplo n.º 3
0
def main():
    cli = CLI()
    cli.run()
Ejemplo n.º 4
0
def main():
    cli = CLI()
    cli.run()
    return 0
Ejemplo n.º 5
0
from function_holder import FunctionHolder
from cli import CLI

def testFunction():
    print("hello, world. testing, testing...")
    return 22

function_holder = FunctionHolder()
# Add a simple function to the function_holder
function_holder.addFunction("test", testFunction, 0)

cli = CLI(function_holder)
cli.run()
Ejemplo n.º 6
0
    Parameter:
        beg (int) : 
    """
    print('Finished in {0:.3f} ms.'.format(clock() - beg))


if __name__ == '__main__':
    beg = clock()

    args = parse_args()
    code = args['code']
    source = args['file']

    pyint = Interpreter()

    # execute raw code
    if code:
        out = pyint.run(code=code)
        print('Output:\n\t' + out)
        show_elapsed(beg)

    # execute code from file
    elif source:
        out = pyint.run(file=source)
        print('Output:\n\t' + out)
        show_elapsed(beg)

    # cli
    else:
        CLI.run(pyint)
Ejemplo n.º 7
0
###########################################################
# A main file of the project
# Author: Piotr Wiezel
###########################################################

from cli import CLI

# Command line interface
cli = CLI()
cli.run()