From c8e697daf68f1c545ee3962d2f2e9b411c56b4f2 Mon Sep 17 00:00:00 2001 From: methodus Date: Sun, 30 Sep 2012 15:52:54 +0200 Subject: Working on plugin interface. PluginManager almost done. --- httptnt/resourceStreamer.ecpp | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) (limited to 'httptnt') diff --git a/httptnt/resourceStreamer.ecpp b/httptnt/resourceStreamer.ecpp index 2c64fed..96c4ea4 100644 --- a/httptnt/resourceStreamer.ecpp +++ b/httptnt/resourceStreamer.ecpp @@ -1,8 +1,8 @@ -<%args> -objectID; -int resourceID = 0; - -<%pre> +//<%args> +//objectID; +//int resourceID = 0; +// +//<%pre> #include #include #include @@ -16,11 +16,11 @@ int resourceID = 0; #include using namespace upnp; - -<# +// +//<# int doRequest(tnt::HttpReply reply, tnt::HttpRequest request, std::string objectID, int resourceID) { -#> -<%cpp> +//#> +//<%cpp> if(objectID.empty()){ reply.out() << "Object ID missing"; return HTTP_BAD_REQUEST; @@ -28,7 +28,7 @@ int doRequest(tnt::HttpReply reply, tnt::HttpRequest request, std::string object cMediaServer* server = cMediaServer::GetInstance(); cMediaManager& manager = server->GetManager(); - std::auto_ptr streamer(manager.GetResourceStreamer(objectID, resourceID)); + boost::shared_ptr streamer(manager.GetResourceStreamer(objectID, resourceID)); if(!streamer.get()){ reply.out() << "Object ID not found or invalid"; @@ -49,6 +49,11 @@ int doRequest(tnt::HttpReply reply, tnt::HttpRequest request, std::string object if(!request.isMethodHEAD()){ + if(!streamer->Open()){ + code = HTTP_INTERNAL_SERVER_ERROR; + goto ret; + } + int offset = 0, length = std::numeric_limits::max(); bool hasRange = false; @@ -66,7 +71,10 @@ int doRequest(tnt::HttpReply reply, tnt::HttpRequest request, std::string object } } - streamer->Seek(offset, SEEK_SET); + if(!streamer->Seek(offset, SEEK_SET)){ + code = HTTP_INTERNAL_SERVER_ERROR; + goto ret; + } } char buffer[KB(16)]; @@ -97,9 +105,10 @@ int doRequest(tnt::HttpReply reply, tnt::HttpRequest request, std::string object } ret: + streamer->Close(); //reply.out() << std::flush; return code; - -<# +// +//<# } -#> +//#> -- cgit v1.2.3