1060ff233Sopenharmony_ci/* 2060ff233Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3060ff233Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4060ff233Sopenharmony_ci * you may not use this file except in compliance with the License. 5060ff233Sopenharmony_ci * You may obtain a copy of the License at 6060ff233Sopenharmony_ci * 7060ff233Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8060ff233Sopenharmony_ci * 9060ff233Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10060ff233Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11060ff233Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12060ff233Sopenharmony_ci * See the License for the specific language governing permissions and 13060ff233Sopenharmony_ci * limitations under the License. 14060ff233Sopenharmony_ci */ 15060ff233Sopenharmony_ci 16060ff233Sopenharmony_ci#ifndef ISESSION_SERVICE_H 17060ff233Sopenharmony_ci#define ISESSION_SERVICE_H 18060ff233Sopenharmony_ci 19060ff233Sopenharmony_ci#include <shared_mutex> 20060ff233Sopenharmony_ci#include "CommDefs.h" 21060ff233Sopenharmony_ci#include "ISessionListener.h" 22060ff233Sopenharmony_ci#include "Session.h" 23060ff233Sopenharmony_ci 24060ff233Sopenharmony_cinamespace Communication { 25060ff233Sopenharmony_cinamespace SoftBus { 26060ff233Sopenharmony_ciclass COMM_EXPORT ISessionService { 27060ff233Sopenharmony_cipublic: 28060ff233Sopenharmony_ci static std::shared_ptr<ISessionService> GetInstance(); 29060ff233Sopenharmony_ci 30060ff233Sopenharmony_ci ISessionService() = default; 31060ff233Sopenharmony_ci virtual ~ISessionService() = default; 32060ff233Sopenharmony_ci 33060ff233Sopenharmony_ci virtual int CreateSessionServer(const std::string &pkgName, const std::string &sessionName, 34060ff233Sopenharmony_ci std::shared_ptr<ISessionListener> listener) = 0; 35060ff233Sopenharmony_ci 36060ff233Sopenharmony_ci virtual int RemoveSessionServer(const std::string &pkgName, const std::string &sessionName) = 0; 37060ff233Sopenharmony_ci 38060ff233Sopenharmony_ci virtual std::shared_ptr<Session> OpenSession(const std::string &mySessionName, const std::string &peerSessionName, 39060ff233Sopenharmony_ci const std::string &peerNetworkId, const std::string &groupId, int flags) = 0; 40060ff233Sopenharmony_ci 41060ff233Sopenharmony_ci virtual int CloseSession(std::shared_ptr<Session> session) = 0; 42060ff233Sopenharmony_ci 43060ff233Sopenharmony_ci virtual int GrantPermission(int uid, int pid, const std::string &busName) = 0; 44060ff233Sopenharmony_ci 45060ff233Sopenharmony_ci virtual int RemovePermission(const std::string &busName) = 0; 46060ff233Sopenharmony_ci 47060ff233Sopenharmony_ciprivate: 48060ff233Sopenharmony_ci NO_COPY_AND_ASSIGN(ISessionService); 49060ff233Sopenharmony_ci static std::shared_ptr<ISessionService> instance_; 50060ff233Sopenharmony_ci static std::shared_mutex instanceMutex_; 51060ff233Sopenharmony_ci}; 52060ff233Sopenharmony_ci} // namespace SoftBus 53060ff233Sopenharmony_ci} // namespace Communication 54060ff233Sopenharmony_ci 55060ff233Sopenharmony_ci#endif // ISESSION_SERVICE_H 56