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.
78 lines
2.0 KiB
78 lines
2.0 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef FILETRANSFERMGR_H |
|
#define FILETRANSFERMGR_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
#include "inetchannel.h" |
|
|
|
|
|
typedef int FileTransferID_t; |
|
|
|
|
|
abstract_class CFileTransferMgr |
|
{ |
|
public: |
|
|
|
CFileTransferMgr(); |
|
virtual ~CFileTransferMgr(); |
|
|
|
// Start transmitting a file. |
|
// The user data is sent in the header and can include the filename, its ID, or whatever. |
|
FileTransferID_t StartSending( |
|
INetChannel *pDest, |
|
const void *pUserData, |
|
int userDataLength, |
|
const char *pFileData, |
|
int fileLength, |
|
int bytesPerSecond ); |
|
|
|
// Kill all file transfers on this channel. |
|
void HandleClientDisconnect( INetChannel *pChannel ); |
|
|
|
// Call this when data comes in. |
|
void HandleReceivedData( INetChannel *pChannel, const void *pData, int len ); |
|
|
|
// Iterate the list of files being downloaded. |
|
int FirstIncoming() const; |
|
int NextIncoming( int i ) const; |
|
int InvalidIncoming() const; |
|
void GetIncomingUserData( int i, const void* &pData, int &dataLen ); |
|
|
|
// Overridables. |
|
public: |
|
|
|
// Send outgoing data for a file (reliably). |
|
// Returns false if it was unable to send the chunk. If this happens, the file transfer manager |
|
// will retry the chunk a few times, and eventually cancel the file transfer if the problem keeps happening. |
|
virtual bool SendChunk( INetChannel *pDest, const void *pData, int len ) = 0; |
|
|
|
// Had to stop sending because there was a problem sending a chunk, or |
|
// the net channel went away. |
|
virtual void OnSendCancelled( FileTransferID_t id ) = 0; |
|
|
|
// Called when it's done transmitting a file. |
|
virtual void OnFinishedSending( |
|
INetChannel *pDest, |
|
const void *pUserData, |
|
int userDataLen, |
|
FileTransferID_t id ) = 0; |
|
|
|
// Called when a file is received. |
|
virtual void OnFileReceived( |
|
INetChannel *pChan, |
|
const void *pUserData, |
|
int userDataLength, |
|
const char *pFileData, |
|
int fileLength ) = 0; |
|
}; |
|
|
|
|
|
#endif // FILETRANSFERMGR_H
|
|
|