------------------------------------------------------------ revno: 218 committer: Alan Alvarez <aalva...@aliensoft.net> branch nick: trunk timestamp: Thu 2010-05-27 11:07:30 -0400 message: Replace Split() function with boost::algorithm::string::split where possible modified: mira-server/include/network/messages/MsgJoinGroup.h mira-server/include/network/messages/MsgLogin.h mira-server/include/network/messages/MsgNewGroup.h mira-server/include/network/messages/MsgNewUser.h mira-server/include/network/messages/MsgPing.h mira-server/include/network/messages/MsgPong.h mira-server/include/network/messages/MsgPrivateMessage.h mira-server/include/network/messages/MsgQuery.h mira-server/include/network/messages/outgoing/MsgUserStatus.h mira-server/include/tools.h mira-server/src/network/Msg.cpp mira-server/src/network/messages/MsgQuery.cpp
-- lp:mira/trunk https://code.launchpad.net/~mira-dev/mira/trunk You are subscribed to branch lp:mira/trunk. To unsubscribe from this branch go to https://code.launchpad.net/~mira-dev/mira/trunk/+edit-subscription
=== modified file 'mira-server/include/network/messages/MsgJoinGroup.h' --- mira-server/include/network/messages/MsgJoinGroup.h 2010-05-17 23:27:21 +0000 +++ mira-server/include/network/messages/MsgJoinGroup.h 2010-05-27 15:07:30 +0000 @@ -39,79 +39,70 @@ {} virtual void run() - { - //Splitting message into fields - vector<std::string> message_field = Split(m_message, " "); + { + if (m_message.length() < 1) + m_source_connection->send("E JG Invalid Format "); + + //Checking if the Group exist + WorkPlace workgroup = Application::get_directory().find_workplace(m_message); - //Checking on minimum fields - if(message_field.size() >= 1)//excluding token, stripped at Msg::Parse + if(workgroup.is_valid()) { - //Checking if the Group exist - WorkPlace workgroup = Application::get_directory().find_workplace(message_field.at(0)); - - if(workgroup.is_valid()) - { - User user = Application::get_directory().find_user(m_source_connection->get_user_id()); - std::string wg_id_str = IntToString(workgroup.get_id()); + User user = Application::get_directory().find_user(m_source_connection->get_user_id()); + std::string wg_id_str = IntToString(workgroup.get_id()); - //Adding group(id) to user's workplace_list - Field field = user.get_field(ATTRIBUTE_WORKPLACE_LIST); - if(field.type == Field::type_invalid) - { - field.type = Field::list(Field::type_uint16); - field.attribute = ATTRIBUTE_WORKPLACE_LIST; - field.value = " "; - field.value_list = std::list<std::string>(1, wg_id_str); - } - else - { - //Checking if the User is already the member of the workgroup. - std::list<std::string>::iterator pos = find(field.value_list.begin(), field.value_list.end(), wg_id_str); - if(pos != field.value_list.end()) - { - string error_message = "E JG Already Member of the Group "; - error_message += message_field.at(0) + ".Can't rejoin the group "; - m_source_connection->send(error_message); - return; - } - field.value_list.push_back(wg_id_str); + //Adding group(id) to user's workplace_list + Field field = user.get_field(ATTRIBUTE_WORKPLACE_LIST); + if(field.type == Field::type_invalid) + { + field.type = Field::list(Field::type_uint16); + field.attribute = ATTRIBUTE_WORKPLACE_LIST; + field.value = " "; + field.value_list = std::list<std::string>(1, wg_id_str); + } + else + { + //Checking if the User is already the member of the workgroup. + std::list<std::string>::iterator pos = find(field.value_list.begin(), field.value_list.end(), wg_id_str); + if(pos != field.value_list.end()) + { + string error_message = "E JG Already Member of Group "; + error_message += workgroup.get_name() + ". Can't rejoin the group "; + m_source_connection->send(error_message); + return; } - user.set_field(field); - Application::get_directory().update_user(user); - - //Adding user(id) to Group's user_list - field = workgroup.get_field(ATTRIBUTE_USER_LIST); - field.value_list.push_back(IntToString(user.get_id())); - - workgroup.set_field(field); - Application::get_directory().update_workplace(workgroup); + field.value_list.push_back(wg_id_str); + } + user.set_field(field); + Application::get_directory().update_user(user); + + //Adding user(id) to Group's user_list + field = workgroup.get_field(ATTRIBUTE_USER_LIST); + field.value_list.push_back(IntToString(user.get_id())); + + workgroup.set_field(field); + Application::get_directory().update_workplace(workgroup); - std::string return_message = "GJ \"" + workgroup.get_name() + '\"'; - m_source_connection->send(return_message); + std::string return_message = "GJ \"" + workgroup.get_name() + '\"'; + m_source_connection->send(return_message); - // Notify online workplace members of this new member. - for (std::list<std::string>::iterator Iter = field.value_list.begin(); Iter != field.value_list.end(); ++Iter) + // Notify online workplace members of this new member. + for (std::list<std::string>::iterator Iter = field.value_list.begin(); Iter != field.value_list.end(); ++Iter) + { + unsigned int user_id = StringToInt(*Iter); + TcpConnection* user_connection = Application::get_server().get_connection(user_id); + if (user_connection != NULL && user_id != user.get_id()) { - unsigned int user_id = StringToInt(*Iter); - TcpConnection* user_connection = Application::get_server().get_connection(user_id); - if (user_connection != NULL && user_id != user.get_id()) - { - user_connection->send("NM \"" + workgroup.get_name() + "\" " + user.get_username()); - } + user_connection->send("NM \"" + workgroup.get_name() + "\" " + user.get_username()); } } - else - { - string error_message = "E JG Group "; - error_message += message_field.at(0) + " doesn't exist"; - m_source_connection->send(error_message); - } } else { - m_source_connection->send("E JG Invalid Format "); + string error_message = "E JG Group "; + error_message += m_message + " doesn't exist"; + m_source_connection->send(error_message); } - } ~MsgJoinGroup() {} === modified file 'mira-server/include/network/messages/MsgLogin.h' --- mira-server/include/network/messages/MsgLogin.h 2010-04-16 18:39:52 +0000 +++ mira-server/include/network/messages/MsgLogin.h 2010-05-27 15:07:30 +0000 @@ -28,6 +28,7 @@ #include <string> #include <sstream> #include <vector> +#include <boost/algorithm/string.hpp> #include "Msg.h" #include "Application.h" @@ -51,9 +52,10 @@ {} virtual void run() - { + { //Splitting message into fields - vector<std::string> message_field = Split(m_message, " "); + vector<std::string> message_field; + boost::split(message_field, m_message, boost::algorithm::is_space()); //Checking on minimum fields if (message_field.size() >= 2)//excluding token, stripped at Msg::Parse === modified file 'mira-server/include/network/messages/MsgNewGroup.h' --- mira-server/include/network/messages/MsgNewGroup.h 2010-03-10 19:11:02 +0000 +++ mira-server/include/network/messages/MsgNewGroup.h 2010-05-27 15:07:30 +0000 @@ -1,4 +1,4 @@ -/* + /* * MsgNewGroup.h * * Mira GroupWare @@ -23,6 +23,7 @@ #include <string> #include <sstream> #include <vector> +#include <boost/algorithm/string.hpp> #include "Msg.h" #include "PlainTextDirectory.h" @@ -47,7 +48,8 @@ { //Splitting message into fields - vector<std::string> message_field = Split(m_message, " "); + vector<std::string> message_field; + boost::split(message_field, m_message, boost::algorithm::is_space()); if(message_field.size() >= 2) //excluding token, stripped at MSG::Parse { === modified file 'mira-server/include/network/messages/MsgNewUser.h' --- mira-server/include/network/messages/MsgNewUser.h 2010-05-06 18:25:38 +0000 +++ mira-server/include/network/messages/MsgNewUser.h 2010-05-27 15:07:30 +0000 @@ -24,6 +24,7 @@ #include <sstream> #include <vector> #include <iostream> +#include <boost/algorithm/string.hpp> #include "Application.h" #include "field_defs.h" @@ -46,7 +47,8 @@ virtual void run() { // Splitting message into fields. - vector<std::string> message_field = Split(m_message, " "); + vector<std::string> message_field; + boost::split(message_field, m_message, boost::algorithm::is_space()); if(message_field.size() >= 4) //excluding token, stripped at Msg::parse { === modified file 'mira-server/include/network/messages/MsgPing.h' --- mira-server/include/network/messages/MsgPing.h 2009-11-17 00:54:25 +0000 +++ mira-server/include/network/messages/MsgPing.h 2010-05-27 15:07:30 +0000 @@ -40,14 +40,11 @@ virtual void run() { - //Splitting message into fields - vector<std::string> message_field = Split(m_message, " "); - //Checking on minimum fields - if(message_field.size() >= 1 ) + if(m_message.length() > 0) { string return_message = "PO "; - return_message += message_field.at(0); + return_message += m_message; m_source_connection->send(return_message); } else === modified file 'mira-server/include/network/messages/MsgPong.h' --- mira-server/include/network/messages/MsgPong.h 2009-11-14 01:20:03 +0000 +++ mira-server/include/network/messages/MsgPong.h 2010-05-27 15:07:30 +0000 @@ -41,32 +41,7 @@ virtual void run() { - string *message = NULL; - Msg *msg = NULL; - - //Splitting message into fields - vector<std::string> message_field = Split(m_message, " "); - - //Checking on minimum fields - if(message_field.size() >= 1 ) - { - message = new string("PO "); - *message += message_field.at(0); - m_source_connection->send(*message); - delete message; - - } - else - { - message = new string("E P Invalid Format"); - msg = new MsgError(m_source_connection, *message); - } - if(msg) - { - msg->run(); - delete msg; - delete message; - } + // TODO: Calculate possible lag }; ~MsgPong() {} === modified file 'mira-server/include/network/messages/MsgPrivateMessage.h' --- mira-server/include/network/messages/MsgPrivateMessage.h 2009-11-22 04:31:08 +0000 +++ mira-server/include/network/messages/MsgPrivateMessage.h 2010-05-27 15:07:30 +0000 @@ -43,14 +43,16 @@ virtual void run() { - - //Splitting message into fields - vector<std::string> message_field = Split(m_message, " "); - - //Checking on minimum fields - if(message_field.size() >= 2)//excluding token, stripped at Msg::Parse + size_t space_pos = m_message.find(' '); + size_t quote_pos = m_message.find('\"'); + if(space_pos != std::string::npos && quote_pos != std::string::npos) { - User user = Application::get_directory().find_user(message_field.at(0)); + std::string username = m_message.substr(0, space_pos); + std::string message_str = m_message.substr(quote_pos); + + std::cout << "Message for " << username << "with message: " << message_str << std::endl; + + User user = Application::get_directory().find_user(username); //Checking if the user exist. if(user.is_valid()) { @@ -58,8 +60,8 @@ string message = "PM "; message += Application::get_directory().find_user(m_source_connection->get_user_id()).get_username(); - message += " " + message_field.at(0); - message += " " + message_field.at(1); + message += " " + username; + message += " " + message_str; message += " " + IntToString(time(NULL)); @@ -93,7 +95,7 @@ else { string error_message = "E PM user "; - error_message += message_field.at(0) + " doesn't exist"; + error_message += username + " doesn't exist"; m_source_connection->send(error_message); } }//if === modified file 'mira-server/include/network/messages/MsgQuery.h' --- mira-server/include/network/messages/MsgQuery.h 2009-11-22 04:31:08 +0000 +++ mira-server/include/network/messages/MsgQuery.h 2010-05-27 15:07:30 +0000 @@ -24,6 +24,7 @@ #include <sstream> #include <vector> #include <map> +#include <boost/algorithm/string.hpp> #include "Msg.h" #include "tools.h" @@ -48,8 +49,8 @@ { std::string message; - //Splitting message into fields - std::vector<std::string> message_field = Split(m_message, " "); + std::vector<std::string> message_field; + boost::split(message_field, m_message, boost::algorithm::is_space()); //Checking on minimum fields if(message_field.size() >= 2) //excluding token, stripped at MSG::Parse === modified file 'mira-server/include/network/messages/outgoing/MsgUserStatus.h' --- mira-server/include/network/messages/outgoing/MsgUserStatus.h 2010-04-16 19:30:32 +0000 +++ mira-server/include/network/messages/outgoing/MsgUserStatus.h 2010-05-27 15:07:30 +0000 @@ -25,6 +25,7 @@ #include "field_defs.h" #include <string> +#include <boost/algorithm/string.hpp> #include <list> #include <vector> @@ -48,7 +49,8 @@ virtual void run() { - std::vector<std::string> message_field = Split(m_message, " "); + std::vector<std::string> message_field; + boost::split(message_field, m_message, boost::algorithm::is_space()); //Checking on minimum fields of the message if(message_field.size() >= 3) === modified file 'mira-server/include/tools.h' --- mira-server/include/tools.h 2010-05-17 00:30:06 +0000 +++ mira-server/include/tools.h 2010-05-27 15:07:30 +0000 @@ -29,6 +29,7 @@ } } // end IntToString() +/* inline std::vector<std::string> Split(const std::string &str, const std::string &delimiter) { std::vector<std::string> field; @@ -62,5 +63,6 @@ return field; } +*/ #endif //_MIRASERVER_TOOLS_H === modified file 'mira-server/src/network/Msg.cpp' --- mira-server/src/network/Msg.cpp 2010-02-16 21:11:39 +0000 +++ mira-server/src/network/Msg.cpp 2010-05-27 15:07:30 +0000 @@ -30,7 +30,7 @@ #include "MsgNewGroup.h" #include "MsgJoinGroup.h" #include "MsgQuery.h" -#include "MsgMessage.h" +// #include "MsgMessage.h" #include "MsgPrivateMessage.h" #include "MsgPing.h" #include "MsgUtility.h" @@ -104,9 +104,11 @@ msg = new MsgQuery(source_connection, *message); break; + /* case MESSAGE: msg = new MsgMessage(source_connection, *message); break; + */ case PRIVATE_MESSAGE: msg = new MsgPrivateMessage(source_connection, *message); === modified file 'mira-server/src/network/messages/MsgQuery.cpp' --- mira-server/src/network/messages/MsgQuery.cpp 2009-12-26 03:56:38 +0000 +++ mira-server/src/network/messages/MsgQuery.cpp 2010-05-27 15:07:30 +0000 @@ -5,6 +5,8 @@ #include "Application.h" #include "field_defs.h" +#include <boost/algorithm/string.hpp> +#include <vector> #include <string> #include <list> @@ -19,7 +21,8 @@ void MsgQuery::query_groups(const std::string& query) { string message; - std::vector<std::string> message_field = Split(query, " "); + std::vector<std::string> message_field; + boost::split(message_field, m_message, boost::algorithm::is_space()); if(message_field.size() >= 2) {
------------------------------------------------------------------------------
_______________________________________________ Mira-development mailing list Mira-development@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mira-development