#ifndef EQSTREAMIDENT_H_ #define EQSTREAMIDENT_H_ #include "eq_stream_intf.h" #include "timer.h" #include #include #include #define STREAM_IDENT_WAIT_MS 30000 class OpcodeManager; class StructStrategy; class EQStreamInterface; class EQStreamIdentifier { public: ~EQStreamIdentifier(); //registration interface. void RegisterPatch(const EQStreamInterface::Signature &sig, const char *name, OpcodeManager ** opcodes, const StructStrategy *structs); //main processing interface void Process(); void AddStream(std::shared_ptr eqs); EQStreamInterface *PopIdentified(); protected: //registered patches.. class Patch { public: std::string name; EQStreamInterface::Signature signature; OpcodeManager ** opcodes; const StructStrategy *structs; }; std::vector m_patches; //we own these objects. //pending streams.. class Record { public: Record(std::shared_ptr s); std::shared_ptr stream; //we own this Timer expire; }; std::vector m_streams; //we own these objects, and the streams contained in them. std::queue m_identified; //we own these objects }; #endif /*EQSTREAMIDENT_H_*/