~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/plugin/query_cache.h

  • Committer: Brian Aker
  • Date: 2010-12-08 22:35:56 UTC
  • mfrom: (1819.9.158 update-innobase)
  • Revision ID: brian@tangent.org-20101208223556-37mi4omqg7lkjzf3
Merge in Stewart's changes, 1.3 changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
 
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
3
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
 
 
5
 
 *  Definitions required for Query Cache plugin 
6
 
 
7
 
 *  Copyright (C) 2008 Mark Atwood
 
3
 *
 
4
 *  Copyright (C) 2008 Sun Microsystems, Toru Maesaka
 
5
 *  Copyright (C) 2010 Djellel Eddine Difallah
8
6
 *
9
7
 *  This program is free software; you can redistribute it and/or modify
10
8
 *  it under the terms of the GNU General Public License as published by
20
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21
19
 */
22
20
 
23
 
#ifndef DRIZZLED_PLUGIN_QCACHE_H
24
 
#define DRIZZLED_PLUGIN_QCACHE_H
25
 
 
26
 
typedef struct qcache_st
27
 
{
28
 
  /* todo, define this api */
29
 
  /* this is the API that a qcache plugin must implement.
30
 
     it should implement each of these function pointers.
31
 
     if a function returns bool true, that means it failed.
32
 
     if a function pointer is NULL, that's ok.
33
 
  */
34
 
 
35
 
  bool (*qcache_func1)(Session *session, void *parm1, void *parm2);
36
 
  bool (*qcache_func2)(Session *session, void *parm3, void *parm4);
37
 
} qcache_t;
38
 
 
39
 
#endif /* DRIZZLED_PLUGIN_QCACHE_H */
 
21
#ifndef DRIZZLED_PLUGIN_QUERY_CACHE_H
 
22
#define DRIZZLED_PLUGIN_QUERY_CACHE_H
 
23
 
 
24
#include "drizzled/plugin.h"
 
25
#include "drizzled/plugin/plugin.h"
 
26
#include <drizzled/sql_list.h>
 
27
 
 
28
namespace drizzled
 
29
{
 
30
class Session;
 
31
class select_result;
 
32
 
 
33
namespace plugin
 
34
{
 
35
 
 
36
/* 
 
37
  This is the API that a qcache plugin must implement.
 
38
*/
 
39
 
 
40
class QueryCache : public Plugin
 
41
{
 
42
private:  
 
43
  
 
44
  QueryCache();
 
45
  QueryCache(const QueryCache &);
 
46
  QueryCache& operator=(const QueryCache &);
 
47
 
 
48
public:  
 
49
 
 
50
  explicit QueryCache(std::string name_arg)
 
51
    : Plugin(name_arg, "QueryCache")
 
52
  {}
 
53
 
 
54
  virtual ~QueryCache() {}
 
55
 
 
56
  /* these are the Query Cache interface functions */
 
57
 
 
58
  /* Lookup the cache and transmit the data back to the client */
 
59
  virtual bool doIsCached(Session* session)= 0;  
 
60
  /* Lookup the cache and transmit the data back to the client */
 
61
  virtual bool doSendCachedResultset(Session *session)= 0;
 
62
  /* Send the current Resultset to the cache */
 
63
  virtual bool doSetResultset(Session *session)= 0;
 
64
  /* initiate a new Resultset (header) */
 
65
  virtual bool doPrepareResultset(Session *session)= 0;
 
66
  /* push a record to the current Resultset */
 
67
  virtual bool doInsertRecord(Session *session, List<Item> &item)= 0;
 
68
 
 
69
  static bool addPlugin(QueryCache *handler);
 
70
  static void removePlugin(QueryCache *handler);
 
71
 
 
72
  /* These are the functions called by the rest of the Drizzle server */
 
73
  static bool isCached(Session *session);
 
74
  static bool sendCachedResultset(Session *session);
 
75
  static bool prepareResultset(Session *session);
 
76
  static bool setResultset(Session *session);
 
77
  static bool insertRecord(Session *session, List<Item> &item);
 
78
};
 
79
 
 
80
} /* namespace plugin */
 
81
} /* namespace drizzled */
 
82
 
 
83
#endif /* DRIZZLED_PLUGIN_QUERY_CACHE_H */