19 #ifndef GNASH_MOVIE_LOADER_H
20 #define GNASH_MOVIE_LOADER_H
22 #include <boost/intrusive_ptr.hpp>
24 #include <boost/ptr_container/ptr_list.hpp>
25 #include <boost/noncopyable.hpp>
26 #include <boost/thread/thread.hpp>
27 #include <boost/thread/condition.hpp>
28 #include <boost/thread/barrier.hpp>
36 class movie_definition;
74 void loadMovie(
const std::string&
url,
const std::string& target,
82 void processCompletedRequests();
84 void setReachable()
const;
89 class Request : boost::noncopyable {
94 Request(
const URL&
u,
const std::string&
t,
95 const std::string* postdata,
as_object* handler)
106 _postData = *postdata;
111 const std::string& getTarget()
const {
return _target; }
112 const URL& getURL()
const {
return _url; }
113 const std::string& getPostData()
const {
return _postData; }
114 bool usePost()
const {
return _usePost; }
116 void setReachable()
const {
133 bool getCompleted(boost::intrusive_ptr<movie_definition>& md)
const
135 boost::mutex::scoped_lock lock(_mutex);
143 boost::mutex::scoped_lock lock(_mutex);
148 bool completed()
const
150 boost::mutex::scoped_lock lock(_mutex);
161 void setCompleted(boost::intrusive_ptr<movie_definition> md)
163 boost::mutex::scoped_lock lock(_mutex);
172 std::string _postData;
173 boost::intrusive_ptr<movie_definition> _mdef;
174 mutable boost::mutex _mutex;
180 typedef boost::ptr_list<Request> Requests;
183 mutable boost::mutex _requestsMutex;
185 void processRequests();
186 void processRequest(Request&
r);
187 void clearRequests();
193 bool processCompletedRequest(
const Request& r);
200 boost::mutex _killMutex;
202 boost::condition _wakeup;
207 std::auto_ptr<boost::thread> _thread;
212 boost::barrier _barrier;
218 #endif // GNASH_MOVIE_LOADER_H