| // |
| // Copyright (C) 2013 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| |
| #ifndef SHILL_PROVIDER_INTERFACE_H_ |
| #define SHILL_PROVIDER_INTERFACE_H_ |
| |
| #include <string> |
| |
| #include "shill/refptr_types.h" |
| |
| namespace shill { |
| |
| class Error; |
| class KeyValueStore; |
| |
| // This is an interface for objects that creates and manages service objects. |
| class ProviderInterface { |
| public: |
| virtual ~ProviderInterface() {} |
| |
| // Creates services from the entries within |profile|. |
| virtual void CreateServicesFromProfile(const ProfileRefPtr& profile) = 0; |
| |
| // Finds a Service with similar properties to |args|. The criteria |
| // used are specific to the provider subclass. Returns a reference |
| // to a matching service if one exists. Otherwise it returns a NULL |
| // reference and populates |error|. |
| virtual ServiceRefPtr FindSimilarService( |
| const KeyValueStore& args, Error* error) const = 0; |
| |
| // Retrieves (see FindSimilarService) or creates a service with the |
| // unique attributes in |args|. The remaining attributes will be |
| // populated (by Manager) via a later call to Service::Configure(). |
| // Returns a NULL reference and populates |error| on failure. |
| virtual ServiceRefPtr GetService(const KeyValueStore& args, Error* error) = 0; |
| |
| // Creates a temporary service with the identifying properties populated |
| // from |args|. Callers outside of the Provider must never register |
| // this service with the Manager or connect it since it was never added |
| // to the provider's service list. |
| virtual ServiceRefPtr CreateTemporaryService( |
| const KeyValueStore& args, Error* error) = 0; |
| |
| // Create a temporary service for an entry |entry_name| within |profile|. |
| // Callers outside of the Provider must never register this service with the |
| // Manager or connect it since it was never added to the provider's service |
| // list. |
| virtual ServiceRefPtr CreateTemporaryServiceFromProfile( |
| const ProfileRefPtr& profile, |
| const std::string& entry_name, |
| Error* error) = 0; |
| |
| // Starts the provider. |
| virtual void Start() = 0; |
| |
| // Stops the provider (will de-register all services). |
| virtual void Stop() = 0; |
| }; |
| |
| } // namespace shill |
| |
| #endif // SHILL_PROVIDER_INTERFACE_H_ |