On Aug 8, 2014, at 4:08 PM, sor...@apache.org wrote: > Repository: trafficserver > Updated Branches: > refs/heads/master 5c0bc7c94 -> 7fa5c5c7a > > > TS-1800: Add new hash function base class > > > Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo > Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/9e7ceddb > Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/9e7ceddb > Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/9e7ceddb > > Branch: refs/heads/master
This ode doesn’t look indented as per our coding standard :-/ — Leif > Commit: 9e7ceddbad56370643ab514d9ad918d7740f3db8 > Parents: 5c0bc7c > Author: Phil Sorber <sor...@apache.org> > Authored: Fri Aug 8 12:30:54 2014 -0600 > Committer: Phil Sorber <sor...@apache.org> > Committed: Fri Aug 8 15:26:02 2014 -0600 > > ---------------------------------------------------------------------- > CHANGES | 2 ++ > lib/ts/Hash.cc | 48 ++++++++++++++++++++++++++++++++++++++++++++++ > lib/ts/Hash.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ > lib/ts/Makefile.am | 2 ++ > lib/ts/libts.h | 1 + > 5 files changed, 104 insertions(+) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9e7ceddb/CHANGES > ---------------------------------------------------------------------- > diff --git a/CHANGES b/CHANGES > index d8dd8bf..0050a2d 100644 > --- a/CHANGES > +++ b/CHANGES > @@ -1,6 +1,8 @@ > -*- coding: utf-8 -*- > Changes with Apache Traffic Server 5.1.0 > > + *) [TS-1800] Create one hashing infrastructure. > + > *) [TS-2860] Add AArch64 support. > > *) [TS-2916] set response header properly for combo_handler plugin. > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9e7ceddb/lib/ts/Hash.cc > ---------------------------------------------------------------------- > diff --git a/lib/ts/Hash.cc b/lib/ts/Hash.cc > new file mode 100644 > index 0000000..a0931ef > --- /dev/null > +++ b/lib/ts/Hash.cc > @@ -0,0 +1,48 @@ > +/** @file > + > + @section license License > + > + Licensed to the Apache Software Foundation (ASF) under one > + or more contributor license agreements. See the NOTICE file > + distributed with this work for additional information > + regarding copyright ownership. The ASF licenses this file > + to you under the Apache License, Version 2.0 (the > + "License"); you may not use this file except in compliance > + with the License. You may obtain a copy of the License at > + > + http://www.apache.org/licenses/LICENSE-2.0 > + > + Unless required by applicable law or agreed to in writing, software > + distributed under the License is distributed on an "AS IS" BASIS, > + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > + See the License for the specific language governing permissions and > + limitations under the License. > + */ > + > +#include "Hash.h" > +#include <cstring> > + > +ATSHashBase::~ATSHashBase() { > +} > + > +bool > +ATSHash::operator==(const ATSHash & other) const { > + if (this->size() != other.size()) { > + return false; > + } > + if (memcmp(this->get(), other.get(), this->size()) == 0) { > + return true; > + } else { > + return false; > + } > +} > + > +bool > +ATSHash32::operator==(const ATSHash32 & other) const { > + return this->get() == other.get(); > +} > + > +bool > +ATSHash64::operator==(const ATSHash64 & other) const { > + return this->get() == other.get(); > +} > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9e7ceddb/lib/ts/Hash.h > ---------------------------------------------------------------------- > diff --git a/lib/ts/Hash.h b/lib/ts/Hash.h > new file mode 100644 > index 0000000..c0e621c > --- /dev/null > +++ b/lib/ts/Hash.h > @@ -0,0 +1,51 @@ > +/** @file > + > + @section license License > + > + Licensed to the Apache Software Foundation (ASF) under one > + or more contributor license agreements. See the NOTICE file > + distributed with this work for additional information > + regarding copyright ownership. The ASF licenses this file > + to you under the Apache License, Version 2.0 (the > + "License"); you may not use this file except in compliance > + with the License. You may obtain a copy of the License at > + > + http://www.apache.org/licenses/LICENSE-2.0 > + > + Unless required by applicable law or agreed to in writing, software > + distributed under the License is distributed on an "AS IS" BASIS, > + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > + See the License for the specific language governing permissions and > + limitations under the License. > + */ > + > +#ifndef __HASH_H__ > +#define __HASH_H__ > + > +#include <cstddef> > +#include <stdint.h> > + > +struct ATSHashBase { > + virtual void update(const void *, size_t) = 0; > + virtual void final(void) = 0; > + virtual void clear(void) = 0; > + virtual ~ATSHashBase(); > +}; > + > +struct ATSHash : ATSHashBase { > + virtual const void *get(void) const = 0; > + virtual size_t size(void) const = 0; > + virtual bool operator==(const ATSHash &) const; > +}; > + > +struct ATSHash32 : ATSHashBase { > + virtual uint32_t get(void) const = 0; > + virtual bool operator==(const ATSHash32 &) const; > +}; > + > +struct ATSHash64 : ATSHashBase { > + virtual uint64_t get(void) const = 0; > + virtual bool operator==(const ATSHash64 &) const; > +}; > + > +#endif > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9e7ceddb/lib/ts/Makefile.am > ---------------------------------------------------------------------- > diff --git a/lib/ts/Makefile.am b/lib/ts/Makefile.am > index 437d654..d745dba 100644 > --- a/lib/ts/Makefile.am > +++ b/lib/ts/Makefile.am > @@ -52,6 +52,8 @@ libtsutil_la_SOURCES = \ > DynArray.h \ > EventNotify.cc \ > EventNotify.h \ > + Hash.cc \ > + Hash.h \ > HostLookup.cc \ > HostLookup.h \ > INK_MD5.h \ > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9e7ceddb/lib/ts/libts.h > ---------------------------------------------------------------------- > diff --git a/lib/ts/libts.h b/lib/ts/libts.h > index 97ce163..7a6097c 100644 > --- a/lib/ts/libts.h > +++ b/lib/ts/libts.h > @@ -81,6 +81,7 @@ > #include "Compatability.h" > #include "DynArray.h" > #include "EventNotify.h" > +#include "Hash.h" > #include "I_Version.h" > #include "InkPool.h" > #include "List.h" >