Home | History | Annotate | Download | only in shill
      1 //
      2 // Copyright (C) 2013 The Android Open Source Project
      3 //
      4 // Licensed under the Apache License, Version 2.0 (the "License");
      5 // you may not use this file except in compliance with the License.
      6 // You may obtain a copy of the License at
      7 //
      8 //      http://www.apache.org/licenses/LICENSE-2.0
      9 //
     10 // Unless required by applicable law or agreed to in writing, software
     11 // distributed under the License is distributed on an "AS IS" BASIS,
     12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 // See the License for the specific language governing permissions and
     14 // limitations under the License.
     15 //
     16 
     17 #ifndef SHILL_PROVIDER_INTERFACE_H_
     18 #define SHILL_PROVIDER_INTERFACE_H_
     19 
     20 #include <string>
     21 
     22 #include "shill/refptr_types.h"
     23 
     24 namespace shill {
     25 
     26 class Error;
     27 class KeyValueStore;
     28 
     29 // This is an interface for objects that creates and manages service objects.
     30 class ProviderInterface {
     31  public:
     32   virtual ~ProviderInterface() {}
     33 
     34   // Creates services from the entries within |profile|.
     35   virtual void CreateServicesFromProfile(const ProfileRefPtr& profile) = 0;
     36 
     37   // Finds a Service with similar properties to |args|.  The criteria
     38   // used are specific to the provider subclass.  Returns a reference
     39   // to a matching service if one exists.  Otherwise it returns a NULL
     40   // reference and populates |error|.
     41   virtual ServiceRefPtr FindSimilarService(
     42       const KeyValueStore& args, Error* error) const = 0;
     43 
     44   // Retrieves (see FindSimilarService) or creates a service with the
     45   // unique attributes in |args|.  The remaining attributes will be
     46   // populated (by Manager) via a later call to Service::Configure().
     47   // Returns a NULL reference and populates |error| on failure.
     48   virtual ServiceRefPtr GetService(const KeyValueStore& args, Error* error) = 0;
     49 
     50   // Creates a temporary service with the identifying properties populated
     51   // from |args|.  Callers outside of the Provider must never register
     52   // this service with the Manager or connect it since it was never added
     53   // to the provider's service list.
     54   virtual ServiceRefPtr CreateTemporaryService(
     55       const KeyValueStore& args, Error* error) = 0;
     56 
     57   // Create a temporary service for an entry |entry_name| within |profile|.
     58   // Callers outside of the Provider must never register this service with the
     59   // Manager or connect it since it was never added to the provider's service
     60   // list.
     61   virtual ServiceRefPtr CreateTemporaryServiceFromProfile(
     62       const ProfileRefPtr& profile,
     63       const std::string& entry_name,
     64       Error* error) = 0;
     65 
     66   // Starts the provider.
     67   virtual void Start() = 0;
     68 
     69   // Stops the provider (will de-register all services).
     70   virtual void Stop() = 0;
     71 };
     72 
     73 }  // namespace shill
     74 
     75 #endif  // SHILL_PROVIDER_INTERFACE_H_
     76