1 /* 2 * Copyright (c) 2023 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 #ifndef OHOS_DISTRIBUTEDWANT_OPERATION_BUILDER_H 17 #define OHOS_DISTRIBUTEDWANT_OPERATION_BUILDER_H 18 19 #include <memory> 20 #include <string> 21 #include <vector> 22 #include "uri.h" 23 24 namespace OHOS { 25 namespace DistributedSchedule { 26 class DistributedOperation; 27 class DistributedOperationBuilder { 28 public: 29 DistributedOperationBuilder(); 30 ~DistributedOperationBuilder(); 31 32 /** 33 * @description: Sets a AbilityName in an DistributedOperationBuilder. 34 * @return Returns this DistributedOperationBuilder object containing the AbilityName. 35 */ 36 DistributedOperationBuilder& WithAbilityName(const std::string& abilityName); 37 38 /** 39 * @description: Sets a BundleName in an DistributedOperationBuilder. 40 * @return Returns this DistributedOperationBuilder object containing the BundleName. 41 */ 42 DistributedOperationBuilder& WithBundleName(const std::string& bundleName); 43 44 /** 45 * @description: Sets a DeviceId in an DistributedOperationBuilder. 46 * @return Returns this DistributedOperationBuilder object containing the DeviceId. 47 */ 48 DistributedOperationBuilder& WithDeviceId(const std::string& deviceID); 49 50 /** 51 * @description: Sets a Action in an DistributedOperationBuilder. 52 * @return Returns this DistributedOperationBuilder object containing the Action. 53 */ 54 DistributedOperationBuilder& WithAction(const std::string& action); 55 56 /** 57 * @description: Sets a Entities in an DistributedOperationBuilder. 58 * @return Returns this DistributedOperationBuilder object containing the Entities. 59 */ 60 DistributedOperationBuilder& WithEntities(const std::vector<std::string>& entities); 61 62 /** 63 * @description: Sets a Flags in an DistributedOperationBuilder. 64 * @return Returns this DistributedOperationBuilder object containing the Flags. 65 */ 66 DistributedOperationBuilder& WithFlags(unsigned int flags); 67 68 /** 69 * @description: Sets a Uri in an DistributedOperationBuilder. 70 * @return Returns this DistributedOperationBuilder object containing the Uri. 71 */ 72 DistributedOperationBuilder& WithUri(const OHOS::Uri& uri); 73 std::shared_ptr<DistributedOperation> build(); 74 75 private: 76 std::string abilityName_ = ""; 77 std::string action_ = ""; 78 std::string bundleName_ = ""; 79 std::string deviceId_ = ""; 80 std::vector<std::string> entities_ = {}; 81 unsigned int flags_ = 0; 82 OHOS::Uri uri_; 83 }; 84 } // namespace DistributedSchedule 85 } // namespace OHOS 86 #endif // OHOS_DISTRIBUTEDWANT_OPERATION_BUILDER_H