📄 request.cpp
字号:
/** * Copyright (C) 2004-2005 Savoir-Faire Linux inc. * Author: Jean-Philippe Barrette-LaPierre * <jean-philippe.barrette-lapierre@savoirfairelinux.com> * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <qobject.h>#include <qstringlist.h>#include <qurl.h>#include "globals.h"#include "DebugOutput.hpp"#include "CallManager.hpp"#include "Request.hpp"#include "Requester.hpp"#include "Url.hpp"Request::Request(const QString &sequenceId, const QString &command, const std::list< QString > &args) : mSequenceId(sequenceId) , mCommand(command) , mArgs(args){}std::list< QString >Request::parseArgs(const QString &message){ QStringList list(QStringList::split(" ", message)); std::list< QString > args; for(QStringList::Iterator it = list.begin(); it != list.end(); ++it) { QString qs(*it); Url::decode(qs); args.push_back(qs); } return args;}voidRequest::onError(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("Received an error: " "Code/SeqID: %1/%2\t" "Message: %3\n") .arg(code) .arg(mSequenceId) .arg(message); QString messageDecoded = message; Url::decode(messageDecoded); emit error(messageDecoded, code);}voidRequest::onEntry(const QString &code, const QString &message){ DebugOutput::instance() << QObject::tr("Received a temp info: " "Code/SeqID: %1/%2\t" "Message: %3\n") .arg(code) .arg(mSequenceId) .arg(message); emit entry(message, code); // This is bad code, I know. I need to find a better way. std::list< QString > args = parseArgs(message); QString arg1, arg2, arg3, arg4, arg5; if(args.size() >= 1) { arg1 = *args.begin(); args.pop_front(); } if(args.size() >= 1) { arg2 = *args.begin(); args.pop_front(); } else { // if we have only one argument, we send a signal with one parameter emit parsedEntry(arg1); return; } if(args.size() >= 1) { arg3 = *args.begin(); args.pop_front(); } if(args.size() >= 1) { arg4 = *args.begin(); args.pop_front(); } if(args.size() >= 1) { arg5 = *args.begin(); args.pop_front(); } emit parsedEntry(arg1, arg2, arg3, arg4, arg5);}voidRequest::onSuccess(const QString &code, const QString &message){// DebugOutput::instance() << QObject::tr("Received a success info: "// "Code/SeqID: %1/%2\t"// "Message: %3\n")// .arg(code)// .arg(mSequenceId)// .arg(message); QString messageDecoded = message; Url::decode(messageDecoded); emit success(messageDecoded, code);}QStringRequest::toString(){ QString output = mCommand + " " + mSequenceId; for(std::list< QString >::const_iterator pos = mArgs.begin(); pos != mArgs.end(); pos++) { QString ostring(*pos); QUrl::encode(ostring); output += " " + ostring; } output += "\n"; return output;}CallRelatedRequest::CallRelatedRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : Request(sequenceId, command, args){ if(args.begin() != args.end()) { mCallId = *args.begin(); }}voidCallRelatedRequest::onError(const QString &code, const QString &message){ if(CallManager::instance().exist(mCallId)) { onError(CallManager::instance().getCall(mCallId), code, message); } else { DebugOutput::instance() << QObject::tr("CallRelatedRequest: Trying to retreive an unregistred call (%1)\n").arg(mCallId); }}voidCallRelatedRequest::onError(Call, const QString &, const QString &){}voidCallRelatedRequest::onEntry(const QString &code, const QString &message){ if(CallManager::instance().exist(mCallId)) { onEntry(CallManager::instance().getCall(mCallId), code, message); } else { DebugOutput::instance() << QObject::tr("CallRelatedRequest: Trying to retreive an unregistred call (%1)\n").arg(mCallId); }}voidCallRelatedRequest::onEntry(Call, const QString &, const QString &){}voidCallRelatedRequest::onSuccess(const QString &code, const QString &message){ if(CallManager::instance().exist(mCallId)) { onSuccess(CallManager::instance().getCall(mCallId), code, message); } else { DebugOutput::instance() << QObject::tr("CallRelatedRequest: Trying to retreive an unregistred call (%1)\n").arg(mCallId); }}voidCallRelatedRequest::onSuccess(Call, const QString &, const QString &){}AccountRequest::AccountRequest(const QString &sequenceId, const QString &command, const std::list< QString > &args) : Request(sequenceId, command, args) , mAccountId(*args.begin()){}voidAccountRequest::onError(const QString &code, const QString &message){ onError(Account(Requester::instance().getSessionIdFromSequenceId(getSequenceId()), mAccountId), code, message);}voidAccountRequest::onError(Account, const QString &, const QString &){}voidAccountRequest::onEntry(const QString &code, const QString &message){ onEntry(Account(Requester::instance().getSessionIdFromSequenceId(getSequenceId()), mAccountId), code, message);}voidAccountRequest::onEntry(Account, const QString &, const QString &){}voidAccountRequest::onSuccess(const QString &code, const QString &message){ onSuccess(Account(Requester::instance().getSessionIdFromSequenceId(getSequenceId()), mAccountId), code, message);}voidAccountRequest::onSuccess(Account, const QString &, const QString &){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -