On Fri, Aug 8, 2014 at 8:10 PM, James Peach <jpe...@apache.org> wrote:
> On Aug 8, 2014, at 3:08 PM, sor...@apache.org wrote: > > > Repository: trafficserver > > Updated Branches: > > refs/heads/master 5c0bc7c94 -> 7fa5c5c7a > > > > > > TS-1800: Add new hash function base class > > Any tests? > Yes! I actually do...somewhere... You said once upon a time you would help me integrate them. I'll need to find them or recreate them and then we can get them in there. > > > > > > 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 > > 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" > > > >