From 971ad4fe9bf4c48495f61a3137e996e2a322bbb3 Mon Sep 17 00:00:00 2001 From: drbob Date: Thu, 19 Jun 2008 22:49:23 +0000 Subject: [PATCH] Added header files for new file transfer design. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@615 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/ft/Makefile | 24 ++++++++++ libretroshare/src/ft/ftfilecreator.h | 56 ++++++++++++++++++++++ libretroshare/src/ft/ftfileprovider.h | 67 +++++++++++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 libretroshare/src/ft/Makefile create mode 100644 libretroshare/src/ft/ftfilecreator.h create mode 100644 libretroshare/src/ft/ftfileprovider.h diff --git a/libretroshare/src/ft/Makefile b/libretroshare/src/ft/Makefile new file mode 100644 index 000000000..8011fc37d --- /dev/null +++ b/libretroshare/src/ft/Makefile @@ -0,0 +1,24 @@ + +RS_TOP_DIR = .. +##### Define any flags that are needed for this section ####### +############################################################### + +############################################################### +include $(RS_TOP_DIR)/scripts/config.mk +############################################################### + +RSOBJ = + +TESTOBJ = #ftcachetest.o + +TESTS = #ftcachetest + +all: librs tests + +#ftcachetest : ftcachetest.o $(OBJ) +# $(CC) $(CFLAGS) -o ftcachetest ftcachetest.o $(OBJ) $(LIBS) + +############################################################### +include $(RS_TOP_DIR)/scripts/rules.mk +############################################################### + diff --git a/libretroshare/src/ft/ftfilecreator.h b/libretroshare/src/ft/ftfilecreator.h new file mode 100644 index 000000000..8547d142f --- /dev/null +++ b/libretroshare/src/ft/ftfilecreator.h @@ -0,0 +1,56 @@ +/* + * libretroshare/src/ft/ ftfilecreator.h + * + * File Transfer for RetroShare. + * + * Copyright 2008 by Robert Fernie. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License Version 2 as published by the Free Software Foundation. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + * Please report all bugs and problems to "retroshare@lunamutt.com". + * + */ + +#ifndef FT_FILE_CREATOR_HEADER +#define FT_FILE_CREATOR_HEADER + +/* + * ftFileCreator + * + * TODO: Serialiser Load / Save. + * + */ + +class ftFileCreator: public ftFileProvider +{ +public: + + ftFileCreator(std::string savepath, uint64_t size, std::string hash); + ~ftFileCreator(); + + /* overloaded from FileProvider */ +virtual bool getFileData(uint64_t offset, uint32_t chunk_size, void *data); + + /* creation functions for FileCreator */ +bool getMissingChunk(uint64_t &offset, uint32_t &chunk); +bool addFileData(uint64_t offset, uint32_t chunk_size, void *data); + +private: + + /* TO BE DECIDED */ +}; + + +#endif // FT_FILE_PROVIDER_HEADER diff --git a/libretroshare/src/ft/ftfileprovider.h b/libretroshare/src/ft/ftfileprovider.h new file mode 100644 index 000000000..1b78e5c5a --- /dev/null +++ b/libretroshare/src/ft/ftfileprovider.h @@ -0,0 +1,67 @@ +/* + * libretroshare/src/ft ftFileProvider.h + * + * File Transfer for RetroShare. + * + * Copyright 2008 by Robert Fernie. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License Version 2 as published by the Free Software Foundation. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + * Please report all bugs and problems to "retroshare@lunamutt.com". + * + */ + +#ifndef FT_FILE_PROVIDER_HEADER +#define FT_FILE_PROVIDER_HEADER + +/* + * ftFileProvider. + * + */ + +class ftFileProvider +{ +public: + + ftFileProvider(std::string path, uint64_t size, std::string hash); + ~ftFileProvider(); + + /* array already allocated - + * just move chunk_size bytes to void *data buffer. + */ +virtual bool getFileData(uint64_t offset, uint32_t chunk_size, void *data); + + /* File Info */ +std::string getHash(); +uint64_t getFileSize(); + + +protected: + + std::string file_name; + std::string hash; + uint64_t total_size; + + FILE *fd; + + /* Statistics */ + std::string lastRequestor; + uint64_t req_loc; + uint32_t req_size; + time_t lastTS; +}; + + +#endif // FT_FILE_PROVIDER_HEADER