~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/pbms/src/cslib/CSStrUtil.h

This patch completes the first step in the splitting of
the XA resource manager API from the storage engine API,
as outlined in the specification here:

http://drizzle.org/wiki/XaStorageEngine

* Splits plugin::StorageEngine into a base StorageEngine
  class and two derived classes, TransactionalStorageEngine
  and XaStorageEngine.  XaStorageEngine derives from
  TransactionalStorageEngine and creates the XA Resource
  Manager API for storage engines.

  - The methods moved from StorageEngine to TransactionalStorageEngine
    include releaseTemporaryLatches(), startConsistentSnapshot(), 
    commit(), rollback(), setSavepoint(), releaseSavepoint(),
    rollbackToSavepoint() and hasTwoPhaseCommit()
  - The methods moved from StorageEngine to XaStorageEngine
    include recover(), commitXid(), rollbackXid(), and prepare()

* Places all static "EngineVector"s into their proper
  namespaces (typedefs belong in header files, not implementation files)
  and places all static methods corresponding
  to either only transactional engines or only XA engines
  into their respective files in /drizzled/plugin/

* Modifies the InnoDB "handler" files to extend plugin::XaStorageEngine
  and not plugin::StorageEngine

The next step, as outlined in the wiki spec page above, is to isolate
the XA Resource Manager API into its own plugin class and modify
plugin::XaStorageEngine to implement plugin::XaResourceManager via
composition.  This is necessary to enable building plugins which can
participate in an XA transaction *without having to have that plugin
implement the entire storage engine API*

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2008 PrimeBase Technologies GmbH, Germany
2
 
 *
3
 
 * PrimeBase Media Stream for MySQL
4
 
 *
5
 
 * This program is free software; you can redistribute it and/or modify
6
 
 * it under the terms of the GNU General Public License as published by
7
 
 * the Free Software Foundation; either version 2 of the License, or
8
 
 * (at your option) any later version.
9
 
 *
10
 
 * This program is distributed in the hope that it will be useful,
11
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 
 * GNU General Public License for more details.
14
 
 *
15
 
 * You should have received a copy of the GNU General Public License
16
 
 * along with this program; if not, write to the Free Software
17
 
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
 
 *
19
 
 * Original author: Paul McCullagh (H&G2JCtL)
20
 
 * Continued development: Barry Leslie
21
 
 *
22
 
 * 2007-05-21
23
 
 *
24
 
 * CORE SYSTEM:
25
 
 * Simple utility functions.
26
 
 *
27
 
 */
28
 
 
29
 
#ifndef __CSUTIL_H__
30
 
#define __CSUTIL_H__
31
 
 
32
 
#include "CSDefs.h"
33
 
 
34
 
const char      *cs_version();
35
 
 
36
 
void            cs_strcpy(size_t size, char *d, const char *s, size_t len);
37
 
void            cs_strcpy(size_t size, char *d, const char *s);
38
 
void            cs_strcpy_dottt(size_t size, char *d, const char *s, size_t len);
39
 
void            cs_strcpy_left(size_t size, char *d, const char *s, char ch);
40
 
void            cs_strcpy_right(size_t size, char *d, const char *s, char ch);
41
 
void            cs_strcat(size_t size, char *d, const char *s);
42
 
void            cs_strcat_left(size_t size, char *d, const char *s, char ch);
43
 
void            cs_strcat_right(size_t size, char *d, const char *s, char ch);
44
 
void            cs_strcat(size_t size, char *d, char ch);
45
 
void            cs_strcat(char **to, const char *to_cat);
46
 
void            cs_strcat(size_t size, char *to, int i);
47
 
void            cs_strcat(size_t size, char *to, uint32_t i);
48
 
void            cs_strcat(size_t size, char *to, uint64_t i);
49
 
void            cs_strcat_hex(size_t size, char *to, uint64_t i);
50
 
void            cs_format_context(size_t size, char *buffer, const char *func, const char *file, int line);
51
 
int                     cs_path_depth(const char *path);
52
 
bool            cs_fixed_pattern(const char *path);
53
 
bool            cs_match_patern(const char *pattern, const char *str, bool ignore_case);
54
 
char            *cs_last_name_of_path(const char *path, int count);
55
 
char            *cs_last_name_of_path(const char *path);
56
 
char            *cs_last_directory_of_path(const char *path);
57
 
const char      *cs_find_extension(const char *file_name);
58
 
void            cs_remove_extension(char *file_name);
59
 
bool            cs_is_extension(const char *file_name, const char *ext);
60
 
bool            cs_remove_dir_char(char *dir_name);
61
 
void            cs_remove_last_name_of_path(char *path);
62
 
bool            cs_add_dir_char(size_t max, char *path);
63
 
bool            cs_is_absolute(const char *path);
64
 
void            cs_add_name_to_path(size_t max, char *path, const char *name);
65
 
const char      *cs_next_name_of_path(const char *path);
66
 
void            cs_adjust_path(size_t max, char *path, const char *rel_path);
67
 
char            *cs_strdup(const char *in_str);
68
 
char            *cs_strdup(int value);
69
 
char            *cs_strdup(const char *in_str, size_t len);
70
 
bool            cs_starts_with(const char *cstr, const char *w_cstr);
71
 
bool            cs_ends_with(const char *cstr, const char *w_cstr);
72
 
void            cs_make_absolute_path(size_t max, char *path, const char *rel_path, const char *cwd);
73
 
void            cs_replace_string(size_t size, char *into, const char *find_str, const char *str);
74
 
void            cs_replace_string(size_t size, char *into, const char ch, const char *str);
75
 
int64_t         cs_str_to_int8(const char *ptr, bool *overflow);
76
 
int64_t         cs_byte_size_to_int8(const char *ptr, bool *invalid = NULL);
77
 
uint64_t        cs_str_to_word8(const char *ptr, bool *overflow = NULL);
78
 
size_t          cs_hex_to_bin(size_t size, void *bin, const char *hex);
79
 
size_t          cs_hex_to_bin(size_t size, void *bin, size_t len, const char *hex);
80
 
void            cs_bin_to_hex(size_t size, char *hex, size_t len, const void *bin);
81
 
void            cs_strToUpper(char *ptr);
82
 
void            cs_strToLower(char *ptr);
83
 
 
84
 
const char *cs_version();
85
 
bool            cs_str_to_value(const char *ptr, uint32_t *value, uint8_t base);
86
 
#endif