------------------------------------------------------------
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

Reply via email to