00001 /* 00002 * ServerConfigurationBuilder.h 00003 * 00004 * Created on: Jul 18, 2013 00005 * Author: samuele 00006 */ 00007 00008 #ifndef SERVERCONFIGURATIONBUILDER_H_ 00009 #define SERVERCONFIGURATIONBUILDER_H_ 00010 00011 #include <string> 00012 #include "infinispan/hotrod/ImportExport.h" 00013 #include "Builder.h" 00014 #include "ServerConfiguration.h" 00015 #include "ConfigurationChildBuilder.h" 00016 00017 namespace infinispan { 00018 namespace hotrod { 00026 class ServerConfigurationBuilder 00027 : public Builder<ServerConfiguration>, public ConfigurationChildBuilder 00028 { 00029 public: 00030 ServerConfigurationBuilder(ConfigurationBuilder& builder_): 00031 ConfigurationChildBuilder(builder_), m_host("localhost"), m_port(11222) {} 00032 00033 /*** 00034 * Specifies host of remote HotRod server 00035 * 00036 * \return ServerConfigurationBuilder for further configuration 00037 */ 00038 ServerConfigurationBuilder& host(const std::string &host_) 00039 { 00040 m_host = host_; 00041 return *this; 00042 } 00043 00044 /*** 00045 * Specifies port of remote HotRod server 00046 * 00047 * \return ServerConfigurationBuilder for further configuration 00048 */ 00049 ServerConfigurationBuilder& port(int port_) 00050 { 00051 m_port = port_; 00052 return *this; 00053 } 00054 00055 /*** 00056 * Create ServerConfiguration instance from a given state of 00057 * this ServerConfigurationBuilder 00058 * 00059 * \return created ServerConfiguration instance 00060 */ 00061 virtual ServerConfiguration create() 00062 { 00063 return ServerConfiguration(m_host, m_port); 00064 } 00065 00066 /*** 00067 * Create ServerConfigurationBuilder from a given state of 00068 * another ServerConfiguration instance 00069 * 00070 * \return ServerConfigurationBuilder for further configuration 00071 */ 00072 virtual ServerConfigurationBuilder& read(ServerConfiguration& configuration) 00073 { 00074 m_host = configuration.getHostCString(); 00075 m_port = configuration.getPort(); 00076 return *this; 00077 } 00078 00079 private: 00080 std::string m_host; 00081 int m_port; 00082 }; 00083 00084 00085 }} //namespace 00086 00087 00088 #endif /* SERVERCONFIGURATIONBUILDER_H_ */