import os
import logging


class PidFileManager(object):
    def __init__(self, label, results_dir):
        self.path = os.path.join(results_dir, ".%s_execute" % label)
        self.pid_file = None
        self.num_tests_failed = 0


    def open_file(self):
        self.pid_file = open(self.path, "w")
        self.pid_file.write("%s\n" % os.getpid())
        self.pid_file.flush()
        logging.info("Logged pid %s to %s", os.getpid(), self.path)


    def close_file(self, exit_code, signal_code=0):
        if not self.pid_file:
            return
        pid_file = self.pid_file
        self.pid_file = None
        encoded_exit_code = ((exit_code & 0xFF) << 8) | (signal_code & 0xFF)
        pid_file.write("%s\n" % encoded_exit_code)
        pid_file.write("%s\n" % self.num_tests_failed)
        pid_file.close()
