]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/adaptation/ecap/ServiceRep.h
Source Format Enforcement (#532)
[thirdparty/squid.git] / src / adaptation / ecap / ServiceRep.h
index 1eadd36754c2f9d2a05352567320c05c15019bd9..a2ff8f944efb23839cc20ec2d3f3a896d0671ab4 100644 (file)
@@ -1,16 +1,23 @@
-
 /*
- * $Id$
+ * Copyright (C) 1996-2020 The Squid Software Foundation and contributors
+ *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
  */
 
+/* DEBUG: section 93    eCAP Interface */
+
 #ifndef SQUID_ECAP_SERVICE_REP_H
 #define SQUID_ECAP_SERVICE_REP_H
 
-#include "adaptation/Service.h"
 #include "adaptation/forward.h"
+#include "adaptation/Service.h"
 #include <libecap/common/forward.h>
 #include <libecap/common/memory.h>
 
+namespace Adaptation
+{
 namespace Ecap
 {
 
@@ -21,34 +28,43 @@ namespace Ecap
 class ServiceRep : public Adaptation::Service
 {
 public:
-    ServiceRep(const Adaptation::ServiceConfig &config);
+    explicit ServiceRep(const ServiceConfigPointer &aConfig);
     virtual ~ServiceRep();
 
     typedef libecap::shared_ptr<libecap::adapter::Service> AdapterService;
-    void noteService(const AdapterService &s);
 
+    /* Adaptation::Service API */
     virtual void finalize();
-
-    // call when the service is no longer needed or valid
-    virtual void invalidate();
-
     virtual bool probed() const;
     virtual bool up() const;
-
-    Adaptation::Initiate *makeXactLauncher(Adaptation::Initiator *, HttpMsg *virginHeader, HttpRequest *virginCause);
-
-    // the methods below can only be called on an up() service
-    virtual bool wantsUrl(const String &urlPath) const;
-
-    // called by transactions to report service failure
+    virtual Adaptation::Initiate *makeXactLauncher(Http::Message *virginHeader, HttpRequest *virginCause, AccessLogEntry::Pointer &alp);
+    virtual bool wantsUrl(const SBuf &urlPath) const;
     virtual void noteFailure();
-
     virtual const char *status() const;
+    virtual void detach();
+    virtual bool detached() const;
+
+protected:
+    void tryConfigureAndStart();
+    bool handleFinalizeFailure(const char *error);
 
 private:
     AdapterService theService; // the actual adaptation service we represent
+    bool           isDetached;
 };
 
+/// register loaded eCAP module service
+void RegisterAdapterService(const ServiceRep::AdapterService& adapterService);
+/// unregister loaded eCAP module service by service uri
+void UnregisterAdapterService(const String& serviceUri);
+
+/// returns loaded eCAP module service by service uri
+ServiceRep::AdapterService FindAdapterService(const String& serviceUri);
+
+/// check for loaded eCAP services without matching ecap_service in squid.conf
+void CheckUnusedAdapterServices(const Services& services);
 } // namespace Ecap
+} // namespace Adaptation
 
 #endif /* SQUID_ECAP_SERVICE_REP_H */
+