UltraMonkey-L7 V3(multi-thread implementation)
Revision | 10dc7242fb86e98e5c293ea9de0fd96a7b57e659 (tree) |
---|---|
Time | 2011-01-07 10:22:15 |
Author | Michiro Hibari <hibari@user...> |
Commiter | Michiro Hibari |
Clean up.
@@ -1,73 +0,0 @@ | ||
1 | -[Xxx.xx 2009] 3.0.0 Norihisa Nakai | |
2 | - - MultiThread version First Release. | |
3 | - | |
4 | -[Apr.20 2009] 2.1.2-1 Shinya TAKEBAYASHI | |
5 | - - Removed cookie modules | |
6 | - | |
7 | -[Mar. 9 2009] 2.1.2-0 Shinya TAKEBAYASHI | |
8 | - - Added protocol modules(recently supported): | |
9 | - * cpassive(Cookie passive) | |
10 | - * crewrite(Cookie rewrite) | |
11 | - * ip(Source IP) | |
12 | - * pfilter(Packet filter) | |
13 | - - Implemented replication spec to sslid module. | |
14 | - | |
15 | -[Jan. 27 2009] 2.1.1-0 Shinya TAKEBAYASHI | |
16 | - - Added option for FAST SCHEDULE to sessionless module. | |
17 | - Establishing connection when clinent connection was established. | |
18 | - - Updated l7directord man file. | |
19 | - - Changed methods for sslid module.(liner list -> hash list) | |
20 | - | |
21 | -[Dec. 17 2008] 2.1.0-0 Shinya TAKEBAYASHI | |
22 | - - Implemented access logger (CLIENT - DESTINATION mapping). | |
23 | - - Optimized event listener. | |
24 | - - Fixed algorithms for some check type. | |
25 | - - "Checkcount" has been enabled. | |
26 | - - Created "man" page.(Japanese(UTF-8) only ;)) | |
27 | - - Implemented flow control logic(server). | |
28 | - - Eliminated flow control logic(client). | |
29 | - | |
30 | -[May. 26 2008] 2.0.0-0 Shinya TAKEBAYASHI | |
31 | - - Changed logger library(vanessa_logger -> log4cxx) | |
32 | - - Implemented configuration function(using configuration file: /etc/l7vs/l7vs.cf) | |
33 | - - Implemented replication system(for HA clustering) | |
34 | - - Added new protocol module(sessionless - Layer-4 LB like module) | |
35 | - | |
36 | -[Dec. 11 2007] 1.0.0-1 Shinya TAKEBAYASHI | |
37 | - - Implemented blocking mode switching function | |
38 | - | |
39 | -[Oct. 11 2007] 1.0.0-0 Shinya TAKEBAYASHI | |
40 | - - Change liblary from GLib1.2 to GLib2.0 (memory leak fix) | |
41 | - - Change from select() to epoll ET. | |
42 | - - Change bloking mode to non-blocking mode(recv() and send()). | |
43 | - - Change from service conn list to service conn hash. | |
44 | - - Change from iomux-list to hash-map and available list. | |
45 | - - Add QoS Control. | |
46 | - - Add Weighted Round-Robin scheduler. | |
47 | - - Add real server weight. | |
48 | - - Fixed some bugs. | |
49 | - | |
50 | - * Following members helped us. Thanks! | |
51 | - | |
52 | - Hideaki KONDO | |
53 | - Shunji FUKUSHIMA | |
54 | - Norihisa NAKAI | |
55 | - Hajime OKADA | |
56 | - Akira TAKAMARU | |
57 | - Hiroyuki BAN | |
58 | - Toru MORISHITA | |
59 | - Kouhei TANUMA | |
60 | - Tetsuya TAKATSURU | |
61 | - Masahiro SAKAMOTO | |
62 | - Yumi KITANI | |
63 | - | |
64 | -[May. 9 2007] 0.6.0-0 Shinya TAKEBAYASHI | |
65 | - - Extended maximum client connections. | |
66 | - - Fixed some bugs. | |
67 | - | |
68 | -[Feb. 19, 2007] 0.5.0-3 Shinya TAKEBAYASHI | |
69 | - - Fixed syntax errors.(umagent/umagent.c, umagent/Makefile) | |
70 | - | |
71 | -[Dec. 26, 2006] 0.5.0-2 Takahiro Kurosawa / Hideaki Kondo | |
72 | - - Rewrote to fix bug about Segmentation Fault.(conn.c) | |
73 | - |
@@ -1,35 +0,0 @@ | ||
1 | -About UltraMonkey-L7 | |
2 | ---------------------------------------------------------------------------- | |
3 | - | |
4 | -Welcome | |
5 | -======= | |
6 | - UltraMonkey-L7 is a opensource layer-7 load balancing software. | |
7 | - | |
8 | - | |
9 | -System requirements | |
10 | -=================== | |
11 | - | |
12 | - OS : Linux 2.6.9(or later)on x86 and x86_64 architecture | |
13 | - We recommend to use Redhat Enterprise Linux. | |
14 | - | |
15 | - CPU : Intel x86 and x86_64 or compatible architecture processors | |
16 | - | |
17 | - Memory : 2 GB(recommended) | |
18 | - | |
19 | - Libraries : gcc4(or higher), glib2.x, apache log4cxx(0.10 or higher), boost C++ libraries( 1.38 or higher ) | |
20 | - | |
21 | - | |
22 | -License | |
23 | -======= | |
24 | - | |
25 | - UltraMonkey-L7 is distributed using LGPL License. | |
26 | - | |
27 | - | |
28 | -About UltraMonkey-L7 Project | |
29 | -============================ | |
30 | - | |
31 | - To get more information about UltraMonkey-L7, please visit our project | |
32 | - Web Site. | |
33 | - | |
34 | - Project Web Site - http://ultramonkey-l7.sourceforge.jp/ | |
35 | - Software repository - http://sourceforge.jp/projects/ultramonkey-l7/ |
@@ -1,43 +0,0 @@ | ||
1 | -#ifndef ERROR_CODE_H | |
2 | -#define ERROR_CODE_H | |
3 | -// | |
4 | -// (C) Copyright 2009- Norihisa Nakai | |
5 | -// Distributed under the Boost Software License, Version 1.0 | |
6 | -// (See accompanying file LICENSE_1_0.txt http://www.boost.org/LICENSE_1_0.txt) | |
7 | - | |
8 | -#include <string> | |
9 | - | |
10 | -namespace ultramonkey{ | |
11 | - | |
12 | -//! @class error_code | |
13 | -//! @brief getValue error | |
14 | -//! @brief this class is POD | |
15 | -class error_code{ | |
16 | -protected: | |
17 | - bool flag; //!< errorcode flag | |
18 | - std::string msg; //!< errorcode message | |
19 | -public: | |
20 | - error_code() : flag(false){} //!< constractor | |
21 | - //! setter constractor | |
22 | - //! @param[in] flags | |
23 | - //! @param[in] error message | |
24 | - error_code( const bool inflg, const std::string& instr ) : flag( inflag ), msg( instr ){} | |
25 | - bool operator==( const bool in ) const { return ( flag == in ); } //!< operator== orverload | |
26 | - bool operator!=( const bool in ) const { return ( flag != in ); } //!< operator!= orverload | |
27 | - bool operator!() const { return !flag; } //!< operator! orverload | |
28 | - typedef void (*unspecified_bool_type)(); //!< if return function | |
29 | - static void unspecified_bool_true() {} //!< if true orverload function | |
30 | - operator unspecified_bool_type() const { return flag == 0 ? 0 : unspecified_bool_true; } //!< if() orverload | |
31 | - const std::string& get_message() const { return msg; } //!< message getter | |
32 | - //! error setter | |
33 | - //! @param[in] flags | |
34 | - //! @param[in] error message | |
35 | - void setter( const bool flg, const std::string& instr ){ | |
36 | - flag = flg; | |
37 | - msg = instr; | |
38 | - } | |
39 | -}; | |
40 | - | |
41 | -} // ultramonkey | |
42 | - | |
43 | -#endif // ERROR_CODE_H |
@@ -1,47 +0,0 @@ | ||
1 | -#ifndef RW_MUTEX_H | |
2 | -#define RW_MUTEX_H | |
3 | -// | |
4 | -// (C) Copyright 2009- Norihisa Nakai | |
5 | -// Distributed under the Boost Software License, Version 1.0 | |
6 | -// (See accompanying file LICENSE_1_0.txt http://www.boost.org/LICENSE_1_0.txt) | |
7 | - | |
8 | -#include <boost/noncopyable.hpp> | |
9 | -#include <boost/thread/exceptions.hpp> | |
10 | -#include <error.h> | |
11 | -#include <pthread.h> | |
12 | - | |
13 | -namespace ultramonkey{ | |
14 | - | |
15 | -class rw_mutex : boost::noncopyable{ | |
16 | -protected: | |
17 | - pthread_rwlock_t m; | |
18 | -public: | |
19 | - rw_mutex(){ | |
20 | - int const res = pthread_rwlock_init( &m, NULL ); | |
21 | - if( res ) throw boost::thread_resource_error(); | |
22 | - } | |
23 | - | |
24 | - ~rw_mutex(){ | |
25 | - pthread_rwlock_destroy(&m); | |
26 | - } | |
27 | - | |
28 | - void rdlock(){ pthread_rwlock_rdlock( &m ); } | |
29 | - void wrlock(){ pthread_rwlock_wrlock( &m ); } | |
30 | - bool try_rdlock(){ | |
31 | - int const res = pthread_rwlock_tryrdlock( &m ); | |
32 | - return res; | |
33 | - } | |
34 | - bool try_wrlock(){ | |
35 | - int const res = pthread_rwlock_trywrlock(&m); | |
36 | - return res; | |
37 | - } | |
38 | - void unlock(){ | |
39 | - pthread_rwlock_unlock( &m ); | |
40 | - } | |
41 | - | |
42 | -}; | |
43 | - | |
44 | - | |
45 | -} //namespace ultramonkey | |
46 | - | |
47 | -#endif // RW_MUTEX_H | |
\ No newline at end of file |
@@ -1,55 +0,0 @@ | ||
1 | -#ifndef SCOPED_LOCK_H | |
2 | -#define SCOPED_LOCK_H | |
3 | -// | |
4 | -// (C) Copyright 2009- Norihisa Nakai | |
5 | -// Distributed under the Boost Software License, Version 1.0 | |
6 | -// (See accompanying file LICENSE_1_0.txt http://www.boost.org/LICENSE_1_0.txt) | |
7 | - | |
8 | -#include "spin_mutex.h" | |
9 | -#include "rw_mutex.h" | |
10 | - | |
11 | -namespace ultramonkey{ | |
12 | - | |
13 | -template < class T > | |
14 | -class scoped_lock : boost::noncopyable { | |
15 | -protected: | |
16 | - T& mtx; | |
17 | -public: | |
18 | - explicit scoped_lock( T& mutex ) : mtx( mutex ){ | |
19 | - mtx.lock(); | |
20 | - } | |
21 | - | |
22 | - ~scoped_lock(){ | |
23 | - mtx.unlock(); | |
24 | - } | |
25 | -}; | |
26 | - | |
27 | -typedef scoped_lock< spin_mutex > spin_scoped_lock; | |
28 | - | |
29 | -class rd_scoped_lock : boost::noncopyable{ | |
30 | -protected: | |
31 | - rw_mutex& mtx; | |
32 | -public: | |
33 | - explicit rd_scoped_lock( rw_mutex& mutex ) : mtx( mutex ){ | |
34 | - mtx.rdlock(); | |
35 | - } | |
36 | - ~rd_scoped_lock(){ | |
37 | - mtx.unlock(); | |
38 | - } | |
39 | -}; | |
40 | - | |
41 | -class wr_scoped_lock { | |
42 | -protected: | |
43 | - rw_mutex& mtx; | |
44 | -public: | |
45 | - wr_scoped_lock( rw_mutex& mutex ) : mtx( mutex ){ | |
46 | - mtx.wrlock(); | |
47 | - } | |
48 | - ~wr_scoped_lock(){ | |
49 | - mtx.unlock(); | |
50 | - } | |
51 | -}; | |
52 | - | |
53 | -} //namespace ultramonkey | |
54 | - | |
55 | -#endif // SCOPED_LOCK_H | |
\ No newline at end of file |
@@ -1,38 +0,0 @@ | ||
1 | -#ifndef SPIN_MUTEX_H | |
2 | -#define SPIN_MUTEX_H | |
3 | -// | |
4 | -// (C) Copyright 2009- Norihisa Nakai | |
5 | -// Distributed under the Boost Software License, Version 1.0 | |
6 | -// (See accompanying file LICENSE_1_0.txt http://www.boost.org/LICENSE_1_0.txt) | |
7 | - | |
8 | - | |
9 | -#include <boost/noncopyable.hpp> | |
10 | -#include <boost/thread/exceptions.hpp> | |
11 | -#include <error.h> | |
12 | -#include <pthread.h> | |
13 | - | |
14 | -namespace ultramonkey{ | |
15 | - | |
16 | -class spin_mutex : boost::noncopyable{ | |
17 | -protected: | |
18 | - pthread_spinlock_t m; | |
19 | -public: | |
20 | - spin_mutex(){ | |
21 | - int const res = pthread_spin_init( &m, NULL ); | |
22 | - if( res ) throw boost::thread_resource_error(); | |
23 | - } | |
24 | - | |
25 | - ~spin_mutex(){ | |
26 | - pthread_spin_destroy(&m); | |
27 | - } | |
28 | - | |
29 | - void lock(){ pthread_spin_lock(&m); } | |
30 | - void unlock(){ pthread_spin_unlock(&m); } | |
31 | - bool try_lock(){ | |
32 | - int const res = pthread_spin_trylock(&m); | |
33 | - return !res; | |
34 | - } | |
35 | -}; | |
36 | - | |
37 | -} // namespace ultramonkey | |
38 | -#endif //SPIN_MUTEX_H | |
\ No newline at end of file |