mira-dev team mailing list archive
-
mira-dev team
-
Mailing list archive
-
Message #00079
[Branch ~mira-dev/mira/trunk] Rev 218: Replace Split() function with boost::algorithm::string::split where possible
------------------------------------------------------------
revno: 218
committer: Alan Alvarez <aalvarez@xxxxxxxxxxxxx>
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
Your team Mira Core Development Team is 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)
{