]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/mgr/StoreToCommWriter.cc
SourceFormat Enforcement
[thirdparty/squid.git] / src / mgr / StoreToCommWriter.cc
index 52aed325d8e738043bfdf5346de658611704dbec..9a179d305052de306dae18b11f113ac32d655df3 100644 (file)
@@ -5,27 +5,27 @@
  *
  */
 
-#include "config.h"
+#include "squid.h"
 #include "base/TextException.h"
+#include "comm/Connection.h"
 #include "CommCalls.h"
 #include "comm/Write.h"
 #include "ipc/FdNotes.h"
 #include "mgr/StoreToCommWriter.h"
+#include "protos.h"
 #include "StoreClient.h"
 #include "Store.h"
 
-
 CBDATA_NAMESPACED_CLASS_INIT(Mgr, StoreToCommWriter);
 
-
-Mgr::StoreToCommWriter::StoreToCommWriter(int aFd, StoreEntry* anEntry):
+Mgr::StoreToCommWriter::StoreToCommWriter(const Comm::ConnectionPointer &conn, StoreEntry* anEntry):
         AsyncJob("Mgr::StoreToCommWriter"),
-        fd(aFd), entry(anEntry), sc(NULL), writeOffset(0), closer(NULL)
+        clientConnection(conn), entry(anEntry), sc(NULL), writeOffset(0), closer(NULL)
 {
-    debugs(16, 6, HERE << "FD " << fd);
+    debugs(16, 6, HERE << clientConnection);
     closer = asyncCall(16, 5, "Mgr::StoreToCommWriter::noteCommClosed",
                        CommCbMemFunT<StoreToCommWriter, CommCloseCbParams>(this, &StoreToCommWriter::noteCommClosed));
-    comm_add_close_handler(fd, closer);
+    comm_add_close_handler(clientConnection->fd, closer);
 }
 
 Mgr::StoreToCommWriter::~StoreToCommWriter()
@@ -40,13 +40,12 @@ Mgr::StoreToCommWriter::~StoreToCommWriter()
 void
 Mgr::StoreToCommWriter::close()
 {
-    if (fd >= 0) {
+    if (Comm::IsConnOpen(clientConnection)) {
         if (closer != NULL) {
-            comm_remove_close_handler(fd, closer);
+            comm_remove_close_handler(clientConnection->fd, closer);
             closer = NULL;
         }
-        comm_close(fd);
-        fd = -1;
+        clientConnection->close();
     }
 }
 
@@ -54,7 +53,7 @@ void
 Mgr::StoreToCommWriter::start()
 {
     debugs(16, 6, HERE);
-    Must(fd >= 0);
+    Must(Comm::IsConnOpen(clientConnection));
     Must(entry != NULL);
     entry->registerAbort(&StoreToCommWriter::Abort, this);
     sc = storeClientListAdd(entry, this);
@@ -102,14 +101,14 @@ void
 Mgr::StoreToCommWriter::scheduleCommWrite(const StoreIOBuffer& ioBuf)
 {
     debugs(16, 6, HERE);
-    Must(fd >= 0);
+    Must(Comm::IsConnOpen(clientConnection));
     Must(ioBuf.data != NULL);
     // write filled buffer
     typedef CommCbMemFunT<StoreToCommWriter, CommIoCbParams> MyDialer;
     AsyncCall::Pointer writer =
         asyncCall(16, 5, "Mgr::StoreToCommWriter::noteCommWrote",
                   MyDialer(this, &StoreToCommWriter::noteCommWrote));
-    Comm::Write(fd, ioBuf.data, ioBuf.length, writer, NULL);
+    Comm::Write(clientConnection, ioBuf.data, ioBuf.length, writer, NULL);
 }
 
 void
@@ -117,7 +116,7 @@ Mgr::StoreToCommWriter::noteCommWrote(const CommIoCbParams& params)
 {
     debugs(16, 6, HERE);
     Must(params.flag == COMM_OK);
-    Must(params.fd == fd);
+    Must(clientConnection != NULL && params.fd == clientConnection->fd);
     Must(params.size != 0);
     writeOffset += params.size;
     if (!doneAll())
@@ -128,8 +127,7 @@ void
 Mgr::StoreToCommWriter::noteCommClosed(const CommCloseCbParams& params)
 {
     debugs(16, 6, HERE);
-    Must(fd == params.fd);
-    fd = -1;
+    Must(!Comm::IsConnOpen(clientConnection));
     mustStop("commClosed");
 }
 
@@ -161,6 +159,6 @@ void
 Mgr::StoreToCommWriter::Abort(void* param)
 {
     StoreToCommWriter* mgrWriter = static_cast<StoreToCommWriter*>(param);
-    if (mgrWriter->fd >= 0)
-        comm_close(mgrWriter->fd);
+    if (Comm::IsConnOpen(mgrWriter->clientConnection))
+        mgrWriter->clientConnection->close();
 }