diff --git a/frameworks/native/src/sensor_agent_proxy.cpp b/frameworks/native/src/sensor_agent_proxy.cpp index 10cb66b6acff1537dbccd34292af6087fba4bf56..9695f45cbe5794ac27e73a9a43bdfb846adc6f71 100644 --- a/frameworks/native/src/sensor_agent_proxy.cpp +++ b/frameworks/native/src/sensor_agent_proxy.cpp @@ -84,8 +84,9 @@ int32_t SensorAgentProxy::CreateSensorDataChannel() return ERR_OK; } CHKPR(dataChannel_, INVALID_POINTER); - auto ret = dataChannel_->CreateSensorDataChannel(std::bind(&SensorAgentProxy::HandleSensorData, - this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3), nullptr); + auto ret = dataChannel_->CreateSensorDataChannel([this] (SensorEvent *events, int32_t num, void *data) { + this->HandleSensorData(events, num, data); + }, nullptr); if (ret != ERR_OK) { SEN_HILOGE("Create data channel failed, ret:%{public}d", ret); return ret; diff --git a/frameworks/native/src/sensor_service_client.cpp b/frameworks/native/src/sensor_service_client.cpp index a2f02e9cb921a8dc44687db42d58d0a029613612..7d6ceeecaf068f56a755338116f88d5c5b636a71 100644 --- a/frameworks/native/src/sensor_service_client.cpp +++ b/frameworks/native/src/sensor_service_client.cpp @@ -429,7 +429,7 @@ void SensorServiceClient::ReceiveMessage(const char *buf, size_t size) #ifdef OHOS_BUILD_ENABLE_RUST ReadClientPackets(circBuf_.streamBufferPtr_.get(), this, OnPacket); #else - OnReadPackets(circBuf_, std::bind(&SensorServiceClient::HandleNetPacke, this, std::placeholders::_1)); + OnReadPackets(circBuf_, [this] (NetPacket &pkt) { this->HandleNetPacke(pkt); }); #endif // OHOS_BUILD_ENABLE_RUST } @@ -508,8 +508,8 @@ int32_t SensorServiceClient::CreateSocketChannel() { std::lock_guard channelLock(channelMutex_); if (dataChannel_->AddFdListener(GetFd(), - std::bind(&SensorServiceClient::ReceiveMessage, this, std::placeholders::_1, std::placeholders::_2), - std::bind(&SensorServiceClient::Disconnect, this)) != ERR_OK) { + [this] (const char *buf, size_t size) { this->ReceiveMessage(buf, size); }, + [this] { this->Disconnect(); })!= ERR_OK) { Close(); SEN_HILOGE("Add fd listener failed, fd:%{public}d", GetFd()); return ERROR; diff --git a/services/include/sensor_service_stub.h b/services/include/sensor_service_stub.h index 3166c6de5533d0ebd990868ebacadd2d2350be60..c799965d4dca6fa4b18826e9811fc3c262e524d4 100644 --- a/services/include/sensor_service_stub.h +++ b/services/include/sensor_service_stub.h @@ -33,7 +33,6 @@ public: private: DISALLOW_COPY_AND_MOVE(SensorServiceStub); - using SensorBaseFunc = ErrCode (SensorServiceStub::*)(MessageParcel &data, MessageParcel &reply); ErrCode SensorEnableInner(MessageParcel &data, MessageParcel &reply); ErrCode SensorDisableInner(MessageParcel &data, MessageParcel &reply); ErrCode GetAllSensorsInner(MessageParcel &data, MessageParcel &reply); @@ -48,8 +47,8 @@ private: ErrCode DisableActiveInfoCBInner(MessageParcel &data, MessageParcel &reply); ErrCode ResetSensorsInner(MessageParcel &data, MessageParcel &reply); bool IsSystemServiceCalling(); + int32_t ProcessRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option); bool IsSystemCalling(); - std::unordered_map baseFuncs_; }; } // namespace Sensors } // namespace OHOS diff --git a/services/src/sensor_service_stub.cpp b/services/src/sensor_service_stub.cpp index b4a692a303dd740c02fd31b235b1e4f3ae7c66a3..8d07287ad15624d98f99f4c20fbf0a7568bbeaa2 100644 --- a/services/src/sensor_service_stub.cpp +++ b/services/src/sensor_service_stub.cpp @@ -37,41 +37,58 @@ namespace OHOS { namespace Sensors { using namespace OHOS::HiviewDFX; -SensorServiceStub::SensorServiceStub() -{ - CALL_LOG_ENTER; - baseFuncs_[static_cast(SensorInterfaceCode::ENABLE_SENSOR)] = - &SensorServiceStub::SensorEnableInner; - baseFuncs_[static_cast(SensorInterfaceCode::DISABLE_SENSOR)] = - &SensorServiceStub::SensorDisableInner; - baseFuncs_[static_cast(SensorInterfaceCode::GET_SENSOR_LIST)] = - &SensorServiceStub::GetAllSensorsInner; - baseFuncs_[static_cast(SensorInterfaceCode::TRANSFER_DATA_CHANNEL)] = - &SensorServiceStub::CreateDataChannelInner; - baseFuncs_[static_cast(SensorInterfaceCode::DESTROY_SENSOR_CHANNEL)] = - &SensorServiceStub::DestroyDataChannelInner; - baseFuncs_[static_cast(SensorInterfaceCode::SUSPEND_SENSORS)] = - &SensorServiceStub::SuspendSensorsInner; - baseFuncs_[static_cast(SensorInterfaceCode::RESUME_SENSORS)] = - &SensorServiceStub::ResumeSensorsInner; - baseFuncs_[static_cast(SensorInterfaceCode::GET_ACTIVE_INFO_LIST)] = - &SensorServiceStub::GetActiveInfoListInner; - baseFuncs_[static_cast(SensorInterfaceCode::CREATE_SOCKET_CHANNEL)] = - &SensorServiceStub::CreateSocketChannelInner; - baseFuncs_[static_cast(SensorInterfaceCode::DESTROY_SOCKET_CHANNEL)] = - &SensorServiceStub::DestroySocketChannelInner; - baseFuncs_[static_cast(SensorInterfaceCode::ENABLE_ACTIVE_INFO_CB)] = - &SensorServiceStub::EnableActiveInfoCBInner; - baseFuncs_[static_cast(SensorInterfaceCode::DISABLE_ACTIVE_INFO_CB)] = - &SensorServiceStub::DisableActiveInfoCBInner; - baseFuncs_[static_cast(SensorInterfaceCode::RESET_SENSORS)] = - &SensorServiceStub::ResetSensorsInner; -} +SensorServiceStub::SensorServiceStub() {} + +SensorServiceStub::~SensorServiceStub() {} -SensorServiceStub::~SensorServiceStub() +int32_t SensorServiceStub::ProcessRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, + MessageOption &option) { - CALL_LOG_ENTER; - baseFuncs_.clear(); + switch (code) { + case static_cast(SensorInterfaceCode::ENABLE_SENSOR): { + return SensorEnableInner(data, reply); + } + case static_cast(SensorInterfaceCode::DISABLE_SENSOR): { + return SensorDisableInner(data, reply); + } + case static_cast(SensorInterfaceCode::GET_SENSOR_LIST): { + return GetAllSensorsInner(data, reply); + } + case static_cast(SensorInterfaceCode::TRANSFER_DATA_CHANNEL): { + return CreateDataChannelInner(data, reply); + } + case static_cast(SensorInterfaceCode::DESTROY_SENSOR_CHANNEL): { + return DestroyDataChannelInner(data, reply); + } + case static_cast(SensorInterfaceCode::SUSPEND_SENSORS): { + return SuspendSensorsInner(data, reply); + } + case static_cast(SensorInterfaceCode::RESUME_SENSORS): { + return ResumeSensorsInner(data, reply); + } + case static_cast(SensorInterfaceCode::GET_ACTIVE_INFO_LIST): { + return GetActiveInfoListInner(data, reply); + } + case static_cast(SensorInterfaceCode::CREATE_SOCKET_CHANNEL): { + return CreateSocketChannelInner(data, reply); + } + case static_cast(SensorInterfaceCode::DESTROY_SOCKET_CHANNEL): { + return DestroySocketChannelInner(data, reply); + } + case static_cast(SensorInterfaceCode::ENABLE_ACTIVE_INFO_CB): { + return EnableActiveInfoCBInner(data, reply); + } + case static_cast(SensorInterfaceCode::DISABLE_ACTIVE_INFO_CB): { + return DisableActiveInfoCBInner(data, reply); + } + case static_cast(SensorInterfaceCode::RESET_SENSORS): { + return ResetSensorsInner(data, reply); + } + default: { + SEN_HILOGD("No member func supporting, applying default process"); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); + } + } } int32_t SensorServiceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, @@ -84,15 +101,7 @@ int32_t SensorServiceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, M SEN_HILOGE("Client and service descriptors are inconsistent"); return OBJECT_NULL; } - auto itFunc = baseFuncs_.find(code); - if (itFunc != baseFuncs_.end()) { - auto memberFunc = itFunc->second; - if (memberFunc != nullptr) { - return (this->*memberFunc)(data, reply); - } - } - SEN_HILOGD("No member func supporting, applying default process"); - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); + return ProcessRemoteRequest(code, data, reply, option); } bool SensorServiceStub::IsSystemServiceCalling()