#ifndef _resourceIo_
#define _resourceIo_

#include <qlist.h>
#include <stdlib.h>
#include <qnp.h>
#include <OpenVrml/VrmlNode.h>
#include <list>

// create a structure to track i/o state of asynchronous resource requests
struct resourceIo {
                enum FetchState { NOT_AVAILABLE, IN_PROGRESS, READY };
                int fetchState;
                char * url;
                char * localFilename;
                std::list<VrmlNode *> clientList; 
                ~resourceIo(){ ::free(url); ::free(localFilename); }
};

class resIoList {
        public:
                QList<resourceIo>riolist;

                resIoList();
                ~resIoList();
                const char* checkQueued(const char*, QNPInstance *);
                bool        updateList(const char*, const char*);
                bool        updateState(const char*, int);
                void        setClient(const char*, VrmlNode *);
                void        notify(const char* );

};

extern  resIoList *resourceIoList;

#endif

