~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/mysql_protocol/mysql_protocol.h

  • Committer: Brian Aker
  • Date: 2010-12-07 09:12:12 UTC
  • mto: This revision was merged to the branch mainline in revision 1985.
  • Revision ID: brian@tangent.org-20101207091212-1m0w20tck6z7632m
This is a fix for bug lp:686197

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
3
 *
4
 
 *  Copyright (C) 2008 Sun Microsystems, Inc.
 
4
 *  Copyright (C) 2008 Sun Microsystems
5
5
 *
6
6
 *  This program is free software; you can redistribute it and/or modify
7
7
 *  it under the terms of the GNU General Public License as published by
29
29
 
30
30
namespace drizzle_plugin
31
31
{
32
 
void compose_ip_addresses(std::vector<std::string> options);
33
 
 
34
 
class ProtocolCounters
35
 
{
36
 
  public:
37
 
    ProtocolCounters():
38
 
      max_connections(1000)
39
 
    { }
40
 
    drizzled::atomic<uint64_t> connectionCount;
41
 
    drizzled::atomic<uint64_t> adminConnectionCount;
42
 
    drizzled::atomic<uint64_t> failedConnections;
43
 
    drizzled::atomic<uint64_t> connected;
44
 
    drizzled::atomic<uint64_t> adminConnected;
45
 
    uint32_t max_connections;
46
 
};
47
 
 
 
32
 
 
33
typedef drizzled::constrained_check<in_port_t, 65535, 0> port_constraint;
48
34
typedef drizzled::constrained_check<uint32_t, 300, 1> timeout_constraint;
49
35
typedef drizzled::constrained_check<uint32_t, 300, 1> retry_constraint;
50
36
typedef drizzled::constrained_check<uint32_t, 1048576, 1024, 1024> buffer_constraint;
51
37
 
52
38
class ListenMySQLProtocol: public drizzled::plugin::ListenTcp
53
39
{
54
 
protected:
 
40
private:
55
41
  const std::string _hostname;
56
42
  bool _using_mysql41_protocol;
57
43
 
67
53
  virtual const std::string getHost(void) const;
68
54
  virtual in_port_t getPort(void) const;
69
55
  virtual drizzled::plugin::Client *getClient(int fd);
70
 
  static ProtocolCounters *mysql_counters;
71
 
  virtual ProtocolCounters *getCounters(void) const { return mysql_counters; }
72
 
  void addCountersToTable(void);
73
56
};
74
57
 
75
58
class ClientMySQLProtocol: public drizzled::plugin::Client
76
59
{
77
 
protected:
 
60
private:
78
61
  NET net;
79
62
  drizzled::String packet;
80
63
  uint32_t client_capabilities;
81
 
  bool is_admin_connection;
82
64
  bool _using_mysql41_protocol;
83
65
 
84
66
  bool checkConnection(void);
88
70
  void makeScramble(char *scramble);
89
71
 
90
72
public:
91
 
  ClientMySQLProtocol(int fd, bool _using_mysql41_protocol, ProtocolCounters *set_counters);
 
73
  ClientMySQLProtocol(int fd, bool _using_mysql41_protocol);
92
74
  virtual ~ClientMySQLProtocol();
93
75
 
94
 
  ProtocolCounters *counters;
 
76
  static drizzled::atomic<uint64_t> connectionCount;
 
77
  static drizzled::atomic<uint64_t> failedConnections;
 
78
  static drizzled::atomic<uint64_t> connected;
95
79
 
96
80
  virtual int getFileDescriptor(void);
97
81
  virtual bool isConnected();
105
89
 
106
90
  virtual void sendOK(void);
107
91
  virtual void sendEOF(void);
108
 
  virtual void sendError(const drizzled::error_t sql_errno, const char *err);
 
92
  virtual void sendError(uint32_t sql_errno, const char *err);
109
93
 
110
94
  virtual bool sendFields(drizzled::List<drizzled::Item> *list);
111
95
 
122
106
  virtual bool haveError(void);
123
107
  virtual bool haveMoreData(void);
124
108
  virtual bool wasAborted(void);
125
 
  virtual bool isAdminAllowed(void);
126
 
  static std::vector<std::string> mysql_admin_ip_addresses;
127
 
  static void mysql_compose_ip_addresses(std::vector<std::string> options);
128
109
};
129
110
 
130
111
} /* namespace drizzle_plugin */