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