mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-08-11 07:40:21 -04:00
added for plugins own dir
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1850 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
97d8640f3a
commit
87344de7d4
809 changed files with 790 additions and 722 deletions
251
plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.cpp
Normal file
251
plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.cpp
Normal file
|
@ -0,0 +1,251 @@
|
|||
/***************************************************************************
|
||||
* Copyright (C) 2008 by normal *
|
||||
* normal@Desktop2 *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
#include "I2PSamMessageAnalyser.h"
|
||||
|
||||
I2PSamMessageAnalyser::I2PSamMessageAnalyser()
|
||||
{
|
||||
//Constructor
|
||||
}
|
||||
|
||||
const SAM_MESSAGE I2PSamMessageAnalyser::Analyse(QString Message)
|
||||
{
|
||||
using namespace SAM_Message_Types;
|
||||
|
||||
SAM_MESSAGE t;
|
||||
QStringList list =Message.split(" ",QString::SkipEmptyParts);
|
||||
|
||||
|
||||
if((list[0]=="STREAM") && (list[1]=="RECEIVED")){
|
||||
t.type=STREAM_RECEIVED;
|
||||
|
||||
//get ID
|
||||
QStringList temp=list[2].split("=");
|
||||
QString sID=temp[1];
|
||||
|
||||
|
||||
t.ID=QStringToQint32(sID);
|
||||
//get Size
|
||||
temp= list[3].split("=");
|
||||
t.Size=temp[1].remove("\n");
|
||||
}
|
||||
else if((list[0].contains("STREAM")==true) && (list[1].contains("READY_TO_SEND")==true)){
|
||||
t.type=STREAM_READY_TO_SEND;
|
||||
|
||||
//GET ID
|
||||
QStringList temp=list[2].split("=");
|
||||
QString sID=temp[1].remove("\n");
|
||||
|
||||
t.ID=QStringToQint32(sID);
|
||||
}
|
||||
else if((list[0]=="HELLO") && (list[1]=="REPLY")){
|
||||
t.type=HELLO_REPLAY;
|
||||
|
||||
if(list[2].contains("RESULT=OK")==true) t.result=OK;
|
||||
else if(list[2].contains("RESULT=NOVERSION")==true)t.result=NOVERSION;
|
||||
|
||||
}
|
||||
else if((list[0].contains("SESSION")==true) && (list[1].contains("STATUS")==true)){
|
||||
t.type=SESSION_STATUS;
|
||||
|
||||
//Get Result
|
||||
if(list[2].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK;
|
||||
else if(list[2].contains("RESULT=DUPLICATED_DEST",Qt::CaseInsensitive))t.result=DUPLICATED_DEST;
|
||||
else if(list[2].contains("RESULT=I2P_ERROR",Qt::CaseInsensitive))t.result=I2P_ERROR;
|
||||
else if(list[2].contains("RESULT=INVALID_KEY",Qt::CaseInsensitive))t.result=INVALID_KEY;
|
||||
else
|
||||
t.type=ERROR_IN_ANALYSE;
|
||||
//----------------
|
||||
|
||||
|
||||
//Get Destination
|
||||
QStringList temp=list[3].split("=");
|
||||
|
||||
t.Destination=temp[1].remove("\n");
|
||||
//----------------
|
||||
//Get Message
|
||||
if(Message.contains("MESSAGE=",Qt::CaseInsensitive)){
|
||||
t.Message=Message.mid(Message.indexOf("MESSAGE=")+8);
|
||||
t.Message.remove("\n");
|
||||
}
|
||||
|
||||
//----------------
|
||||
|
||||
}
|
||||
else if((list[0].contains("STREAM")==true) && (list[1].contains("STATUS")==true)){
|
||||
t.type=STREAM_STATUS;
|
||||
|
||||
//Get Result
|
||||
if(list[2].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK;
|
||||
else if(list[2].contains("RESULT=CANT_REACH_PEER",Qt::CaseInsensitive))t.result=CANT_REACH_PEER;
|
||||
else if(list[2].contains("RESULT=I2P_ERROR",Qt::CaseInsensitive))t.result=I2P_ERROR;
|
||||
else if(list[2].contains("RESULT=INVALID_KEY",Qt::CaseInsensitive))t.result=INVALID_KEY;
|
||||
else if(list[2].contains("RESULT=TIMEOUT",Qt::CaseInsensitive))t.result=TIMEOUT;
|
||||
else
|
||||
{
|
||||
t.type=ERROR_IN_ANALYSE;
|
||||
return t;
|
||||
}
|
||||
|
||||
//----------------
|
||||
//Get ID
|
||||
QStringList temp=list[3].split("=");
|
||||
QString sID=temp[1].remove("\n");
|
||||
|
||||
t.ID=QStringToQint32(sID);
|
||||
//----------------
|
||||
//Get Message
|
||||
if(Message.contains("MESSAGE=",Qt::CaseInsensitive)){
|
||||
t.Message=Message.mid(Message.indexOf("MESSAGE=")+8);
|
||||
t.Message.remove("\n");
|
||||
}
|
||||
//----------------
|
||||
|
||||
}
|
||||
else if((list[0].contains("STREAM")==true) && (list[1].contains("CONNECTED")==true)){
|
||||
t.type=STREAM_CONNECTED;
|
||||
|
||||
QStringList temp=list[2].split("=");
|
||||
QString sID;
|
||||
t.Destination=temp[1];
|
||||
|
||||
temp=list[3].split("=");
|
||||
sID=temp[1].remove("\n");
|
||||
|
||||
t.ID=QStringToQint32(sID);
|
||||
|
||||
}
|
||||
else if((list[0].contains("STREAM")==true) && (list[1].contains("SEND")==true)){
|
||||
t.type=STREAM_SEND;
|
||||
|
||||
//get ID
|
||||
QStringList temp=list[2].split("=");
|
||||
QString sID=temp[1];
|
||||
t.ID=QStringToQint32(sID);
|
||||
|
||||
//Get Result
|
||||
if(list[3].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK;
|
||||
else if(list[2].contains("RESULT=FAILED",Qt::CaseInsensitive))t.result=FAILED;
|
||||
|
||||
//get STATE
|
||||
if(list[4].contains("STATE=BUFFER_FULL",Qt::CaseInsensitive))t.state=BUFFER_FULL;
|
||||
else if(list[4].contains("STATE=READY",Qt::CaseInsensitive))t.state=READY;
|
||||
|
||||
}
|
||||
else if((list[0].contains("STREAM")==true) && (list[1].contains("CLOSED")==true)){
|
||||
t.type=STREAM_CLOSED;
|
||||
|
||||
//Get RESULT
|
||||
if(list[2].contains("RESULT",Qt::CaseInsensitive))
|
||||
{
|
||||
|
||||
if(list[2].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK;
|
||||
else if(list[2].contains("RESULT=CANT_REACH_PEER",Qt::CaseInsensitive))t.result=CANT_REACH_PEER;
|
||||
else if(list[2].contains("RESULT=I2P_ERROR",Qt::CaseInsensitive))t.result=I2P_ERROR;
|
||||
else if(list[2].contains("RESULT=PEER_NOT_FOUND",Qt::CaseInsensitive))t.result=PEER_NOT_FOUND;
|
||||
else if(list[2].contains("RESULT=TIMEOUT",Qt::CaseInsensitive))t.result=TIMEOUT;
|
||||
else{
|
||||
t.type=ERROR_IN_ANALYSE;
|
||||
return t;
|
||||
}
|
||||
|
||||
//Get ID
|
||||
QStringList temp=list[3].split("=");
|
||||
QString sID=temp[1];
|
||||
t.ID=QStringToQint32(sID);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(list[3].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK;
|
||||
else if(list[3].contains("RESULT=CANT_REACH_PEER",Qt::CaseInsensitive))t.result=CANT_REACH_PEER;
|
||||
else if(list[3].contains("RESULT=I2P_ERROR",Qt::CaseInsensitive))t.result=I2P_ERROR;
|
||||
else if(list[3].contains("RESULT=PEER_NOT_FOUND",Qt::CaseInsensitive))t.result=PEER_NOT_FOUND;
|
||||
else if(list[3].contains("RESULT=TIMEOUT",Qt::CaseInsensitive))t.result=TIMEOUT;
|
||||
else{
|
||||
t.type=ERROR_IN_ANALYSE;
|
||||
return t;
|
||||
}
|
||||
|
||||
//Get ID
|
||||
QStringList temp=list[2].split("=");
|
||||
QString sID=temp[1];
|
||||
|
||||
t.ID=QStringToQint32(sID);
|
||||
|
||||
}
|
||||
|
||||
//----------------
|
||||
//Get Message
|
||||
if(Message.contains("MESSAGE=",Qt::CaseInsensitive)){
|
||||
t.Message=Message.mid(Message.indexOf("MESSAGE=")+8);
|
||||
t.Message.remove("\n");
|
||||
}
|
||||
//----------------
|
||||
}
|
||||
else if((list[0].contains("NAMING")==true) && (list[1].contains("REPLY")==true)){
|
||||
t.type=NAMING_REPLY;
|
||||
|
||||
//get Result
|
||||
if(list[2].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK;
|
||||
else if(list[2].contains("RESULT=INVALID_KEY",Qt::CaseInsensitive))t.result=INVALID_KEY;
|
||||
else if(list[2].contains("RESULT=KEY_NOT_FOUND",Qt::CaseInsensitive))t.result=KEY_NOT_FOUND;
|
||||
else{
|
||||
t.type=ERROR_IN_ANALYSE;
|
||||
return t;
|
||||
}
|
||||
//get Name
|
||||
QStringList temp=list[3].split("=");
|
||||
t.Name=temp[1].remove("\n");
|
||||
|
||||
//get Value
|
||||
if(list.count()-1>=4){
|
||||
QStringList temp=list[4].split("=");
|
||||
t.Value=temp[1].remove("\n");
|
||||
}
|
||||
//Get Message
|
||||
if(Message.contains("MESSAGE=",Qt::CaseInsensitive)){
|
||||
t.Message=Message.mid(Message.indexOf("MESSAGE=")+8);
|
||||
t.Message.remove("\n");
|
||||
}
|
||||
}
|
||||
else{
|
||||
t.type=ERROR_IN_ANALYSE;
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
qint32 I2PSamMessageAnalyser::QStringToQint32(QString value)
|
||||
{
|
||||
bool OK=false;
|
||||
qint32 iValue =value.toInt ( &OK,10 );
|
||||
|
||||
if(OK==false)
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setIcon(QMessageBox::Warning);
|
||||
msgBox.setText("I2PSamMessageAnalyser");
|
||||
msgBox.setInformativeText("cant parse value: "+value );
|
||||
msgBox.setStandardButtons(QMessageBox::Ok);
|
||||
msgBox.setDefaultButton(QMessageBox::Ok);
|
||||
msgBox.exec();
|
||||
}
|
||||
return iValue;
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue