1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "common_event_manager_impl.h" 17 #include "native_log.h" 18 #include "common_event.h" 19 #include "parameter_parse.h" 20 #include "common_event_manager.h" 21 #include "securec.h" 22 23 #include "common_event_publish_info.h" 24 25 namespace OHOS::CommonEventManager { 26 using Want = OHOS::AAFwk::Want; 27 using CommonEventPublishInfo = OHOS::EventFwk::CommonEventPublishInfo; 28 PublishEvent(char * event,int32_t userId)29 int32_t CommonEventManagerImpl::PublishEvent(char *event, int32_t userId) 30 { 31 Want want; 32 want.SetAction(std::string(event)); 33 auto data = CommonEventData(want); 34 return OHOS::EventFwk::CommonEventManager::PublishCommonEventAsUser(data, userId) ? NO_ERROR : ERR_CES_FAILED; 35 } 36 PublishEventWithData(char * event,int32_t userId,CommonEventPublishDataBycj options)37 int32_t CommonEventManagerImpl::PublishEventWithData(char *event, int32_t userId, 38 CommonEventPublishDataBycj options) 39 { 40 Want want; 41 want.SetAction(std::string(event)); 42 // parameters 43 if (options.parameters.size != 0) { 44 WantParams wantP; 45 SetDataParameters(options.parameters, wantP); 46 want.SetParams(wantP); 47 } 48 auto data = CommonEventData(want, options.code, std::string(options.data)); 49 CommonEventPublishInfo publishInfo = CommonEventPublishInfo(); 50 // subPermissions 51 if (options.permissions.size != 0) { 52 std::vector<std::string> subscriberPermissions; 53 charPtrToVector(options.permissions.head, options.permissions.size, subscriberPermissions); 54 publishInfo.SetSubscriberPermissions(subscriberPermissions); 55 } 56 publishInfo.SetOrdered(options.isOrdered); 57 publishInfo.SetSticky(options.isSticky); 58 publishInfo.SetBundleName(std::string(options.bundleName)); 59 return OHOS::EventFwk::CommonEventManager::NewPublishCommonEventAsUser(data, publishInfo, userId); 60 } 61 SetStaticSubscriberState(bool enable)62 int32_t CommonEventManagerImpl::SetStaticSubscriberState(bool enable) 63 { 64 return OHOS::EventFwk::CommonEventManager::SetStaticSubscriberState(enable); 65 } 66 RemoveStickyCommonEvent(char * event)67 int32_t CommonEventManagerImpl::RemoveStickyCommonEvent(char *event) 68 { 69 return OHOS::EventFwk::CommonEventManager::RemoveStickyCommonEvent(std::string(event)); 70 } 71 CreateCommonEventSubscribeInfo(char ** event,int64_t size)72 std::shared_ptr<CommonEventSubscribeInfo> CommonEventManagerImpl::CreateCommonEventSubscribeInfo( 73 char **event, int64_t size) 74 { 75 LOGI("CJ_CreateSubscribeInfo start"); 76 OHOS::EventFwk::MatchingSkills matchingSkills; 77 for (int64_t i = 0; i < size; i++) { 78 matchingSkills.AddEvent(std::string(event[i])); 79 } 80 CommonEventSubscribeInfo subscriberInfo(matchingSkills); 81 return std::make_shared<CommonEventSubscribeInfo>(subscriberInfo); 82 } 83 Subscribe(std::shared_ptr<SubscriberImpl> subscriber,const std::function<void (CCommonEventData)> & callback)84 int32_t CommonEventManagerImpl::Subscribe(std::shared_ptr<SubscriberImpl> subscriber, 85 const std::function<void(CCommonEventData)> &callback) 86 { 87 LOGI("Start Subscribe!") 88 auto errorCode = OHOS::EventFwk::CommonEventManager::NewSubscribeCommonEvent(subscriber); 89 if (errorCode == NO_ERROR) { 90 SetSubscribeInfo(subscriber, callback); 91 } 92 return errorCode; 93 } 94 Unsubscribe(std::shared_ptr<SubscriberImpl> subscriber)95 int32_t CommonEventManagerImpl::Unsubscribe(std::shared_ptr<SubscriberImpl> subscriber) 96 { 97 auto errorCode = OHOS::EventFwk::CommonEventManager::NewUnSubscribeCommonEvent(subscriber); 98 DeleteSubscribe(subscriber); 99 return errorCode; 100 } 101 102 }