From: robertc <> Date: Thu, 6 Feb 2003 04:06:30 +0000 (+0000) Subject: add missing files X-Git-Tag: SQUID_3_0_PRE1~389 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=88a03fda9908a38f21bcdb88c461206c9ec8bb67;p=thirdparty%2Fsquid.git add missing files --- diff --git a/src/DelayUser.cc b/src/DelayUser.cc new file mode 100644 index 0000000000..78475e8616 --- /dev/null +++ b/src/DelayUser.cc @@ -0,0 +1,208 @@ + +/* + * $Id: DelayUser.cc,v 1.1 2003/02/05 21:06:30 robertc Exp $ + * + * DEBUG: section 77 Delay Pools + * AUTHOR: Robert Collins + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + * + * Copyright (c) 2003, Robert Collins + */ + +#include "config.h" + +#if DELAY_POOLS +#include "squid.h" +#include "DelayUser.h" +#include "authenticate.h" +#include "NullDelayId.h" +#include "Store.h" + +void * +DelayUser::operator new(size_t size) +{ + DelayPools::MemoryUsed += sizeof (DelayUser); + return ::operator new (size); +} + +void +DelayUser::operator delete (void *address) +{ + DelayPools::MemoryUsed -= sizeof (DelayUser); + ::operator delete (address); +} + +void +DelayUser::deleteSelf() const +{ + delete this; +} + +DelayUser::DelayUser() +{ + DelayPools::registerForUpdates (this); +} + +DelayUser::~DelayUser() +{ + DelayPools::deregisterForUpdates (this); +} + +void +DelayUser::stats(StoreEntry * sentry) +{ + spec.stats (sentry, "Per User"); + if (spec.restore_bps == -1) + return; + storeAppendPrintf(sentry, "\t\tCurrent: "); + if (!buckets.size()) { + storeAppendPrintf (sentry, "Not used yet.\n\n"); + return; + } + iterator pos = buckets.begin(); + while (pos != buckets.end()) { + (*pos)->stats(sentry); + ++pos; + } + storeAppendPrintf(sentry, "\n\n"); +} + +void +DelayUser::dump(StoreEntry *entry) const +{ + spec.dump(entry); +} + +void +DelayUser::update(int incr) +{ + iterator pos = buckets.begin(); + while (pos != buckets.end()) { + (*pos)->theBucket.update(spec, incr); + ++pos; + } +} + +void +DelayUser::parse() +{ + spec.parse(); +} + +DelayIdComposite::Pointer +DelayUser::id(struct in_addr &src_addr, AuthUserRequest *authRequest) +{ + if (!authRequest) + return new NullDelayId; + return new Id(this, authRequest->auth_user); +} + +void * +DelayUser::Id::operator new(size_t size) +{ + DelayPools::MemoryUsed += sizeof (Id); + return ::operator new (size); +} + +void +DelayUser::Id::operator delete (void *address) +{ + DelayPools::MemoryUsed -= sizeof (Id); + ::operator delete (address); +} + +void +DelayUser::Id::deleteSelf() const +{ + delete this; +} + +void * +DelayUserBucket::operator new(size_t size) +{ + DelayPools::MemoryUsed += sizeof (DelayUserBucket); + return ::operator new (size); +} + +void +DelayUserBucket::operator delete (void *address) +{ + DelayPools::MemoryUsed -= sizeof (DelayUserBucket); + ::operator delete (address); +} + +DelayUserBucket::DelayUserBucket(AuthUser *aUser) : authUser (aUser) +{ + authenticateAuthUserLock (authUser); +} + +DelayUserBucket::~DelayUserBucket() +{ + authenticateAuthUserUnlock(authUser); +} + +void +DelayUserBucket::stats (StoreEntry *entry) const +{ + storeAppendPrintf(entry, " %s:", authUser->username()); + theBucket.stats (entry); +} + +DelayUser::Id::Id(DelayUser::Pointer aDelayUser,AuthUser *aUser) : theUser(aDelayUser) +{ + DelayUser::iterator pos = theUser->buckets.begin(); + while (pos != theUser->buckets.end()) { + if ((*pos)->authUser == aUser) { + theBucket = (*pos); + return; + } + ++pos; + } + + theBucket = new DelayUserBucket(aUser); + theBucket->theBucket.init(theUser->spec); + theUser->buckets.push_back (theBucket); +} + +DelayUser::Id::~Id() +{ +} + +int +DelayUser::Id::bytesWanted (int min, int max) const +{ + return theBucket->theBucket.bytesWanted(min,max); +} + +void +DelayUser::Id::bytesIn(int qty) +{ + theBucket->theBucket.bytesIn(qty); +} +#endif diff --git a/src/DelayUser.h b/src/DelayUser.h new file mode 100644 index 0000000000..c9a079049b --- /dev/null +++ b/src/DelayUser.h @@ -0,0 +1,96 @@ + +/* + * $Id: DelayUser.h,v 1.1 2003/02/05 21:06:30 robertc Exp $ + * + * DEBUG: section 77 Delay Pools + * AUTHOR: Robert Collins + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + * + * Copyright (c) 2003, Robert Collins + */ + +#include "config.h" + +#ifndef DELAYUSER_H +#define DELAYUSER_H + +#include "squid.h" +#include "authenticate.h" +#include "CompositePoolNode.h" +#include "DelayIdComposite.h" +#include "DelayBucket.h" +#include "DelaySpec.h" +#include "Array.h" + +class DelayUserBucket : public RefCountable { + public: + typedef RefCount Pointer; + void *operator new(size_t); + void operator delete (void *); + virtual void deleteSelf() const {delete this;} + void stats(StoreEntry *)const; + DelayUserBucket(AuthUser *); + ~DelayUserBucket(); + DelayBucket theBucket; + AuthUser *authUser; +}; + +class DelayUser : public CompositePoolNode { +public: + typedef RefCount Pointer; + void *operator new(size_t); + void operator delete (void *); + virtual void deleteSelf() const; + DelayUser(); + virtual ~DelayUser(); + virtual void stats(StoreEntry * sentry); + virtual void dump(StoreEntry *entry) const; + virtual void update(int incr); + virtual void parse(); + virtual DelayIdComposite::Pointer id(struct in_addr &src_addr, AuthUserRequest *); + +private: + class Id:public DelayIdComposite { + public: + void *operator new(size_t); + void operator delete (void *); + virtual void deleteSelf() const; + Id (DelayUser::Pointer, AuthUser *); + ~Id(); + virtual int bytesWanted (int min, int max) const; + virtual void bytesIn(int qty); + private: + DelayUser::Pointer theUser; + DelayUserBucket::Pointer theBucket; + }; + DelaySpec spec; + Vector buckets; + typedef Vector::iterator iterator; +}; +#endif /* DELAYUSER_H */