Sirikata
libcore/include/sirikata/core/transfer/DataTransferHandler.hpp
Go to the documentation of this file.
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_