OSDN Git Service

unitテストのプロトタイプを追加
[ultramonkey-l7/ultramonkey-l7-v3.git] / include / realserver_element.h
1 //
2 //      @file   realserver_element.h
3 //      @brief  realserver data prototype
4 //
5 //      copyright (c) sdy corporation. 2008
6 //      mail: n dot nakai at sdy dot co dot jp
7 //
8 //      Distributed under the Boost Software License, Version 1.0.(See accompanying
9 //      file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
10 //
11 #ifndef REALSERVER_ELEMENT_H
12 #define REALSERVER_ELEMENT_H
13 #include <boost/asio.hpp>
14
15 namespace l7vs{
16
17 class   realserver_element{
18 public:
19         boost::asio::ip::tcp::endpoint  tcp_endpoint;
20         boost::asio::ip::udp::endpoint  udp_endpoint;
21         int                                                             weight;
22         realserver_element() : weight(-1){}
23         realserver_element( const realserver_element& in ) : tcp_endpoint( in.tcp_endpoint ) ,
24                                                                                                                          udp_endpoint( in.udp_endpoint ) ,
25                                                                                                                          weight( in.weight ){}
26         realserver_element& operator=( const realserver_element& elem ){
27                 tcp_endpoint = elem.tcp_endpoint;
28                 udp_endpoint = elem.udp_endpoint;
29                 weight = elem.weight;
30                 return *this;
31         }
32         friend  bool    operator==( const realserver_element& rselem1, const realserver_element& rselem2 ){
33                 return rselem1.tcp_endpoint == rselem2.tcp_endpoint &&
34                                 rselem1.udp_endpoint == rselem2.udp_endpoint &&
35                                 rselem1.weight == rselem2.weight;
36         }
37         
38         friend bool     operator!=( const realserver_element& rselem1, const realserver_element& rselem2 ){
39                 return rselem1.tcp_endpoint != rselem2.tcp_endpoint ||
40                                 rselem1.udp_endpoint != rselem2.udp_endpoint ||
41                                 rselem1.weight != rselem2.weight;
42         }
43         
44         friend bool     operator<( const realserver_element& rselem1, const realserver_element& rselem2 ){
45                 if( rselem1.tcp_endpoint < rselem2.tcp_endpoint ) return true;
46                 if( rselem1.tcp_endpoint != rselem2.tcp_endpoint ) return false;
47                 return rselem1.weight < rselem2.weight;
48         }
49 };
50
51 }       //namespace l7vsd
52 #endif  //REALSERVER_ELEMENT