// // 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_