nlsCppSdk/framework/item/iNlsRequest.cpp (114 lines of code) (raw):
/*
* Copyright 2021 Alibaba Group Holding Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "iNlsRequest.h"
#include <string>
#include "connectNode.h"
#include "iNlsRequestListener.h"
#include "iNlsRequestParam.h"
#include "nlog.h"
#include "nlsClient.h"
#include "nlsEventNetWork.h"
#include "nlsGlobal.h"
#include "nlsRequestParamInfo.h"
#include "utility.h"
namespace AlibabaNls {
INlsRequest::INlsRequest(const char* sdkName)
: _node(NULL), _listener(NULL), _requestParam(NULL), _threadNumber(-1) {}
INlsRequest::~INlsRequest() {
_node = NULL;
_requestParam = NULL;
}
int INlsRequest::start(INlsRequest* request) {
INPUT_REQUEST_CHECK(request);
EVENT_CLIENT_CHECK(NlsEventNetWork::_eventClient);
LOG_INFO("Request(%p) invoke start ...", request);
int ret = NlsEventNetWork::_eventClient->start(request);
LOG_INFO("Request(%p) invoke start done, ret:%d.", request, ret);
return ret;
}
int INlsRequest::stop(INlsRequest* request) {
INPUT_REQUEST_CHECK(request);
EVENT_CLIENT_CHECK(NlsEventNetWork::_eventClient);
LOG_INFO("Request(%p) invoke stop ...", request);
int ret = NlsEventNetWork::_eventClient->stop(request);
LOG_INFO("Request(%p) invoke stop done, ret:%d.", request, ret);
return ret;
}
int INlsRequest::cancel(INlsRequest* request) {
INPUT_REQUEST_CHECK(request);
EVENT_CLIENT_CHECK(NlsEventNetWork::_eventClient);
LOG_INFO("Request(%p) invoke cancel ...", request);
int ret = NlsEventNetWork::_eventClient->cancel(request);
LOG_INFO("Request(%p) invoke cancel done, ret:%d.", request, ret);
return ret;
}
int INlsRequest::stControl(INlsRequest* request, const char* message) {
INPUT_REQUEST_CHECK(request);
EVENT_CLIENT_CHECK(NlsEventNetWork::_eventClient);
return NlsEventNetWork::_eventClient->stControl(request, message);
}
int INlsRequest::sendAudio(INlsRequest* request, const uint8_t* data,
size_t dataSize, ENCODER_TYPE type) {
INPUT_REQUEST_CHECK(request);
EVENT_CLIENT_CHECK(NlsEventNetWork::_eventClient);
if (data == NULL || dataSize == 0) {
LOG_ERROR("Input data is empty.");
return -(InvalidRequestParams);
}
int ret =
NlsEventNetWork::_eventClient->sendAudio(request, data, dataSize, type);
#ifdef ENABLE_CONTINUED
if (request->getConnectNode() &&
request->getConnectNode()->_reconnection.state !=
NodeReconnection::NoReconnection &&
ret < 0) {
LOG_WARN("Request(%p) is reconnecting, ignore(%d) this error(%d) ...",
request, request->getConnectNode()->_reconnection.state, ret);
ret = dataSize;
}
#endif
return ret;
}
int INlsRequest::sendText(INlsRequest* request, const char* text) {
INPUT_REQUEST_CHECK(request);
EVENT_CLIENT_CHECK(NlsEventNetWork::_eventClient);
return NlsEventNetWork::_eventClient->sendText(request, text);
}
int INlsRequest::sendPing(INlsRequest* request) {
INPUT_REQUEST_CHECK(request);
EVENT_CLIENT_CHECK(NlsEventNetWork::_eventClient);
return NlsEventNetWork::_eventClient->sendPing(request);
}
int INlsRequest::sendFlush(INlsRequest* request, const char* parameters) {
INPUT_REQUEST_CHECK(request);
EVENT_CLIENT_CHECK(NlsEventNetWork::_eventClient);
return NlsEventNetWork::_eventClient->sendFlush(request, parameters);
}
const char* INlsRequest::dumpAllInfo(INlsRequest* request) {
if (request == NULL) {
LOG_ERROR("Input request is empty.");
return NULL;
}
if (NlsEventNetWork::_eventClient == NULL) {
LOG_ERROR(
"NlsEventNetWork has destroyed, please invoke startWorkThread() "
"first.");
return NULL;
}
return NlsEventNetWork::_eventClient->dumpAllInfo(request);
}
ConnectNode* INlsRequest::getConnectNode() {
if (_node == NULL) {
LOG_WARN("request(%p) _node is nullptr.", this);
return NULL;
}
return _node;
}
INlsRequestParam* INlsRequest::getRequestParam() {
if (_requestParam == NULL) {
LOG_WARN("Request(%p) _requestParam is nullptr.", this);
return NULL;
}
return _requestParam;
}
void INlsRequest::setThreadNumber(int num) { _threadNumber = num; }
int INlsRequest::getThreadNumber() { return _threadNumber; }
} // namespace AlibabaNls