~holger-seelig/titania/3.0

« back to all changes in this revision

Viewing changes to libtitania-x3d/Titania/X3D/Components/Networking/X3DUrlObject.cpp

  • Committer: Holger Seelig
  • Date: 2013-08-05 19:51:24 UTC
  • Revision ID: holger.seelig@yahoo.de-20130805195124-weg56pajdi69mt1j
Test implementation of parallel load of images.

Show diffs side-by-side

added added

removed removed

Lines of Context:
63
63
 
64
64
X3DUrlObject::Fields::Fields () :
65
65
        url (new MFString ()),
66
 
        loadTime (new SFTime ()),
67
 
        urlError (new MFString ())
 
66
        loadState (NOT_STARTED_STATE),
 
67
        urlError ()
68
68
{ }
69
69
 
70
70
X3DUrlObject::X3DUrlObject () :
71
 
        X3DBaseNode (),
72
 
             fields (),
73
 
          loadState (NOT_STARTED_STATE),
74
 
          userAgent (),
75
 
           worldURL ()
 
71
        X3DBaseNode (),
 
72
               fields (),
 
73
            userAgent (),
 
74
             worldURL (),
 
75
                mutex ()
76
76
{
77
77
        addNodeType (X3DConstants::X3DUrlObject);
78
78
 
79
 
        addChildren (loadTime (), urlError ());
 
79
        addChildren (loadState (), urlError ());
80
80
}
81
81
 
82
82
void
85
85
        userAgent = getBrowser () -> getName () + "/" + getBrowser () -> getVersion () + " (X3D Browser; +http://titania.create3000.de)";
86
86
}
87
87
 
88
 
//  Element Access
89
 
 
90
 
void
91
 
X3DUrlObject::setLoadState (LoadState value)
92
 
{
93
 
        loadState = value;
94
 
 
95
 
        if (loadState == COMPLETE_STATE)
96
 
        {
97
 
                loadTime () = getCurrentTime ();
98
 
        }
99
 
}
100
 
 
101
88
//  X3D Creation Handling
102
89
 
103
90
X3DSFNode <Scene>
244
231
throw (Error <INVALID_URL>,
245
232
       Error <URL_UNAVAILABLE>)
246
233
{
 
234
        std::lock_guard <std::mutex> lock (mutex);
 
235
 
247
236
        if (uri .empty ())
248
237
                throw Error <INVALID_URL> ("Couldn't load URL '" + uri + "'");
249
238
 
250
239
        std::clog << "Trying to load URI '" << uri << "': " << std::endl;
251
240
 
252
241
        basic::uri transformedURL = transformUri (uri);
253
 
        std::clog << "\tResolved URL is '" << transformedURL << "'" << std::endl;
 
242
        std::clog << "\tTransformed URL is '" << transformedURL << "'" << std::endl;
254
243
 
255
244
        basic::ifilestream stream (basic::http::GET, transformedURL, 15000);
256
245
 
262
251
 
263
252
                if (stream)
264
253
                {
265
 
                        worldURL = stream .url ();
 
254
                        setWorldURL (stream .url ());
266
255
 
267
 
                        std::clog << "\tLoaded URL is '" << worldURL << "': " << std::endl;
 
256
                        std::clog << "\tLoaded URL is '" << getWorldURL () << "': " << std::endl;
268
257
                        std::clog << "Done." << std::endl;
269
258
 
270
259
                        return stream;
311
300
 
312
301
void
313
302
X3DUrlObject::dispose ()
314
 
{
315
 
        removeChildren (loadTime (), urlError ());
316
 
}
 
303
{ }
317
304
 
318
305
} // X3D
319
306
} // titania