You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvirc/src/modules/dcc/descriptor.h

164 lines
6.4 KiB

#ifndef _DESCRIPTOR_H_
#define _DESCRIPTOR_H_
//=============================================================================
//
// File : src/modules/dcc/descriptor.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-2004 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 "kvi_string.h"
#include "kvi_console.h"
#include "kvi_pointerhashtable.h"
class KviDccWindow;
class KviDccFileTransfer;
class KviDccDescriptor
{
public:
KviDccDescriptor(KviConsole * pConsole);
//KviDccDescriptor(const KviDccDescriptor & src);
~KviDccDescriptor();
protected:
KviConsole * m_pConsole;
// mIrc zero port reverse send/chat extension
KviStr m_szZeroPortRequestTag;
unsigned int m_uId; // this dcc session ID
TQString m_szId;
KviDccWindow * m_pDccWindow; // 0 if it has no window
KviDccFileTransfer * 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)
KviConsole * console() const { return m_pConsole; };
void setConsole(KviConsole * c){ m_pConsole = c; };
KviDccWindow * window() const { return m_pDccWindow; };
void setWindow(KviDccWindow * w){ m_pDccWindow = w; };
KviDccFileTransfer * transfer() const { return m_pDccTransfer; };
void setTransfer(KviDccFileTransfer * 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 KviStr &szTag){ m_szZeroPortRequestTag = szTag; };
unsigned int id() const { return m_uId; };
const TQString & idString() const { return m_szId; };
static KviDccDescriptor * find(unsigned int uId);
static KviPointerHashTable<int,KviDccDescriptor> * descriptorDict();
void triggerCreationEvent(); // this MUST be called by the creator of the descriptor!
//private:
// void copyFrom(const KviDccDescriptor &src);
public:
// Generic parameters
TQString szType; // DCC protocol : CHAT , SCHAT , SEND , TSSEND....
bool bActive; // active or passive connection ?
TQString szNick; // remote user nickname
TQString szUser; // remote user name (unknown for passive dcc)
TQString szHost; // remote user host (unknown for passive dcc)
TQString szLocalNick; // local user nickname (always from irc)
TQString szLocalUser; // local user username (always from irc)
TQString szLocalHost; // local user hostname (always from irc)
TQString szIp; // remote user ip (active dcc only)
TQString szPort; // remote user port (active dcc only)
TQString szListenIp; // passive only : ip to listen on
TQString szListenPort; // passive only : port to listen on
bool bSendRequest; // passive only : true if we have to send the CTCP request
TQString szFakeIp; // passive only : fake ip to send in the CTCP
TQString 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
TQString szFileName; // RECVFILE: incoming file name, SENDFILE: filename sent to the remote end
TQString szFileSize; // RECVFILE: incoming file size, SENDFILE: remote resume size
TQString szLocalFileName; // RECVFILE: save file name selected, SENDFILE: file to send
TQString 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
KviStr szCodec; // codec name
int iSampleRate; // Sample rate
public:
// new interface... but should be converted to TQString...
TQString protocol(){ return szType; };
bool isActive(){ return bActive; };
TQString remoteNick(){ return szNick; };
TQString remoteUser(){ return szUser; };
TQString remoteHost(){ return szHost; };
TQString remoteIp(){ return szIp; };
TQString remotePort(){ return szPort; };
TQString remoteFileName(){ return szFileName; };
TQString remoteFileSize(){ return szFileSize; };
TQString localNick(){ return szLocalNick; };
TQString localUser(){ return szLocalUser; };
TQString localHost(){ return szLocalHost; };
TQString localIp(){ return szIp; };
TQString localPort(){ return szPort; };
TQString localFileName(){ return szLocalFileName; };
TQString localFileSize(){ return szLocalFileSize; };
bool isFileUpload();
bool isFileDownload();
bool isDccChat();
bool isFileTransfer(){ return (isFileUpload() || isFileDownload()); };
};
#endif //_DESCRIPTOR_H_