*
*/
-#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()
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();
}
}
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);
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
{
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())
Mgr::StoreToCommWriter::noteCommClosed(const CommCloseCbParams& params)
{
debugs(16, 6, HERE);
- Must(fd == params.fd);
- fd = -1;
+ Must(!Comm::IsConnOpen(clientConnection));
mustStop("commClosed");
}
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();
}