# standard imports
import os
import logging
import mmap

# standard imports
import tempfile

# external imports
import celery

#logg = logging.getLogger(__name__)
logg = logging.getLogger()

celery_app = celery.current_app


class CallbackTask(celery.Task):

    mmap_path = tempfile.mkdtemp()


@celery_app.task(bind=True, base=CallbackTask)
def test_callback(self, a, b, c):
    s = 'ok'
    if c > 0:
        s = 'err'

    fp = os.path.join(self.mmap_path, b)
    f = open(fp, 'wb+')
    f.write(b'\x00')
    f.seek(0)
    m = mmap.mmap(f.fileno(), length=1)
    m.write(c.to_bytes(1, 'big'))
    m.close()
    f.close()

    logg.debug('test callback ({}): {} {} {}'.format(s, a, b, c))