+/*
+ * Copyright (C) 1996-2017 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.
+ */
+
#include "squid.h"
-#include "fde.h"
+#include "anyp/PortCfg.h"
#include "comm/Connection.h"
#include "CommCalls.h"
+#include "fde.h"
+#include "globals.h"
/* CommCommonCbParams */
CommCommonCbParams::CommCommonCbParams(void *aData):
- data(cbdataReference(aData)), fd(-1), xerrno(0), flag(COMM_OK)
+ data(cbdataReference(aData)), conn(), flag(Comm::OK), xerrno(0), fd(-1)
{
}
CommCommonCbParams::CommCommonCbParams(const CommCommonCbParams &p):
- data(cbdataReference(p.data)), fd(p.fd), xerrno(p.xerrno), flag(p.flag)
+ data(cbdataReference(p.data)), conn(p.conn), flag(p.flag), xerrno(p.xerrno), fd(p.fd)
{
}
void
CommCommonCbParams::print(std::ostream &os) const
{
- os << "FD " << fd;
+ if (conn != NULL)
+ os << conn;
+ else
+ os << "FD " << fd;
+
if (xerrno)
os << ", errno=" << xerrno;
- if (flag != COMM_OK)
+ if (flag != Comm::OK)
os << ", flag=" << flag;
if (data)
os << ", data=" << data;
}
-
/* CommAcceptCbParams */
-CommAcceptCbParams::CommAcceptCbParams(void *aData): CommCommonCbParams(aData),
- nfd(-1)
+CommAcceptCbParams::CommAcceptCbParams(void *aData):
+ CommCommonCbParams(aData), xaction()
{
}
CommAcceptCbParams::print(std::ostream &os) const
{
CommCommonCbParams::print(os);
- if (nfd >= 0)
- os << ", newFD " << nfd;
- os << ", " << details;
-}
+ if (xaction != NULL)
+ os << ", " << xaction->id;
+}
/* CommConnectCbParams */
CommConnectCbParams::CommConnectCbParams(void *aData):
- CommCommonCbParams(aData)
+ CommCommonCbParams(aData)
{
}
// drop the call if the call was scheduled before comm_close but
// is being fired after comm_close
if (fd >= 0 && fd_table[fd].closing()) {
- debugs(5, 3, HERE << "droppin late connect call: FD " << fd);
+ debugs(5, 3, HERE << "dropping late connect call: FD " << fd);
return false;
}
return true; // now we are in sync and can handle the call
}
-void
-CommConnectCbParams::print(std::ostream &os) const
-{
- CommCommonCbParams::print(os);
- if (conn != NULL)
- os << ", from my " << conn->local << " to " << conn->remote;
-}
-
/* CommIoCbParams */
CommIoCbParams::CommIoCbParams(void *aData): CommCommonCbParams(aData),
- buf(NULL), size(0)
+ buf(NULL), size(0)
{
}
{
// change parameters if the call was scheduled before comm_close but
// is being fired after comm_close
- if (fd >= 0 && fd_table[fd].closing() && flag != COMM_ERR_CLOSING) {
- debugs(5, 3, HERE << "converting late call to COMM_ERR_CLOSING: FD " << fd);
- flag = COMM_ERR_CLOSING;
- size = 0;
+ if ((conn->fd < 0 || fd_table[conn->fd].closing()) && flag != Comm::ERR_CLOSING) {
+ debugs(5, 3, HERE << "converting late call to Comm::ERR_CLOSING: " << conn);
+ flag = Comm::ERR_CLOSING;
}
return true; // now we are in sync and can handle the call
}
-
void
CommIoCbParams::print(std::ostream &os) const
{
}
}
-
/* CommCloseCbParams */
CommCloseCbParams::CommCloseCbParams(void *aData):
- CommCommonCbParams(aData)
+ CommCommonCbParams(aData)
{
}
/* CommTimeoutCbParams */
CommTimeoutCbParams::CommTimeoutCbParams(void *aData):
- CommCommonCbParams(aData)
+ CommCommonCbParams(aData)
{
}
+/* FdeCbParams */
+
+FdeCbParams::FdeCbParams(void *aData):
+ CommCommonCbParams(aData)
+{
+}
/* CommAcceptCbPtrFun */
CommAcceptCbPtrFun::CommAcceptCbPtrFun(IOACB *aHandler,
const CommAcceptCbParams &aParams):
- CommDialerParamsT<CommAcceptCbParams>(aParams),
- handler(aHandler)
+ CommDialerParamsT<CommAcceptCbParams>(aParams),
+ handler(aHandler)
+{
+}
+
+CommAcceptCbPtrFun::CommAcceptCbPtrFun(const CommAcceptCbPtrFun &o):
+ CommDialerParamsT<CommAcceptCbParams>(o.params),
+ handler(o.handler)
{
}
void
CommAcceptCbPtrFun::dial()
{
- handler(params.fd, params.nfd, params.details, params.flag, params.xerrno, params.data);
+ handler(params);
}
void
os << ')';
}
-
/* CommConnectCbPtrFun */
CommConnectCbPtrFun::CommConnectCbPtrFun(CNCB *aHandler,
const CommConnectCbParams &aParams):
- CommDialerParamsT<CommConnectCbParams>(aParams),
- handler(aHandler)
+ CommDialerParamsT<CommConnectCbParams>(aParams),
+ handler(aHandler)
{
}
os << ')';
}
-
/* CommIoCbPtrFun */
CommIoCbPtrFun::CommIoCbPtrFun(IOCB *aHandler, const CommIoCbParams &aParams):
- CommDialerParamsT<CommIoCbParams>(aParams),
- handler(aHandler)
+ CommDialerParamsT<CommIoCbParams>(aParams),
+ handler(aHandler)
{
}
void
CommIoCbPtrFun::dial()
{
- handler(params.fd, params.buf, params.size, params.flag, params.xerrno, params.data);
+ handler(params.conn, params.buf, params.size, params.flag, params.xerrno, params.data);
}
void
os << ')';
}
-
/* CommCloseCbPtrFun */
-CommCloseCbPtrFun::CommCloseCbPtrFun(PF *aHandler,
+CommCloseCbPtrFun::CommCloseCbPtrFun(CLCB *aHandler,
const CommCloseCbParams &aParams):
- CommDialerParamsT<CommCloseCbParams>(aParams),
- handler(aHandler)
+ CommDialerParamsT<CommCloseCbParams>(aParams),
+ handler(aHandler)
{
}
void
CommCloseCbPtrFun::dial()
{
- handler(params.fd, params.data);
+ handler(params);
}
void
/* CommTimeoutCbPtrFun */
-CommTimeoutCbPtrFun::CommTimeoutCbPtrFun(PF *aHandler,
+CommTimeoutCbPtrFun::CommTimeoutCbPtrFun(CTCB *aHandler,
const CommTimeoutCbParams &aParams):
- CommDialerParamsT<CommTimeoutCbParams>(aParams),
- handler(aHandler)
+ CommDialerParamsT<CommTimeoutCbParams>(aParams),
+ handler(aHandler)
{
}
void
CommTimeoutCbPtrFun::dial()
{
- handler(params.fd, params.data);
+ handler(params);
}
void
params.print(os);
os << ')';
}
+
+/* FdeCbPtrFun */
+
+FdeCbPtrFun::FdeCbPtrFun(FDECB *aHandler, const FdeCbParams &aParams) :
+ CommDialerParamsT<FdeCbParams>(aParams),
+ handler(aHandler)
+{
+}
+
+void
+FdeCbPtrFun::dial()
+{
+ handler(params);
+}
+
+void
+FdeCbPtrFun::print(std::ostream &os) const
+{
+ os << '(';
+ params.print(os);
+ os << ')';
+}
+