int clientId = client->getClientId();
NAN_LOGD("Enable in client %d", clientId);
- NanCommand *cmd = new NanEnableCommand(config, clientId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanEnableCommand(config, clientId);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
return NAN_ERROR_NONE;
}
// If it is already disabled, return error.
if (mClientManager.hasNoClient()) {
- NanCommand *cmd = new NanDisableCommand(config, clientId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanDisableCommand(config, clientId);
+ mDataPathManager.clear(); // Should be already done
+ mPeerManager.clear();
+ mCommandQueue.clear(); // Should be already done
+ //deleteAllNanInterfaces();
+
+ scheduleCommand(cmd);
+ setEnabled(false);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
-
- mDataPathManager.clear(); // Should be already done
- mPeerManager.clear();
- mCommandQueue.clear(); // Should be already done
- //deleteAllNanInterfaces();
-
- scheduleCommand(cmd);
- setEnabled(false);
}
return NAN_ERROR_NONE;
}
config->logConfigurations();
- NanCommand *cmd = new NanPublishCommand(config, clientId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanPublishCommand(config, clientId);
+ scheduleCommand(cmd);
+ return NAN_ERROR_NONE;
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
-
- return NAN_ERROR_NONE;
}
NanError NanServiceProvider::updatePublish(std::shared_ptr<PublishConfig> config,
}
config->logConfigurations();
- NanCommand *cmd = new NanUpdatePublishCommand(config, clientId, publishId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanUpdatePublishCommand(config, clientId, publishId);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
return NAN_ERROR_NONE;
}
mCommandQueue.removeCommandsWithPubSubId(publishId);
- NanCommand *cmd = new NanCancelPublishCommand(clientId, publishId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanCancelPublishCommand(clientId, publishId);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
-
return NAN_ERROR_NONE;
}
}
config->logConfigurations();
- NanCommand *cmd = new NanSubscribeCommand(config, clientId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanSubscribeCommand(config, clientId);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
return NAN_ERROR_NONE;
}
}
config->logConfigurations();
- NanCommand *cmd = new NanUpdateSubscribeCommand(config, clientId, subscribeId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanUpdateSubscribeCommand(config, clientId, subscribeId);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
return NAN_ERROR_NONE;
}
mCommandQueue.removeCommandsWithPubSubId(subscribeId);
- NanCommand *cmd = new NanCancelSubscribeCommand(clientId, subscribeId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanCancelSubscribeCommand(clientId, subscribeId);
+ scheduleCommand(cmd);
+ return NAN_ERROR_NONE;
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
-
- return NAN_ERROR_NONE;
}
NanError NanServiceProvider::followup(std::shared_ptr<FollowupConfig> config,
config->logConfigurations();
- NanCommand *cmd = new NanTransmitFollowupCommand(config, clientId, pubSubId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanTransmitFollowupCommand(config, clientId, pubSubId);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
return NAN_ERROR_NONE;
}
{
NAN_LOGI("Create Command for [CREATE_DP_INTERFACE] interface: %s", interface.c_str());
- NanCommand *cmd = new NanCreateInterfaceCommand(interface);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanCreateInterfaceCommand(interface);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
- return;
}
- scheduleCommand(cmd);
-
}
void NanServiceProvider::deleteDataPathInterface(std::string interface)
{
NAN_LOGI("Create Command for [DELETE_DP_INTERFACE] interface: %s", interface.c_str());
-
- NanCommand *cmd = new NanDeleteInterfaceCommand(interface);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanDeleteInterfaceCommand(interface);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return;
}
- scheduleCommand(cmd);
}
NanError NanServiceProvider::openDataPath(std::shared_ptr<DataPathConfig> config, int clientId,
NanCommand *cmd = nullptr;
if (role == NAN_DATA_PATH_INITIATOR) {
NAN_LOGI("Create Command for [DATA_PATH_INITIATE]");
- cmd = new NanDataPathRequestCommand(config, clientId, pubSubId, info);
- if (cmd == nullptr) {
+ try {
+ cmd = new NanDataPathRequestCommand(config, clientId, pubSubId, info);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
+
scheduleCommand(cmd);
info->setState(DataPathState::INITIATOR_WAIT_FOR_REQUEST_RESPONSE);
mDataPathManager.startOpenDataPathTimer(info, client->getClientPath());
return NAN_ERROR_INVALID_PARAMETER;
}
- NanCommand *cmd = new NanDataPathEndCommand(config, clientId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanDataPathEndCommand(config, clientId);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
-
// Do not remove dataPathInfo here.
// It is going to be removed in receiveDataPathEndEvent() after getting 'END' event.
{
NAN_LOGI("Create Command for [CAPABILITIES]");
- NanCommand *cmd = new NanGetCapabilities;
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanGetCapabilities;
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return NAN_ERROR_MEMORY;
}
- scheduleCommand(cmd);
return NAN_ERROR_NONE;
}
std::shared_ptr<DataPathEndConfig> config = DataPathEndConfig::createDefaultConfig();
config->dataPathId = dataPathId;
- NanCommand *cmd = new NanDataPathEndCommand(config, clientId);
- if (cmd == nullptr) {
+ try {
+ NanCommand *cmd = new NanDataPathEndCommand(config, clientId);
+ scheduleCommand(cmd);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return;
}
-
- scheduleCommand(cmd);
}
void NanServiceProvider::closeDataPathInternal(uint32_t dataPathId)
{
NAN_LOGI("Create Command for [DATA_PATH_RESPONSE] client: %p", client);
RET_IF_NULL(client);
-
- NanCommand *cmd = new NanDataPathResponseCommand(config, client->getClientId(), info);
- if (cmd == nullptr) {
+ NanCommand *cmd;
+ try {
+ cmd = new NanDataPathResponseCommand(config, client->getClientId(), info);
+ } catch (std::bad_alloc& e) {
NAN_LOGE("Out of memory");
return;
}