Urgent ====== - Fix case sensitivity problems in repository (just add an _Open method that ignores the case of the file). - Add newly implemented repository operations to protocol and to dispatcher. - Change INVALID_CLASS exceptions to NOT_FOUND (they're wrong in Repository). Topical To-Do List ================== - Instances: - Implement CIMRepository::getProperty() - Implement CIMRepository::setProperty() - Implement CIMRepository::deleteInstance() - Implement CIMRepository::modifyInstance() - Implement CIMRepository::enumerateInstances() - Implement CIMRepository::enumerateInstanceNames() - Handle inheritance in all instance operations. - Double check that all these operations work across protocol. - Check that they have keys during validation. - Associations: - Implement CIMRepository::referencesOf() - Implement CIMRepository::associatorsOf() - Implement protocol stubs for these operations. - Exceptions: - Force __FILE__ and __LINE__ argument on every usage of CIMException. - Clean up and consolidate exception classes. - Propagate underlying error messages across the CIM protocol. - References: - Validate arguments to CIMReference compound constructor and modifiers. (namespaces, hosts, classnames, and keybindings) - Be sure that escape sequences are handled inside of object names. For example: X.key1="Hello \"You\"" - Protocol: - Improve protocol tracing to show messages in both directions. - The TCPChannel::writeN() method blocks when the client and server are in the same process. That is because the client cannot read anything as long as writeN() is blocked on a synchronous write. - Figure out how to handle getProperty() return type. - Provide ACE Channel implementation (for porting purposes)? - Handle PARAMETER.REFARRAY in Procotol? - Ignore extraneous XML elements (loosely valid). - Porting: - Replace "std::something" with "STD(something)" - Replace "using namespace std" with "USING_NAMESPACE_PEGASUS" - Aesthetics/Consistency/Usability: - Change getLength() and getSize() to just size(): "Brevity is the soul of genius and of Lingerie". - Add methods to get objects by their names, in addition to index. For example: CIMProperty CIMClass::getProperty(const String& name); - Perform walkthrough to expose consistency problems. - Distinguish between private and public classes (otherwise, users may come to depend on classes with unstable interfaces). - Documentation: - Suggest newlines after methods. - Suggest use of "/** ... */" instead of "///" - Refine header file documentation. - Write Pegasus Architecture Paper. - Integrate DOC++ with make system (put all docs in doc tree): - Namespaces: - Implement create and destroy namespace (according to the standard). - Providers - Add CIM-Server handles to provider interface. - Implement MOF provider registration scheme (according to the standard). - WBEM Query Language - Find someone to work on standard. - Implement leve-1 parser. - MOF compiler: - Work with Bob to identify work items. - Threading - Write thread queuing document (input and output thread queue per provider). - Implement queuing. - Make reference counted objects thread safe (Mutexing and atomic increments). - Connectors - Work out basic concepts (write paper). - Package up pegasus in Install Shield application. - Install - Need install mechanism for Unix and Windows. - Interoperability - Fix reported bugs. - Internationalization - Handle UCS2 characters in XML (parsing and writing). - Repository: - Export to MOF. - Miscellaneous - Change CompareNoCase() to String::compareNoCase(). - Place configuration startup parameters in Repository (e.g., port). - Integrate logging - Figure out how to handle CIM null values. - Generalize iteration. - Figure out how inheritance of keys works. - Investiage weak assocations. - Provide conversions between DateTime and time_t. - Constraint hanlding - Enforce constraint qualifiers. - Disallow resetting size of fixed length arrays. - Optimization/Tuning - Shrink object sizes. - Use lighter I/O system (than C++ streams). - Run Purify on all sources (port to Sun first). - Optimize clear method on arrays (to not release memory). - Porting - Port to Solaris - Port to HPUX - Port to AIX - Testing - Test case insensitivity of class names and qualifier names. - Run Purify on all sources (port to Sun first). - Run CIM/XML test suite. - Server - Use Service class in cimserver - Implement Service class on Unix (daemonization from Comer book).