1e5d0e473Sopenharmony_ci/* 2e5d0e473Sopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 3e5d0e473Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e5d0e473Sopenharmony_ci * you may not use this file except in compliance with the License. 5e5d0e473Sopenharmony_ci * You may obtain a copy of the License at 6e5d0e473Sopenharmony_ci * 7e5d0e473Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e5d0e473Sopenharmony_ci * 9e5d0e473Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e5d0e473Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e5d0e473Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e5d0e473Sopenharmony_ci * See the License for the specific language governing permissions and 13e5d0e473Sopenharmony_ci * limitations under the License. 14e5d0e473Sopenharmony_ci */ 15e5d0e473Sopenharmony_ci 16e5d0e473Sopenharmony_ci#include "data_request.h" 17e5d0e473Sopenharmony_ci 18e5d0e473Sopenharmony_ci#include "core_manager_inner.h" 19e5d0e473Sopenharmony_ci#include "net_conn_constants.h" 20e5d0e473Sopenharmony_ci#include "network_search_types.h" 21e5d0e473Sopenharmony_ci#include "telephony_log_wrapper.h" 22e5d0e473Sopenharmony_ci 23e5d0e473Sopenharmony_cinamespace OHOS { 24e5d0e473Sopenharmony_cinamespace Telephony { 25e5d0e473Sopenharmony_ciusing namespace NetManagerStandard; 26e5d0e473Sopenharmony_ciconstexpr static const int32_t WAIT_TIME_SECOND = 30; 27e5d0e473Sopenharmony_ci 28e5d0e473Sopenharmony_ciDataRequest::DataRequest(int32_t slotId) : slotId_(slotId) {} 29e5d0e473Sopenharmony_ci 30e5d0e473Sopenharmony_ciDataRequest::~DataRequest() {} 31e5d0e473Sopenharmony_ci 32e5d0e473Sopenharmony_ciint32_t DataRequest::HttpRequest(int32_t slotId, const std::string &method, std::shared_ptr<MmsNetworkManager> netMgr, 33e5d0e473Sopenharmony_ci const std::string &contentUrl, std::string &pduDir, const std::string &ua, const std::string &uaprof) 34e5d0e473Sopenharmony_ci{ 35e5d0e473Sopenharmony_ci if (netMgr == nullptr) { 36e5d0e473Sopenharmony_ci TELEPHONY_LOGE("netMgr is nullptr"); 37e5d0e473Sopenharmony_ci return TELEPHONY_ERR_LOCAL_PTR_NULL; 38e5d0e473Sopenharmony_ci } 39e5d0e473Sopenharmony_ci std::shared_ptr<MmsNetworkClient> netClient = netMgr->GetOrCreateHttpClient(slotId); 40e5d0e473Sopenharmony_ci if (netClient == nullptr) { 41e5d0e473Sopenharmony_ci TELEPHONY_LOGE("netClient is nullptr"); 42e5d0e473Sopenharmony_ci return TELEPHONY_ERR_LOCAL_PTR_NULL; 43e5d0e473Sopenharmony_ci } 44e5d0e473Sopenharmony_ci return netClient->Execute(method, contentUrl, pduDir, ua, uaprof); 45e5d0e473Sopenharmony_ci} 46e5d0e473Sopenharmony_ci 47e5d0e473Sopenharmony_ciint32_t DataRequest::ExecuteMms(const std::string &method, std::shared_ptr<MmsNetworkManager> mmsNetworkMgr, 48e5d0e473Sopenharmony_ci const std::string &contentUrl, std::string &pduDir, const std::string &ua, const std::string &uaprof) 49e5d0e473Sopenharmony_ci{ 50e5d0e473Sopenharmony_ci std::unique_lock<std::mutex> lck(ctx_); 51e5d0e473Sopenharmony_ci if (mmsNetworkMgr->AcquireNetwork(slotId_, GetRequestId()) != NETMANAGER_SUCCESS) { 52e5d0e473Sopenharmony_ci TELEPHONY_LOGE("acquire network fail"); 53e5d0e473Sopenharmony_ci return TELEPHONY_ERR_MMS_FAIL_DATA_NETWORK_ERROR; 54e5d0e473Sopenharmony_ci } 55e5d0e473Sopenharmony_ci 56e5d0e473Sopenharmony_ci networkReady_ = false; 57e5d0e473Sopenharmony_ci while (!networkReady_) { 58e5d0e473Sopenharmony_ci TELEPHONY_LOGI("wait(), networkReady = false"); 59e5d0e473Sopenharmony_ci if (cv_.wait_for(lck, std::chrono::seconds(WAIT_TIME_SECOND)) == std::cv_status::timeout) { 60e5d0e473Sopenharmony_ci break; 61e5d0e473Sopenharmony_ci } 62e5d0e473Sopenharmony_ci } 63e5d0e473Sopenharmony_ci 64e5d0e473Sopenharmony_ci if (!networkReady_) { 65e5d0e473Sopenharmony_ci TELEPHONY_LOGE("acquire network fail"); 66e5d0e473Sopenharmony_ci mmsNetworkMgr->ReleaseNetwork(GetRequestId(), false); 67e5d0e473Sopenharmony_ci return TELEPHONY_ERR_LOCAL_PTR_NULL; 68e5d0e473Sopenharmony_ci } 69e5d0e473Sopenharmony_ci 70e5d0e473Sopenharmony_ci int32_t executeResult = HttpRequest(slotId_, method, mmsNetworkMgr, contentUrl, pduDir, ua, uaprof); 71e5d0e473Sopenharmony_ci mmsNetworkMgr->ReleaseNetwork(GetRequestId(), false); 72e5d0e473Sopenharmony_ci return executeResult; 73e5d0e473Sopenharmony_ci} 74e5d0e473Sopenharmony_ci 75e5d0e473Sopenharmony_ciuint8_t DataRequest::GetRequestId() 76e5d0e473Sopenharmony_ci{ 77e5d0e473Sopenharmony_ci return requestId_; 78e5d0e473Sopenharmony_ci} 79e5d0e473Sopenharmony_ci 80e5d0e473Sopenharmony_civoid DataRequest::CreateRequestId() 81e5d0e473Sopenharmony_ci{ 82e5d0e473Sopenharmony_ci requestId_++; 83e5d0e473Sopenharmony_ci} 84e5d0e473Sopenharmony_ci} // namespace Telephony 85e5d0e473Sopenharmony_ci} // namespace OHOS