import os
from gearman import GearmanWorker

class GearmanService:
    __worker = {}

    def __init__(self, service_binding='127.0.0.1', service_port=4730, worker_name=''):
        if not worker_name:
            worker_name=os.environ["HOSTNAME"]

        workerUri = "{:s}:{:d}".format(service_binding, service_port)

        print("Starting Gearman-Worker MicroService")
        print("Listening on", workerUri)

        self.__worker = GearmanWorker([ workerUri ])
        self.__worker.set_client_id(worker_name)
        self.registerWorkers()

    def registerWorkers(self):
        self.__worker.register_task('ping', task_ping)
        #self.__worker.register_task('reverse', self.task_reverse)
        self.__worker.work()

    def task_ping(self, gearman_worker, gearman_job):
        print("Ping -> Pong")
        return "pong"

    def task_reverse(self, gearman_worker, gearman_job):
        return reversed(gearman_job.data)


GearmanService()