summaryrefslogtreecommitdiff
path: root/engine/filetransfermgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'engine/filetransfermgr.h')
-rw-r--r--engine/filetransfermgr.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/engine/filetransfermgr.h b/engine/filetransfermgr.h
new file mode 100644
index 0000000..f7b4aa9
--- /dev/null
+++ b/engine/filetransfermgr.h
@@ -0,0 +1,78 @@
+//========= 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