#encoding = utf8

import logging
import time

from nlp import NLPCallback
from utils import AsyncTaskQueue

logger = logging.getLogger(__name__)


class TTSBase(NLPCallback):
    def __init__(self, handle):
        self._handle = handle
        self._message_queue = AsyncTaskQueue()
        self._message_queue.start_worker()

    @property
    def handle(self):
        return self._handle

    @handle.setter
    def handle(self, value):
        self._handle = value

    async def _request(self, txt: str):
        print('_request:', txt)
        t = time.time()
        await self._on_request(txt)
        print(f'-------tts time:{time.time() - t:.4f}s')
        await self._on_handle()

    async def _on_request(self, text: str):
        pass

    async def _on_handle(self):
        pass

    def on_message(self, txt: str):
        self.message(txt)

    def message(self, txt):
        logger.info(f'message:{txt}')
        print(f'message:{txt}')
        self._message_queue.add_task(self._request(txt))

    def stop(self):
        self._message_queue.stop()