Sirikata
|
00001 // Copyright (c) 2011 Sirikata Authors. All rights reserved. 00002 // Use of this source code is governed by a BSD-style license that can 00003 // be found in the LICENSE file. 00004 00005 00006 #ifndef _SIRIKATA_CORE_DATA_TRANSFER_HANDLER_HPP_ 00007 #define _SIRIKATA_CORE_DATA_TRANSFER_HANDLER_HPP_ 00008 00009 #include <sirikata/core/transfer/RemoteFileMetadata.hpp> 00010 #include <sirikata/core/transfer/TransferPool.hpp> 00011 #include <sirikata/core/transfer/TransferHandlers.hpp> 00012 00013 namespace Sirikata { 00014 namespace Transfer { 00015 00016 /* Implements "name lookup" for data URIs. */ 00017 class SIRIKATA_EXPORT DataNameHandler 00018 : public NameHandler, public AutoSingleton<DataNameHandler> { 00019 public: 00020 DataNameHandler(); 00021 ~DataNameHandler(); 00022 00023 /* 00024 * Resolves a metadata request by reading from disk 00025 */ 00026 void resolve(std::tr1::shared_ptr<MetadataRequest> request, NameCallback callback); 00027 00028 static DataNameHandler& getSingleton(); 00029 static void destroy(); 00030 }; 00031 00032 /* Implements chunk "downloading" for data URIs. */ 00033 class SIRIKATA_EXPORT DataChunkHandler 00034 : public ChunkHandler, public AutoSingleton<DataChunkHandler> { 00035 public: 00036 DataChunkHandler(); 00037 ~DataChunkHandler(); 00038 00039 /* 00040 * Reads the chunk referenced and calls callback when completed 00041 */ 00042 void get(std::tr1::shared_ptr<RemoteFileMetadata> file, 00043 std::tr1::shared_ptr<Chunk> chunk, ChunkCallback callback); 00044 00045 static DataChunkHandler& getSingleton(); 00046 static void destroy(); 00047 }; 00048 00049 } // namespace Transfer 00050 } // namespace Sirikata 00051 00052 #endif //_SIRIKATA_CORE_DATA_TRANSFER_HANDLER_HPP_