You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2012/12/19 06:28:01 UTC

git commit: TS-1630: Add Lua API for TSHttpTxnCacheLookupStatusGet

Updated Branches:
  refs/heads/master bdbb077cb -> d0d81548e


TS-1630: Add Lua API for TSHttpTxnCacheLookupStatusGet


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/d0d81548
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/d0d81548
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/d0d81548

Branch: refs/heads/master
Commit: d0d81548e7095222388afe4a4ab6b309b537e41e
Parents: bdbb077
Author: James Peach <jp...@apache.org>
Authored: Tue Dec 18 21:25:26 2012 -0800
Committer: James Peach <jp...@apache.org>
Committed: Tue Dec 18 21:27:49 2012 -0800

----------------------------------------------------------------------
 CHANGES                                           |    2 +
 plugins/experimental/lua/examples/cachestatus.lua |   48 ++++++++++++++++
 plugins/experimental/lua/lapi.cc                  |   22 +++++++
 3 files changed, 72 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d0d81548/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 2edabf5..e4bd9a4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 3.3.1
 
+  *) [TS-1630] Add Lua API for TSHttpTxnCacheLookupStatusGet
+
   *) [TS-1423] Added option to do transparent passthrough on
    connections that are not valid HTTP.
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d0d81548/plugins/experimental/lua/examples/cachestatus.lua
----------------------------------------------------------------------
diff --git a/plugins/experimental/lua/examples/cachestatus.lua b/plugins/experimental/lua/examples/cachestatus.lua
new file mode 100644
index 0000000..36d60df
--- /dev/null
+++ b/plugins/experimental/lua/examples/cachestatus.lua
@@ -0,0 +1,48 @@
+--  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.
+
+-- Lua example to log the HTTP transaction cache lookup status.
+
+require 'string'
+require 'debug'
+
+ts = require 'ts'
+ts.hook = require 'ts.hook'
+
+ts.debug('cachestatus', string.format('loaded %s', debug.getinfo(1).source))
+
+do
+
+local strings = { }
+strings[ts.CACHE_LOOKUP_MISS]       = "TS_CACHE_LOOKUP_MISS"
+strings[ts.CACHE_LOOKUP_HIT_STALE]  = "TS_CACHE_LOOKUP_HIT_STALE"
+strings[ts.CACHE_LOOKUP_HIT_FRESH]  = "TS_CACHE_LOOKUP_HIT_FRESH"
+strings[ts.CACHE_LOOKUP_SKIPPED]    = "TS_CACHE_LOOKUP_SKIPPED"
+
+function cachestatus(status)
+    return strings[status]
+end
+end
+
+ts.hook.register(ts.hook.HTTP_CACHE_LOOKUP_COMPLETE_HOOK,
+    function(event, txn)
+        ts.debug('cachestatus',
+            string.format('cache lookup status is %s', cachestatus(txn:cachestatus())))
+        txn:continue()
+    end
+)
+
+-- vim: set sw=4 ts=4 et :

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d0d81548/plugins/experimental/lua/lapi.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/lua/lapi.cc b/plugins/experimental/lua/lapi.cc
index 0398b9f..52274a2 100644
--- a/plugins/experimental/lua/lapi.cc
+++ b/plugins/experimental/lua/lapi.cc
@@ -494,11 +494,28 @@ LuaHttpTxnRegister(lua_State * lua)
   return 0;
 }
 
+static int
+LuaHttpTxnCacheLookupStatus(lua_State * lua)
+{
+  LuaHttpTransaction * txn;
+  int status;
+
+  txn = LuaHttpTransaction::get(lua, 1);
+  if (TSHttpTxnCacheLookupStatusGet(txn->txn, &status) == TS_SUCCESS) {
+    lua_pushinteger(lua, status);
+  } else {
+    lua_pushinteger(lua, -1);
+  }
+
+  return 1;
+}
+
 static const luaL_Reg HTTPTXN[] =
 {
   { "abort", LuaHttpTxnAbort },
   { "continue", LuaHttpTxnContinue },
   { "register", LuaHttpTxnRegister },
+  { "cachestatus", LuaHttpTxnCacheLookupStatus },
   { NULL, NULL }
 };
 
@@ -603,6 +620,11 @@ LuaApiInit(lua_State * lua)
   LuaSetConstantField(lua, "MINOR_VERSION", TSTrafficServerVersionGetMinor());
   LuaSetConstantField(lua, "PATCH_VERSION", TSTrafficServerVersionGetPatch());
 
+  LuaSetConstantField(lua, "CACHE_LOOKUP_MISS", TS_CACHE_LOOKUP_MISS);
+  LuaSetConstantField(lua, "CACHE_LOOKUP_HIT_STALE", TS_CACHE_LOOKUP_HIT_STALE);
+  LuaSetConstantField(lua, "CACHE_LOOKUP_HIT_FRESH", TS_CACHE_LOOKUP_HIT_FRESH);
+  LuaSetConstantField(lua, "CACHE_LOOKUP_SKIPPED", TS_CACHE_LOOKUP_SKIPPED);
+
   // Register TSRemapRequestInfo metatable.
   LuaPushMetatable(lua, "ts.meta.rri", RRI);
   // Pop the metatable.