~drizzle-trunk/drizzle/development

1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
1
/*
1502.5.9 by Barry.Leslie at PrimeBase
- Cleaned up some style points.
2
  *  Copyright (C) 2010 PrimeBase Technologies GmbH, Germany
3
 *
4
 *  This program is free software; you can redistribute it and/or modify
5
 *  it under the terms of the GNU General Public License as published by
6
 *  the Free Software Foundation; version 2 of the License.
7
 *
8
 *  This program is distributed in the hope that it will be useful,
9
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 *  GNU General Public License for more details.
12
 *
13
 *  You should have received a copy of the GNU General Public License
14
 *  along with this program; if not, write to the Free Software
15
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
16
 *
17
 * Barry Leslie
18
 *
19
 * 2010-05-12
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
20
 */
21
2234 by Brian Aker
Mass removal of ifdef/endif in favor of pragma once.
22
#pragma once
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
23
1502.5.7 by Barry.Leslie at PrimeBase
Renamed the 'Event' plugin to 'EventObserver' plugin along with some internal class renames to make things clearer.
24
#include <drizzled/plugin/event_observer.h>
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
25
26
namespace drizzled
27
{
28
29
namespace plugin
30
{
1502.5.7 by Barry.Leslie at PrimeBase
Renamed the 'Event' plugin to 'EventObserver' plugin along with some internal class renames to make things clearer.
31
class HelloEvents: public EventObserver
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
32
{
33
public:
34
1502.5.7 by Barry.Leslie at PrimeBase
Renamed the 'Event' plugin to 'EventObserver' plugin along with some internal class renames to make things clearer.
35
  HelloEvents(std::string name_arg): EventObserver(name_arg), is_enabled(false), db_list(""), table_list(""){}
1666.4.19 by Monty Taylor
Free strdup'd option strings.
36
  ~HelloEvents();
1502.5.7 by Barry.Leslie at PrimeBase
Renamed the 'Event' plugin to 'EventObserver' plugin along with some internal class renames to make things clearer.
37
1502.5.8 by Barry.Leslie at PrimeBase
- Changed names to match the drizzle naming convention.
38
  void registerTableEventsDo(TableShare &table_share, EventObserverList &observers);
39
  void registerSchemaEventsDo(const std::string &db, EventObserverList &observers);
40
  void registerSessionEventsDo(Session &session, EventObserverList &observers);
1502.5.7 by Barry.Leslie at PrimeBase
Renamed the 'Event' plugin to 'EventObserver' plugin along with some internal class renames to make things clearer.
41
1502.5.8 by Barry.Leslie at PrimeBase
- Changed names to match the drizzle naming convention.
42
  bool observeEventDo(EventData &);
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
43
44
  // Some custom things for my plugin:
45
  void enable() { is_enabled= true;}
46
  void disable() { is_enabled= false;}
47
  bool isEnabled() const
48
  {
49
    return is_enabled;
50
  }
51
1502.5.6 by Barry.Leslie at PrimeBase
Fixed a compiler error due to an uninitialized variavble and cleaned up some coding standard stuff.
52
private:
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
53
  
54
  bool is_enabled;
55
  //----------------------
56
  std::string db_list;
57
  
1502.5.6 by Barry.Leslie at PrimeBase
Fixed a compiler error due to an uninitialized variavble and cleaned up some coding standard stuff.
58
public:
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
59
  void setDatabasesOfInterest(const char *list) 
60
  {
61
    db_list.assign(list);
62
  }
63
  
64
  const char *getDatabasesOfInterest() 
65
  {
66
    return db_list.c_str();
67
  }
68
  
1502.5.6 by Barry.Leslie at PrimeBase
Fixed a compiler error due to an uninitialized variavble and cleaned up some coding standard stuff.
69
private:
1502.5.7 by Barry.Leslie at PrimeBase
Renamed the 'Event' plugin to 'EventObserver' plugin along with some internal class renames to make things clearer.
70
  bool isDatabaseInteresting(const std::string &db_name)
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
71
  {
72
    std::string list(db_list);
73
    list.append(",");
74
    
75
    std::string target(db_name);
76
    target.append(",");
77
    
78
    return (list.find(target) != std::string::npos);
79
  }
80
  
81
  //----------------------
82
  std::string table_list;
83
  
1502.5.6 by Barry.Leslie at PrimeBase
Fixed a compiler error due to an uninitialized variavble and cleaned up some coding standard stuff.
84
public:
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
85
  void setTablesOfInterest(const char *list) 
86
  {
87
    table_list.assign(list);
88
  }
89
  
90
  const char *getTablesOfInterest() 
91
  {
92
    return table_list.c_str();
93
  }
94
  
1502.5.6 by Barry.Leslie at PrimeBase
Fixed a compiler error due to an uninitialized variavble and cleaned up some coding standard stuff.
95
private:
1502.5.7 by Barry.Leslie at PrimeBase
Renamed the 'Event' plugin to 'EventObserver' plugin along with some internal class renames to make things clearer.
96
  bool isTableInteresting(const std::string &table_name)
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
97
  {
98
    std::string list(table_list);
99
    list.append(",");
100
    
101
    std::string target(table_name);
102
    target.append(",");
103
    
104
    return (list.find(target) != std::string::npos);
105
  }
106
107
108
  //----------------------
1502.5.7 by Barry.Leslie at PrimeBase
Renamed the 'Event' plugin to 'EventObserver' plugin along with some internal class renames to make things clearer.
109
  bool isSessionInteresting(Session &)
1502.5.4 by Barry.Leslie at PrimeBase
Added a demo plugin based on the the events plugin API.
110
  {
111
    /* You could filter sessions of interest based on login
112
     * information.
113
     */
114
    return true;
115
  }
116
117
  
118
};
119
} /* namespace plugin */
120
} /* namespace drizzled */