void SpeechSynthesizerListener::handlerFrame()

in nlsCppSdk/framework/feature/sy/speechSynthesizerListener.cpp [31:122]


void SpeechSynthesizerListener::handlerFrame(NlsEvent& str) {
  NlsEvent::EventType type = str.getMsgType();

#ifdef ENABLE_NLS_DEBUG_2
  uint64_t timewait_start, timewait_a, timewait_b, timewait_c, timewait_end;
  uint64_t timewait_b1, timewait_b2, timewait_c0;
  timewait_start = utility::TextUtils::GetTimestampMs();
  timewait_a = utility::TextUtils::GetTimestampMs();
#endif

  if (NULL == _callback) {
    LOG_ERROR("callback is NULL");
    return;
  }

  switch (type) {
    case NlsEvent::SynthesisStarted:
      if (NULL != _callback->_onSynthesisStarted) {
        _callback->_onSynthesisStarted(
            &str, _callback->_paramap[NlsEvent::SynthesisStarted]);
      }
      break;
    case NlsEvent::SynthesisCompleted:
#ifdef ENABLE_NLS_DEBUG_2
      timewait_b = utility::TextUtils::GetTimestampMs();
      if (NULL != _callback->_onSynthesisCompleted) {
        timewait_b1 = utility::TextUtils::GetTimestampMs();
        void* user = _callback->_paramap[NlsEvent::SynthesisCompleted];
        timewait_b2 = utility::TextUtils::GetTimestampMs();
        _callback->_onSynthesisCompleted(&str, user);
        timewait_c0 = utility::TextUtils::GetTimestampMs();
      }
      timewait_c = utility::TextUtils::GetTimestampMs();
      if (timewait_c - timewait_b > 50) {
        LOG_WARN(
            "SynthesisCompleted excessive:%llu, including if:%llu map:%llu "
            "callback:%llu",
            timewait_c - timewait_b, timewait_b1 - timewait_b,
            timewait_b2 - timewait_b1, timewait_c0 - timewait_b2);
      }
#else
      if (NULL != _callback->_onSynthesisCompleted) {
        _callback->_onSynthesisCompleted(
            &str, _callback->_paramap[NlsEvent::SynthesisCompleted]);
      }
#endif
      break;
    case NlsEvent::Close:
      if (NULL != _callback->_onChannelClosed) {
        _callback->_onChannelClosed(&str, _callback->_paramap[NlsEvent::Close]);
      }
      break;
    case NlsEvent::Binary:
#ifdef ENABLE_NLS_DEBUG_2
      timewait_b = utility::TextUtils::GetTimestampMs();
#endif
      if (NULL != _callback->_onBinaryDataReceived) {
        _callback->_onBinaryDataReceived(&str,
                                         _callback->_paramap[NlsEvent::Binary]);
      }
#ifdef ENABLE_NLS_DEBUG_2
      timewait_c = utility::TextUtils::GetTimestampMs();
#endif
      break;
    case NlsEvent::MetaInfo:
      if (NULL != _callback->_onMetaInfo) {
        _callback->_onMetaInfo(&str, _callback->_paramap[NlsEvent::MetaInfo]);
      }
      break;
    case NlsEvent::Message:
      if (NULL != _callback->_onMessage) {
        _callback->_onMessage(&str, _callback->_paramap[NlsEvent::Message]);
      }
      break;
    default:
      if (NULL != _callback->_onTaskFailed) {
        _callback->_onTaskFailed(&str,
                                 _callback->_paramap[NlsEvent::TaskFailed]);
      }
      break;
  }

#ifdef ENABLE_NLS_DEBUG_2
  timewait_end = utility::TextUtils::GetTimestampMs();
  if (timewait_end - timewait_start > 50) {
    LOG_WARN("type:%d excessive:%llu, including %llu %llu", type,
             timewait_end - timewait_start, timewait_a - timewait_start,
             timewait_c - timewait_b);
  }
#endif
  return;
}