aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/dcc/DccDescriptor.h
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2011-01-01 20:19:56 +0000
committerGravatar Szymon Tomasz Stefanek2011-01-01 20:19:56 +0000
commitc601b5a27f74b16158adafe429faefbe573e64a2 (patch)
treea3cde3206a45628f8ac86e8dfbdab70b20c3a831 /src/modules/dcc/DccDescriptor.h
parentprobable compilation fix for rijndaled/crypto++ (diff)
downloadKVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.tar.gz
KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.tar.bz2
KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.zip
The big rename for modules. Still some details remaining.
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5284 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/dcc/DccDescriptor.h')
-rw-r--r--src/modules/dcc/DccDescriptor.h158
1 files changed, 158 insertions, 0 deletions
diff --git a/src/modules/dcc/DccDescriptor.h b/src/modules/dcc/DccDescriptor.h
new file mode 100644
index 000000000..ae5784dc5
--- /dev/null
+++ b/src/modules/dcc/DccDescriptor.h
@@ -0,0 +1,158 @@
+#ifndef _DESCRIPTOR_H_
+#define _DESCRIPTOR_H_
+//=============================================================================
+//
+// File : DccDescriptor.h
+// Creation date : Tue Jul 23 01:11:52 2002 GMT by Szymon Stefanek
+//
+// This file is part of the KVIrc irc client distribution
+// Copyright (C) 2002-2010 Szymon Stefanek (oragma at kvirc dot net)
+//
+// 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 opinion) 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+//=============================================================================
+
+#include "KviCString.h"
+#include "KviConsoleWindow.h"
+#include "KviPointerHashTable.h"
+
+class DccWindow;
+class DccFileTransfer;
+class DccDescriptor
+{
+public:
+ DccDescriptor(KviConsoleWindow * pConsole);
+ DccDescriptor(const DccDescriptor & src);
+
+ ~DccDescriptor();
+protected:
+ KviConsoleWindow * m_pConsole;
+
+ // mIrc zero port reverse send/chat extension
+ KviCString m_szZeroPortRequestTag;
+
+ unsigned int m_uId; // this dcc session ID
+ QString m_szId;
+
+ DccWindow * m_pDccWindow; // 0 if it has no window
+ DccFileTransfer * m_pDccTransfer; // 0 if it is not a transfer
+
+ bool m_bCreationEventTriggered;
+public:
+ // A console that this DCC is bound to (might be replaced while we wait for user acknowledge in dialogs)
+ KviConsoleWindow * console() const { return m_pConsole; };
+ void setConsole(KviConsoleWindow * c){ m_pConsole = c; };
+
+ DccWindow * window() const { return m_pDccWindow; };
+ void setWindow(DccWindow * w){ m_pDccWindow = w; };
+
+ DccFileTransfer * transfer() const { return m_pDccTransfer; };
+ void setTransfer(DccFileTransfer * t){ m_pDccTransfer = t; };
+
+ // mIrc zero port reverse send/chat extension
+ bool isZeroPortRequest() const { return m_szZeroPortRequestTag.hasData(); };
+ const char * zeroPortRequestTag() const { return m_szZeroPortRequestTag.ptr(); };
+ void setZeroPortRequestTag(const KviCString &szTag){ m_szZeroPortRequestTag = szTag; };
+
+ unsigned int id() const { return m_uId; };
+ const QString & idString() const { return m_szId; };
+ static DccDescriptor * find(unsigned int uId);
+ static KviPointerHashTable<int,DccDescriptor> * descriptorDict();
+
+ void triggerCreationEvent(); // this MUST be called by the creator of the descriptor!
+private:
+ void copyFrom(const DccDescriptor &src);
+public:
+ // Generic parameters
+ QString szType; // DCC protocol : CHAT, SCHAT, SEND, TSSEND....
+
+ bool bActive; // active or passive connection ?
+
+ QString szNick; // remote user nickname
+ QString szUser; // remote user name (unknown for passive dcc)
+ QString szHost; // remote user host (unknown for passive dcc)
+
+ QString szLocalNick; // local user nickname (always from irc)
+ QString szLocalUser; // local user username (always from irc)
+ QString szLocalHost; // local user hostname (always from irc)
+
+ QString szIp; // remote user ip (active dcc only)
+ QString szPort; // remote user port (active dcc only)
+
+ QString szListenIp; // passive only : ip to listen on
+ QString szListenPort; // passive only : port to listen on
+
+ bool bSendRequest; // passive only : true if we have to send the CTCP request
+
+ QString szFakeIp; // passive only : fake ip to send in the CTCP
+ QString szFakePort; // passive only : fake port to send in the CTCP
+
+ bool bDoTimeout; // the marshall has to setup a timeout ?
+
+ bool bIsTdcc; // is this a TDCC ?
+
+ bool bOverrideMinimize; // Override the default minimize option ?
+ bool bShowMinimized; // Show minimized ? (valid if bOverrideMinimize is true)
+
+ bool bAutoAccept; // Auto accepted dcc send/chat ?
+#ifdef COMPILE_SSL_SUPPORT
+ bool bIsSSL; // do we have to use SSL ?
+#endif
+ // Specific parameters
+
+ // DCC SEND/RECV
+
+ QString szFileName; // RECVFILE: incoming file name, SENDFILE: filename sent to the remote end
+ QString szFileSize; // RECVFILE: incoming file size, SENDFILE: remote resume size
+
+ QString szLocalFileName; // RECVFILE: save file name selected, SENDFILE: file to send
+ QString szLocalFileSize; // RECVFILE: local file size (to resume), SENDFILE: file to send size
+
+ bool bRecvFile; // do we have to RECEIVE the file or SEND it ?
+ bool bResume; // do we want to resume ?
+ bool bNoAcks; // blind dcc send ? (do not receive nor send acknowledges)
+
+ bool bIsIncomingAvatar; // It is an Incoming Avatar DCC SEND ?
+
+ // DCC VOICE
+ KviCString szCodec; // codec name
+ int iSampleRate; // Sample rate
+public:
+ QString protocol() const { return szType; };
+ bool isActive() const { return bActive; };
+ QString remoteNick() const { return szNick; };
+ QString remoteUser() const { return szUser; };
+ QString remoteHost() const { return szHost; };
+ QString remoteIp() const { return szIp; };
+ QString remotePort() const { return szPort; };
+ QString remoteFileName() const { return szFileName; };
+ QString remoteFileSize() const { return szFileSize; };
+ QString localNick() const { return szLocalNick; };
+ QString localUser() const { return szLocalUser; };
+ QString localHost() const { return szLocalHost; };
+ QString localIp() const { return szIp; };
+ QString localPort() const { return szPort; };
+ QString localFileName() const { return szLocalFileName; };
+ QString localFileSize() const { return szLocalFileSize; };
+ bool isFileUpload();
+ bool isFileDownload();
+ bool isDccChat();
+ bool isFileTransfer(){ return (isFileUpload() || isFileDownload()); };
+#ifdef COMPILE_SSL_SUPPORT
+ bool isSSL() const { return bIsSSL; };
+#endif
+};
+
+#endif //_DESCRIPTOR_H_