
#ifndef TN_MAP_TILE_DATA_REQUEST_H
#define TN_MAP_TILE_DATA_REQUEST_H

#include <string>
#include <boost/optional.hpp>

#include <foundation/SharedPtr.h>

#include "TnMapTileId.h"
#include "TnMapDataRequest.h"

/*! This class covers all properties of data request objects
 *  that are common to all tile-requesting objects. */

class TnMapTileDataRequest : public TnMapDataRequest
{
public:
    typedef Tn::Foundation::shared_ptr<TnMapTileDataRequest> ptr;
    
    virtual ~TnMapTileDataRequest() {}

    // Return tile id (engine object) associated with this request
    virtual TnMapTileId const & GetTileId() const = 0;

    /*  
     *  http://spaces.telenav.com:8080/display/eng/Version+Info+for+Vector+Data
     * 
     */

    virtual void SetVersion(std::string const &);

    virtual boost::optional<std::string> GetVersion() const;

protected:

    TnMapTileDataRequest();

private:

    boost::optional<std::string> m_versionOpt;
};

#endif
