summaryrefslogtreecommitdiffstats
path: root/kopete/protocols/groupwise/libgroupwise/tasks/requesttask.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kopete/protocols/groupwise/libgroupwise/tasks/requesttask.cpp')
-rw-r--r--kopete/protocols/groupwise/libgroupwise/tasks/requesttask.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/kopete/protocols/groupwise/libgroupwise/tasks/requesttask.cpp b/kopete/protocols/groupwise/libgroupwise/tasks/requesttask.cpp
new file mode 100644
index 00000000..3788bb6e
--- /dev/null
+++ b/kopete/protocols/groupwise/libgroupwise/tasks/requesttask.cpp
@@ -0,0 +1,76 @@
+/*
+ Kopete Groupwise Protocol
+ requesttask.cpp - Ancestor of all tasks that carry out a user request
+
+ Copyright (c) 2004 SUSE Linux AG http://www.suse.com
+
+ Based on Iris, Copyright (C) 2003 Justin Karneges
+
+ Kopete (c) 2002-2004 by the Kopete developers <[email protected]>
+
+ *************************************************************************
+ * *
+ * This library is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU Lesser General Public *
+ * License as published by the Free Software Foundation; either *
+ * version 2 of the License, or (at your option) any later version. *
+ * *
+ *************************************************************************
+*/
+
+#include "gwfield.h"
+#include "client.h"
+#include "request.h"
+#include "response.h"
+#include "requestfactory.h"
+
+#include "requesttask.h"
+
+RequestTask::RequestTask( Task * parent )
+: Task( parent )
+{
+}
+
+bool RequestTask::forMe( Transfer * transfer ) const
+{
+ // see if we can down-cast transfer to a Response
+ Response * theResponse = dynamic_cast<Response *>(transfer);
+ return (theResponse && theResponse->transactionId() == m_transactionId );
+}
+
+void RequestTask::createTransfer( const QString & command, const Field::FieldList & fields )
+{
+ Request * request = client()->requestFactory()->request( command );
+ m_transactionId = request->transactionId();
+ request->setFields( fields );
+ Task::setTransfer( request );
+}
+
+void RequestTask::onGo()
+{
+ if ( transfer() )
+ {
+ client()->debug( QString( "%1::onGo() - sending %2 fields" ).arg( className() ).arg( static_cast<Request *>( transfer() )->command() ) );
+ send( static_cast<Request *>( transfer() ) );
+ }
+ else
+ client()->debug( "RequestTask::onGo() - called prematurely, no transfer set." );
+}
+
+bool RequestTask::take( Transfer * transfer )
+{
+ if ( forMe( transfer ) )
+ {
+ client()->debug( "RequestTask::take() - Default take() Accepting transaction ack, taking no further action" );
+ Response * response = dynamic_cast<Response *>( transfer );
+ if ( response->resultCode() == GroupWise::None )
+ setSuccess();
+ else
+ setError( response->resultCode() );
+ return true;
+ }
+ else
+ return false;
+}
+
+#include "requesttask.moc"