diff options
author | unknown <petr@mysql.com> | 2004-10-23 11:32:52 +0400 |
---|---|---|
committer | unknown <petr@mysql.com> | 2004-10-23 11:32:52 +0400 |
commit | a5435ea78ab3d62223fd94ebd7c730f8ded30f1b (patch) | |
tree | 0b27802fdecb258338fcfe759144e818e42083c2 /server-tools/instance-manager/buffer.cc | |
parent | 746e6e53e7c945327aabf560ff0fbc3fe16bf7cb (diff) | |
download | mariadb-git-a5435ea78ab3d62223fd94ebd7c730f8ded30f1b.tar.gz |
Intermediate commit - just to make new files visible to bk in the new
tree
server-tools/instance-manager/Makefile.am:
Fixed IM linking to avoid using both mysys and libmysql as the define the
same symbols and therefore conflict
server-tools/instance-manager/listener.cc:
Added ability to listen network ports
server-tools/instance-manager/listener.h:
Various additions to the Listener_thread_args
server-tools/instance-manager/log.cc:
merge
server-tools/instance-manager/log.h:
merge
server-tools/instance-manager/manager.cc:
Fixes and additions to enable guardian functionality
server-tools/instance-manager/manager.h:
Changed manager() signature
server-tools/instance-manager/mysqlmanager.cc:
Various fixes
server-tools/instance-manager/options.cc:
Added handling of default values for new options in the Options struct. (such
as default_user, default_password, monitoring_interval e.t.c)
server-tools/instance-manager/options.h:
Added new options to the Options struct
sql/net_serv.cc:
Added MYSQL_INSTANCE_MANAGER defines to enable alarm handling in the IM
server-tools/instance-manager/buffer.cc:
Simple implementation of variable-length buffer
server-tools/instance-manager/command.cc:
Abstract command. All commands are derived from Command class
server-tools/instance-manager/commands.h:
Interfaces for all commands we have
server-tools/instance-manager/factory.cc:
Commands factory. This class hides command instantiation. The idea is to
handle various protocols this way. (different commands for different
protocols
server-tools/instance-manager/guardian.cc:
Guardian thread implementation (monitor and restart instances in case of a
failure
server-tools/instance-manager/guardian.h:
Guardian_thread and Guardian_thread_args class interface. The
Guardian_thread is responsible for monitoring and restarting instances
server-tools/instance-manager/instance.cc:
Instance class contains methods and data to manage a single instance
server-tools/instance-manager/instance.h:
This file contains class an instance class interface. The class is
responsible for starting/stopping an instance
server-tools/instance-manager/instance_map.cc:
The instance repository. This class is also responsible for initialization
of Instance class objects.
server-tools/instance-manager/instance_options.cc:
The Instance_options class contains all methods to get and handle options
of an instance
server-tools/instance-manager/mysql_connection.cc:
The class responsible for handling MySQL client/server protocol connections
server-tools/instance-manager/mysql_manager_error.h:
The list of Instance Manger-specific errors
server-tools/instance-manager/parse.cc:
Simple query parser
server-tools/instance-manager/parse.h:
Parser interface
server-tools/instance-manager/protocol.cc:
Here implemented functions used to handle mysql client/server protocol
server-tools/instance-manager/protocol.h:
Interface for MySQL client/server protocol
server-tools/instance-manager/thread_registry.cc:
Thread registry stores information about every thread. It's main function is
to provide graceful shutdown for all threads.
server-tools/instance-manager/user_map.h:
User map contains hash with user names and passwords
Diffstat (limited to 'server-tools/instance-manager/buffer.cc')
-rw-r--r-- | server-tools/instance-manager/buffer.cc | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/server-tools/instance-manager/buffer.cc b/server-tools/instance-manager/buffer.cc new file mode 100644 index 00000000000..39e255300cf --- /dev/null +++ b/server-tools/instance-manager/buffer.cc @@ -0,0 +1,91 @@ +/* Copyright (C) 2004 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifdef __GNUC__ +#pragma implementation +#endif + +#include "buffer.h" +#include <m_string.h> + + +/* + Puts the given string to the buffer. + + SYNOPSYS + put_to_buffer() + start_pos start position in the buffer + string string to be put in the buffer + len_arg the length of the string. This way we can avoid some + strlens. + + DESCRIPTION + + The method puts a string into the buffer, starting from start_pos . + In the case when the buffer is too small it reallocs the buffer. The + total size of the buffer is restricted with 16. + + RETURN + 0 - ok + 1 - The buffer came to 16Mb barrier +*/ + +int Buffer::put_to_buffer(char *start_pos, const char *string, uint len_arg) +{ + if (check_and_add(start_pos - buffer, len_arg)) + return 1; + + strnmov(start_pos, string, len_arg); + return 0; +} + + +/* + Checks whether the current buffer size is ok to put a string of the length + "len_arg" starting from "position" and reallocs it if no. + + SYNOPSYS + check_and_add() + position the number starting byte on the buffer to store a buffer + len_arg the length of the string. + + DESCRIPTION + + The method checks whether it is possible to pus a string of teh "len_arg" + length into the buffer, starting from "position" byte. In the case when the + buffer is too small it reallocs the buffer. The total size of the buffer is + restricted with 16 Mb. + + RETURN + 0 - ok + 1 - The buffer came to 16Mb barrier +*/ + +int Buffer::check_and_add(uint position, uint len_arg) +{ + if (position + len_arg >= MAX_BUFFER_SIZE) + return 1; + + if (position + len_arg>= buffer_size) + { + buffer= (char *) realloc(buffer, + min(MAX_BUFFER_SIZE, + max((uint) buffer_size*1.5, + position + len_arg))); + buffer_size= (uint) buffer_size*1.5; + } + return 0; +} |