You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2010/03/07 01:27:11 UTC
svn commit: r919896 - in /incubator/trafficserver/traffic/trunk/iocore:
eventsystem/I_IOBuffer.h eventsystem/I_SocketManager.h eventsystem/I_VIO.h
eventsystem/P_UnixSocketManager.h eventsystem/P_VIO.h
net/P_UnixNetVConnection.h net/UnixNetVConnection.cc
Author: jplevyak
Date: Sun Mar 7 00:27:10 2010
New Revision: 919896
URL: http://svn.apache.org/viewvc?rev=919896&view=rev
Log:
TS-54: some variables should be 64-bit, remove ancient "monitoring" cruft
Modified:
incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_IOBuffer.h
incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_SocketManager.h
incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_VIO.h
incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_UnixSocketManager.h
incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_VIO.h
incubator/trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h
incubator/trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc
Modified: incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_IOBuffer.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_IOBuffer.h?rev=919896&r1=919895&r2=919896&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_IOBuffer.h (original)
+++ incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_IOBuffer.h Sun Mar 7 00:27:10 2010
@@ -1129,9 +1129,6 @@
*/
ink64 water_mark;
- // DEPRECATED
- //DLINK(MIOBuffer, link);
-
Ptr<IOBufferBlock> _writer;
IOBufferReader readers[MAX_MIOBUFFER_READERS];
Modified: incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_SocketManager.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_SocketManager.h?rev=919896&r1=919895&r2=919896&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_SocketManager.h (original)
+++ incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_SocketManager.h Sun Mar 7 00:27:10 2010
@@ -37,12 +37,8 @@
#include "I_EventSystem.h"
#include "I_Thread.h"
-extern int monitor_read_activity;
-extern int monitor_write_activity;
-
#define DEFAULT_OPEN_MODE 0644
-
struct Thread;
#define SOCKET int
@@ -59,25 +55,24 @@
int open(char *path, int oflag = O_RDWR | O_NDELAY | O_CREAT, mode_t mode = DEFAULT_OPEN_MODE);
// result is the number of bytes or -errno
- int read(int fd, void *buf, int len, void *pOLP = NULL);
- int vector_io(int fd, struct iovec *vector, size_t count, int read_request, void *pOLP = 0);
- int readv(int fd, struct iovec *vector, size_t count, teFDType eT = KeDontCare);
- int read_vector(int fd, struct iovec *vector, size_t count, void *pOLP = 0);
- int pread(int fd, void *buf, int len, off_t offset, char *tag = NULL);
- //
- int read_from_middle_of_file(int fd, void *buf, int len, off_t offset, char *tag = NULL);
+ ink64 read(int fd, void *buf, int len, void *pOLP = NULL);
+ ink64 vector_io(int fd, struct iovec *vector, size_t count, int read_request, void *pOLP = 0);
+ ink64 readv(int fd, struct iovec *vector, size_t count, teFDType eT = KeDontCare);
+ ink64 read_vector(int fd, struct iovec *vector, size_t count, void *pOLP = 0);
+ ink64 pread(int fd, void *buf, int len, off_t offset, char *tag = NULL);
int recv(int s, void *buf, int len, int flags);
int recvfrom(int fd, void *buf, int size, int flags, struct sockaddr *addr, socklen_t *addrlen);
- int write(int fd, void *buf, int len, void *pOLP = NULL);
- int writev(int fd, struct iovec *vector, size_t count, teFDType eT = KeDontCare);
- int write_vector(int fd, struct iovec *vector, size_t count, void *pOLP = 0);
- int pwrite(int fd, void *buf, int len, off_t offset, char *tag = NULL);
- int write_to_middle_of_file(int fd, void *buf, int len, off_t offset, char *tag = NULL);
+
+ ink64 write(int fd, void *buf, int len, void *pOLP = NULL);
+ ink64 writev(int fd, struct iovec *vector, size_t count, teFDType eT = KeDontCare);
+ ink64 write_vector(int fd, struct iovec *vector, size_t count, void *pOLP = 0);
+ ink64 pwrite(int fd, void *buf, int len, off_t offset, char *tag = NULL);
+
int send(int fd, void *buf, int len, int flags);
int sendto(int fd, void *buf, int len, int flags, struct sockaddr *to, int tolen);
int sendmsg(int fd, struct msghdr *m, int flags, void *pOLP = 0);
- int lseek(int fd, off_t offset, int whence);
+ ink64 lseek(int fd, off_t offset, int whence);
int fstat(int fd, struct stat *);
int unlink(char *buf);
int fsync(int fildes);
Modified: incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_VIO.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_VIO.h?rev=919896&r1=919895&r2=919896&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_VIO.h (original)
+++ incubator/trafficserver/traffic/trunk/iocore/eventsystem/I_VIO.h Sun Mar 7 00:27:10 2010
@@ -98,7 +98,7 @@
@return The number of bytes to be processed by the operation.
*/
- int ntodo();
+ ink64 ntodo();
/////////////////////
// buffer settings //
Modified: incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_UnixSocketManager.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_UnixSocketManager.h?rev=919896&r1=919895&r2=919896&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_UnixSocketManager.h (original)
+++ incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_UnixSocketManager.h Sun Mar 7 00:27:10 2010
@@ -35,9 +35,6 @@
#include "inktomi++.h"
#include "I_SocketManager.h"
-extern int monitor_read_activity;
-extern int monitor_write_activity;
-
//
// These limits are currently disabled
@@ -66,7 +63,6 @@
SocketManager::accept(int s, struct sockaddr *addr, socklen_t *addrlen)
{
int r;
-
do {
r =::accept(s, addr, addrlen);
if (likely(r >= 0))
@@ -77,12 +73,10 @@
return r;
}
-
inline int
SocketManager::open(char *path, int oflag, mode_t mode)
{
int s;
-
do {
s =::open(path, oflag, mode);
if (likely(s >= 0))
@@ -92,12 +86,10 @@
return s;
}
-
-inline int
+inline ink64
SocketManager::read(int fd, void *buf, int size, void *pOLP)
{
- int r = 0;
-
+ ink64 r;
do {
r =::read(fd, buf, size);
if (likely(r >= 0))
@@ -107,15 +99,10 @@
return r;
}
-
-void monitor_disk_read(int fd, void *buf, int size, off_t offset, char *tag);
-
-inline int
+inline ink64
SocketManager::pread(int fd, void *buf, int size, off_t offset, char *tag)
{
- if (monitor_read_activity)
- monitor_disk_read(fd, buf, size, offset, tag);
- int r = 0;
+ ink64 r;
do {
r =::pread(fd, buf, size, offset);
if (r < 0)
@@ -124,12 +111,10 @@
return r;
}
-
-inline int
+inline ink64
SocketManager::readv(int fd, struct iovec *vector, size_t count, teFDType eT)
{
- int r;
-
+ ink64 r;
do {
// coverity[tainted_data_argument]
if (likely((r =::readv(fd, vector, count)) >= 0))
@@ -139,17 +124,16 @@
return r;
}
-
-inline int
+inline ink64
SocketManager::vector_io(int fd, struct iovec *vector, size_t count, int read_request, void *pOLP)
{
const int max_iovecs_per_request = 16;
int n;
- int r = 0;
+ ink64 r = 0;
int n_vec;
- int bytes_xfered = 0;
+ ink64 bytes_xfered = 0;
int current_count;
- int current_request_bytes;
+ ink64 current_request_bytes;
for (n_vec = 0; n_vec < (int) count; n_vec += max_iovecs_per_request) {
current_count = min(max_iovecs_per_request, ((int) (count - n_vec)));
@@ -181,19 +165,16 @@
return bytes_xfered;
}
-
-inline int
+inline ink64
SocketManager::read_vector(int fd, struct iovec *vector, size_t count, void *pOLP)
{
return vector_io(fd, vector, count, 1, pOLP);
}
-
inline int
SocketManager::recv(int fd, void *buf, int size, int flags)
{
int r;
-
do {
if (unlikely((r =::recv(fd, (char *) buf, size, flags)) < 0)) {
r = -errno;
@@ -202,12 +183,10 @@
return r;
}
-
inline int
SocketManager::recvfrom(int fd, void *buf, int size, int flags, struct sockaddr *addr, socklen_t *addrlen)
{
int r;
-
do {
r =::recvfrom(fd, (char *) buf, size, flags, addr, addrlen);
if (unlikely(r < 0))
@@ -216,12 +195,10 @@
return r;
}
-
-inline int
+inline ink64
SocketManager::write(int fd, void *buf, int size, void *pOLP)
{
- int r;
-
+ ink64 r;
do {
if (likely((r =::write(fd, buf, size)) >= 0))
break;
@@ -230,16 +207,10 @@
return r;
}
-
-void monitor_disk_write(int fd, void *buf, int size, off_t offset, char *tag);
-
-inline int
+inline ink64
SocketManager::pwrite(int fd, void *buf, int size, off_t offset, char *tag)
{
- int r;
-
- if (monitor_write_activity)
- monitor_disk_write(fd, buf, size, offset, tag);
+ ink64 r;
do {
if (unlikely((r =::pwrite(fd, buf, size, offset)) < 0))
r = -errno;
@@ -247,12 +218,10 @@
return r;
}
-
-inline int
+inline ink64
SocketManager::writev(int fd, struct iovec *vector, size_t count, teFDType eT)
{
- int r;
-
+ ink64 r;
do {
if (likely((r =::writev(fd, vector, count)) >= 0))
break;
@@ -261,8 +230,7 @@
return r;
}
-
-inline int
+inline ink64
SocketManager::write_vector(int fd, struct iovec *vector, size_t count, void *pOLP)
{
return vector_io(fd, vector, count, 0, pOLP);
@@ -273,7 +241,6 @@
SocketManager::send(int fd, void *buf, int size, int flags)
{
int r;
-
do {
if (unlikely((r =::send(fd, (char *) buf, size, flags)) < 0))
r = -errno;
@@ -281,12 +248,10 @@
return r;
}
-
inline int
SocketManager::sendto(int fd, void *buf, int len, int flags, struct sockaddr *to, int tolen)
{
int r;
-
do {
if (unlikely((r =::sendto(fd, (char *) buf, len, flags, to, tolen)) < 0))
r = -errno;
@@ -294,12 +259,10 @@
return r;
}
-
inline int
SocketManager::sendmsg(int fd, struct msghdr *m, int flags, void *pOLP)
{
int r;
-
do {
if (unlikely((r =::sendmsg(fd, m, flags)) < 0))
r = -errno;
@@ -307,12 +270,10 @@
return r;
}
-
-inline int
+inline ink64
SocketManager::lseek(int fd, off_t offset, int whence)
{
- int r;
-
+ ink64 r;
do {
if ((r =::lseek(fd, offset, whence)) < 0)
r = -errno;
@@ -320,12 +281,10 @@
return r;
}
-
inline int
SocketManager::fstat(int fd, struct stat *buf)
{
int r;
-
do {
if ((r =::fstat(fd, buf)) >= 0)
break;
@@ -334,12 +293,10 @@
return r;
}
-
inline int
SocketManager::unlink(char *buf)
{
int r;
-
do {
if ((r =::unlink(buf)) < 0)
r = -errno;
@@ -347,12 +304,10 @@
return r;
}
-
inline int
SocketManager::fsync(int fildes)
{
int r;
-
do {
if ((r =::fsync(fildes)) < 0)
r = -errno;
@@ -360,12 +315,10 @@
return r;
}
-
inline int
SocketManager::ftruncate(int fildes, off_t length)
{
int r;
-
do {
if ((r =::ftruncate(fildes, length)) < 0)
r = -errno;
@@ -373,12 +326,10 @@
return r;
}
-
inline int
SocketManager::poll(struct pollfd *fds, unsigned long nfds, int timeout)
{
int r;
-
do {
if ((r =::poll(fds, nfds, timeout)) >= 0)
break;
@@ -392,7 +343,6 @@
SocketManager::epoll_create(int size)
{
int r;
-
if (size <= 0)
size = EPOLL_MAX_DESCRIPTOR_SIZE;
do {
@@ -403,12 +353,10 @@
return r;
}
-
inline int
SocketManager::epoll_close(int epfd)
{
int r = 0;
-
if (likely(epfd >= 0)) {
do {
if (likely((r =::close(epfd)) == 0))
@@ -419,12 +367,10 @@
return r;
}
-
inline int
SocketManager::epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
{
int r;
-
do {
if (likely((r =::epoll_ctl(epfd, op, fd, event)) == 0))
break;
@@ -433,12 +379,10 @@
return r;
}
-
inline int
SocketManager::epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)
{
int r;
-
do {
if ((r =::epoll_wait(epfd, events, maxevents, timeout)) >= 0)
break;
@@ -454,14 +398,12 @@
return ::kqueue();
}
-
inline int
SocketManager::kevent(int kq, const struct kevent *changelist, int nchanges,
struct kevent *eventlist, int nevents,
const struct timespec *timeout)
{
int r;
-
do {
r =::kevent(kq, changelist, nchanges,
eventlist, nevents, timeout);
@@ -470,7 +412,6 @@
}
r = -errno;
} while (errno == -EINTR);
-
return r;
}
#elif defined(USE_PORT)
@@ -527,7 +468,6 @@
return (r == 0 ? bsz : r);
}
-
inline int
SocketManager::get_rcvbuf_size(int s)
{
@@ -539,47 +479,40 @@
return (r == 0 ? bsz : r);
}
-
inline int
SocketManager::set_sndbuf_size(int s, int bsz)
{
return safe_setsockopt(s, SOL_SOCKET, SO_SNDBUF, (char *) &bsz, sizeof(bsz));
}
-
inline int
SocketManager::set_rcvbuf_size(int s, int bsz)
{
return safe_setsockopt(s, SOL_SOCKET, SO_RCVBUF, (char *) &bsz, sizeof(bsz));
}
-
inline int
SocketManager::getsockname(int s, struct sockaddr *sa, socklen_t *sz)
{
return::getsockname(s, sa, sz);
}
-
inline int
SocketManager::socket(int domain, int type, int protocol, bool bNonBlocking)
{
return::socket(domain, type, protocol);
}
-
inline int
SocketManager::mc_socket(int domain, int type, int protocol, bool bNonBlocking)
{
return SocketManager::socket(domain, type, protocol, bNonBlocking);
}
-
inline int
SocketManager::shutdown(int s, int how)
{
int res;
-
do {
if (unlikely((res =::shutdown(s, how)) < 0))
res = -errno;
@@ -587,12 +520,10 @@
return res;
}
-
inline int
SocketManager::lockf(int s, int f, long size)
{
int res;
-
do {
if ((res =::lockf(s, f, size)) < 0)
res = -errno;
@@ -600,12 +531,10 @@
return res;
}
-
inline int
SocketManager::dup(int s)
{
int res;
-
do {
if ((res =::dup(s)) >= 0)
break;
@@ -614,12 +543,10 @@
return res;
}
-
inline int
SocketManager::fast_close(int s)
{
int res;
-
do {
if ((res =::close(s)) >= 0)
break;
Modified: incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_VIO.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_VIO.h?rev=919896&r1=919895&r2=919896&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_VIO.h (original)
+++ incubator/trafficserver/traffic/trunk/iocore/eventsystem/P_VIO.h Sun Mar 7 00:27:10 2010
@@ -84,7 +84,7 @@
{
return (buffer.reader());
}
-inline int
+inline ink64
VIO::ntodo()
{
return nbytes - ndone;
Modified: incubator/trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h?rev=919896&r1=919895&r2=919896&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h (original)
+++ incubator/trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h Sun Mar 7 00:27:10 2010
@@ -73,7 +73,7 @@
Continuation *server_cont;
int retry_OOB_send(int, Event *);
- OOB_callback(ProxyMutex * m, NetVConnection * vc, Continuation * cont,
+ OOB_callback(ProxyMutex *m, NetVConnection *vc, Continuation *cont,
char *buf, int len):Continuation(m), data(buf), length(len), trigger(0)
{
server_vc = (UnixNetVConnection *) vc;
@@ -86,10 +86,10 @@
{
public:
- virtual VIO * do_io_read(Continuation * c, ink64 nbytes, MIOBuffer * buf);
- virtual VIO *do_io_write(Continuation * c, ink64 nbytes, IOBufferReader * buf, bool owner = false);
+ virtual VIO *do_io_read(Continuation *c, ink64 nbytes, MIOBuffer *buf);
+ virtual VIO *do_io_write(Continuation *c, ink64 nbytes, IOBufferReader *buf, bool owner = false);
- virtual Action *send_OOB(Continuation * cont, char *buf, int len);
+ virtual Action *send_OOB(Continuation *cont, char *buf, int len);
virtual void cancel_OOB();
virtual bool is_over_ssl() { return (false); }
@@ -120,8 +120,8 @@
virtual void cancel_inactivity_timeout();
// The public interface is VIO::reenable()
- virtual void reenable(VIO * vio);
- virtual void reenable_re(VIO * vio);
+ virtual void reenable(VIO *vio);
+ virtual void reenable_re(VIO *vio);
virtual SOCKET get_socket()
{
@@ -146,21 +146,19 @@
/////////////////////////
// UNIX implementation //
/////////////////////////
- void set_enabled(VIO * vio);
+ void set_enabled(VIO *vio);
void get_local_sa();
// these are not part of the pure virtual interface. They were
// added to reduce the amount of duplicate code in classes inherited
// from NetVConnection (SSL).
- virtual int sslStartHandShake(int event, int &err)
- {
+ virtual int sslStartHandShake(int event, int &err) {
(void) event;
(void) err;
return EVENT_ERROR;
}
- virtual bool getSSLHandShakeComplete()
- {
+ virtual bool getSSLHandShakeComplete() {
return (true);
}
virtual bool getSSLClientConnection()
@@ -171,18 +169,18 @@
{
(void) state;
}
- virtual void net_read_io(NetHandler * nh, EThread * lthread);
- virtual int loadBufferAndCallWrite(int towrite, int &wattempted, int &total_wrote, MIOBufferAccessor & buf);
- void readTempPriority(NetHandler * nh, int priority);
- void readDisable(NetHandler * nh);
- void readSignalError(NetHandler * nh, int err);
- void readSetPriority(NetHandler * nh, int priority);
- void readUpdatePriority(NetHandler * nh, int bytesRead, int nBytes, EThread * lthread);
- int readSignalDone(int event, NetHandler * nh);
+ virtual void net_read_io(NetHandler *nh, EThread *lthread);
+ virtual ink64 load_buffer_and_write(ink64 towrite, ink64 &wattempted, ink64 &total_wrote, MIOBufferAccessor & buf);
+ void readTempPriority(NetHandler *nh, int priority);
+ void readDisable(NetHandler *nh);
+ void readSignalError(NetHandler *nh, int err);
+ void readSetPriority(NetHandler *nh, int priority);
+ void readUpdatePriority(NetHandler *nh, int bytesRead, int nBytes, EThread *lthread);
+ int readSignalDone(int event, NetHandler *nh);
int readSignalAndUpdate(int event);
- void readReschedule(NetHandler * nh);
- void writeReschedule(NetHandler * nh);
- void netActivity(EThread * lthread);
+ void readReschedule(NetHandler *nh);
+ void writeReschedule(NetHandler *nh);
+ void netActivity(EThread *lthread);
Action *action()
{
@@ -233,12 +231,11 @@
ink_hrtime submit_time;
OOB_callback *oob_ptr;
- int startEvent(int event, Event * e);
- int acceptEvent(int event, Event * e);
- int mainEvent(int event, Event * e);
- virtual int connectUp(EThread * t);
-
- virtual void free(EThread * t);
+ int startEvent(int event, Event *e);
+ int acceptEvent(int event, Event *e);
+ int mainEvent(int event, Event *e);
+ virtual int connectUp(EThread *t);
+ virtual void free(EThread *t);
virtual ink_hrtime get_inactivity_timeout();
virtual ink_hrtime get_active_timeout();
Modified: incubator/trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc?rev=919896&r1=919895&r2=919896&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc (original)
+++ incubator/trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc Sun Mar 7 00:27:10 2010
@@ -216,7 +216,7 @@
NetState *s = &vc->read;
ProxyMutex *mutex = thread->mutex;
MIOBufferAccessor & buf = s->vio.buffer;
- int r = 0;
+ ink64 r = 0;
MUTEX_TRY_LOCK_FOR(lock, s->vio.mutex, thread, s->vio._cont);
@@ -235,17 +235,17 @@
ink_debug_assert(buf.writer());
// if there is nothing to do, disable connection
- int ntodo = s->vio.ntodo();
+ ink64 ntodo = s->vio.ntodo();
if (ntodo <= 0) {
read_disable(nh, vc);
return;
}
- int toread = buf.writer()->write_avail();
+ ink64 toread = buf.writer()->write_avail();
if (toread > ntodo)
toread = ntodo;
// read data
- int rattempted = 0, total_read = 0;
+ ink64 rattempted = 0, total_read = 0;
int niov = 0;
IOVec tiovec[NET_MAX_IOV];
if (toread) {
@@ -254,10 +254,10 @@
niov = 0;
rattempted = 0;
while (b && niov < NET_MAX_IOV) {
- int a = b->write_avail();
+ ink64 a = b->write_avail();
if (a > 0) {
tiovec[niov].iov_base = b->_end;
- int togo = toread - total_read - rattempted;
+ ink64 togo = toread - total_read - rattempted;
if (a > togo)
a = togo;
tiovec[niov].iov_len = a;
@@ -279,7 +279,7 @@
if (vc->loggingEnabled()) {
char message[256];
- snprintf(message, sizeof(message), "rval: %d toread: %d ntodo: %d total_read: %d", r, toread, ntodo, total_read);
+ snprintf(message, sizeof(message), "rval: %lld toread: %lld ntodo: %lld total_read: %lld", r, toread, ntodo, total_read);
vc->addLogMessage(message);
}
// if we have already moved some bytes successfully, summarize in r
@@ -416,7 +416,7 @@
return;
}
// If there is nothing to do, disable
- int ntodo = s->vio.ntodo();
+ ink64 ntodo = s->vio.ntodo();
if (ntodo <= 0) {
write_disable(nh, vc);
return;
@@ -426,7 +426,7 @@
ink_debug_assert(buf.writer());
// Calculate amount to write
- int towrite = buf.reader()->read_avail();
+ ink64 towrite = buf.reader()->read_avail();
if (towrite > ntodo)
towrite = ntodo;
int signalled = 0;
@@ -454,12 +454,12 @@
return;
}
- int total_wrote = 0, wattempted = 0;
- int r = vc->loadBufferAndCallWrite(towrite, wattempted, total_wrote, buf);
+ ink64 total_wrote = 0, wattempted = 0;
+ ink64 r = vc->load_buffer_and_write(towrite, wattempted, total_wrote, buf);
if (vc->loggingEnabled()) {
char message[256];
- snprintf(message, sizeof(message), "rval: %d towrite: %d ntodo: %d total_wrote: %d", r, towrite, ntodo,
- total_wrote);
+ snprintf(message, sizeof(message), "rval: %lld towrite: %lld ntodo: %lld total_wrote: %lld",
+ r, towrite, ntodo, total_wrote);
vc->addLogMessage(message);
}
// if we have already moved some bytes successfully, summarize in r
@@ -526,10 +526,6 @@
{
addLogMessage("do_io_read");
ink_assert(!closed);
- if (buf)
- read.vio.buffer.writer_for(buf);
- else
- read.vio.buffer.clear();
read.vio.op = VIO::READ;
read.vio.mutex = c->mutex;
read.vio._cont = c;
@@ -537,38 +533,39 @@
read.vio.ndone = 0;
read.vio.vc_server = (VConnection *) this;
if (buf) {
- if (!read.enabled)
+ read.vio.buffer.writer_for(buf);
+ if (nbytes && !read.enabled)
read.vio.reenable();
- } else
+ } else {
+ read.vio.buffer.clear();
disable_read(this);
+ }
return &read.vio;
}
VIO *
-UnixNetVConnection::do_io_write(Continuation *acont, ink64 anbytes, IOBufferReader *abuffer, bool owner)
+UnixNetVConnection::do_io_write(Continuation *c, ink64 nbytes, IOBufferReader *reader, bool owner)
{
addLogMessage("do_io_write");
ink_assert(!closed);
- if (abuffer) {
- ink_assert(!owner);
- write.vio.buffer.reader_for(abuffer);
- } else
- write.vio.buffer.clear();
write.vio.op = VIO::WRITE;
- write.vio.mutex = acont->mutex;
- write.vio._cont = acont;
- write.vio.nbytes = anbytes;
+ write.vio.mutex = c->mutex;
+ write.vio._cont = c;
+ write.vio.nbytes = nbytes;
write.vio.ndone = 0;
write.vio.vc_server = (VConnection *) this;
- if (abuffer) {
- if (!write.enabled)
+ if (reader) {
+ ink_assert(!owner);
+ write.vio.buffer.reader_for(reader);
+ if (nbytes && !write.enabled)
write.vio.reenable();
- } else
+ } else {
+ write.vio.buffer.clear();
disable_write(this);
+ }
return &write.vio;
}
-
void
UnixNetVConnection::do_io_close(int alerrno /* = -1 */ )
{
@@ -798,7 +795,6 @@
SET_HANDLER((NetVConnHandler) & UnixNetVConnection::startEvent);
}
-
// Private methods
void
@@ -826,18 +822,18 @@
// I could overwrite it for the SSL implementation
// (SSL read does not support overlapped i/o)
// without duplicating all the code in write_to_net.
-int
-UnixNetVConnection::loadBufferAndCallWrite(int towrite, int &wattempted, int &total_wrote, MIOBufferAccessor & buf)
+ink64
+UnixNetVConnection::load_buffer_and_write(ink64 towrite, ink64 &wattempted, ink64 &total_wrote, MIOBufferAccessor & buf)
{
- int r = 0;
- int offset = buf.entry->start_offset;
+ ink64 r = 0;
+ ink64 offset = buf.entry->start_offset;
IOBufferBlock *b = buf.entry->block;
do {
IOVec tiovec[NET_MAX_IOV];
int niov = 0, total_wrote_last = total_wrote;
while (b && niov < NET_MAX_IOV) {
// check if we have done this block
- int l = b->read_avail();
+ ink64 l = b->read_avail();
l -= offset;
if (l <= 0) {
offset = -l;
@@ -845,7 +841,7 @@
continue;
}
// check if to amount to write exceeds that in this buffer
- int wavail = towrite - total_wrote;
+ ink64 wavail = towrite - total_wrote;
if (l > wavail)
l = wavail;
if (!l)