class GenericFileMailbox(object):
    _variant = None
    _path = None

    def __init__(self, path):
        super(GenericFileMailbox, self).__init__()
        self._path = path

    def get_instance(self):
        return self._variant(self._path)

    def get_message(self):
        repository = self.get_instance()
        repository.lock()
        for key, message in repository.items():
            repository.remove(key)
            yield message
        repository.unlock()
