00001 /* 00002 * Copyright (C) 2010 Joseph Daly <skinny.moey@gmail.com> 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions are met: 00007 * 00008 * * Redistributions of source code must retain the above copyright notice, 00009 * this list of conditions and the following disclaimer. 00010 * * Redistributions in binary form must reproduce the above copyright notice, 00011 * this list of conditions and the following disclaimer in the documentation 00012 * and/or other materials provided with the distribution. 00013 * * Neither the name of Joseph Daly nor the names of its contributors 00014 * may be used to endorse or promote products derived from this software 00015 * without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00018 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00019 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00020 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 00021 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00022 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00023 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00024 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00025 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00026 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 00027 * THE POSSIBILITY OF SUCH DAMAGE. 00028 */ 00029 00030 #pragma once 00031 00032 #include <drizzled/common.h> 00033 #include <drizzled/enum.h> 00034 #include <string> 00035 #include <vector> 00036 00037 00038 class UserCommands 00039 { 00040 public: 00041 00042 UserCommands(); 00043 00044 UserCommands(const UserCommands &user_commands); 00045 00046 uint64_t getCount(uint32_t index); 00047 00048 void merge(UserCommands *user_commands); 00049 00050 void reset(); 00051 00052 void logCommand(drizzled::enum_sql_command sql_command); 00053 00054 static uint32_t getStatusVarsCount() 00055 { 00056 return drizzled::SQLCOM_END; 00057 } 00058 00059 static uint32_t getUserCounts() 00060 { 00061 return COUNT_END; 00062 } 00063 00064 static const char *COM_STATUS_VARS[]; 00065 00066 static const char *USER_COUNTS[]; 00067 00068 enum command_count_index { 00069 COUNT_SELECT, 00070 COUNT_DELETE, 00071 COUNT_UPDATE, 00072 COUNT_INSERT, 00073 COUNT_ROLLBACK, 00074 COUNT_COMMIT, 00075 COUNT_CREATE, 00076 COUNT_ALTER, 00077 COUNT_DROP, 00078 COUNT_ADMIN, 00079 /* add new COUNT_* values above this entry */ 00080 COUNT_END 00081 }; 00082 00083 uint64_t getUserCount(uint32_t index); 00084 00085 private: 00086 void init(); 00087 00088 void incrementCount(uint32_t index, uint32_t i= 1); 00089 00090 std::vector<uint64_t> vector_of_command_counts; 00091 }; 00092