19 #ifndef GNASH_MOVIE_LOADER_H
20 #define GNASH_MOVIE_LOADER_H
22 #include <boost/intrusive_ptr.hpp>
25 #include <boost/ptr_container/ptr_list.hpp>
26 #include <boost/noncopyable.hpp>
27 #include <boost/thread/thread.hpp>
28 #include <boost/thread/condition.hpp>
29 #include <boost/thread/barrier.hpp>
37 class movie_definition;
75 void loadMovie(
const std::string&
url,
const std::string& target,
83 void processCompletedRequests();
85 void setReachable()
const;
90 class Request : boost::noncopyable {
95 Request(
const URL&
u,
const std::string&
t,
96 const std::string* postdata,
as_object* handler)
107 _postData = *postdata;
112 const std::string& getTarget()
const {
return _target; }
113 const URL& getURL()
const {
return _url; }
114 const std::string& getPostData()
const {
return _postData; }
115 bool usePost()
const {
return _usePost; }
117 void setReachable()
const {
134 bool getCompleted(boost::intrusive_ptr<movie_definition>& md)
const
136 boost::mutex::scoped_lock lock(_mutex);
144 boost::mutex::scoped_lock lock(_mutex);
149 bool completed()
const
151 boost::mutex::scoped_lock lock(_mutex);
162 void setCompleted(boost::intrusive_ptr<movie_definition> md)
164 boost::mutex::scoped_lock lock(_mutex);
173 std::string _postData;
174 boost::intrusive_ptr<movie_definition> _mdef;
175 mutable boost::mutex _mutex;
181 typedef boost::ptr_list<Request> Requests;
184 mutable boost::mutex _requestsMutex;
186 void processRequests();
187 void processRequest(Request&
r);
188 void clearRequests();
194 bool processCompletedRequest(
const Request& r);
201 boost::mutex _killMutex;
203 boost::condition _wakeup;
208 std::auto_ptr<boost::thread> _thread;
213 boost::barrier _barrier;
219 #endif // GNASH_MOVIE_LOADER_H