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 Commit: 9e7ceddbad56370643ab514d9ad918d7740f3db8 Parents: 5c0bc7c Author: Phil Sorber <[email protected]> Authored: Fri Aug 8 12:30:54 2014 -0600 Committer: Phil Sorber <[email protected]> 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"
