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"

Reply via email to