Eris::TypeService Class Reference

A service class querying and caching types. More...

#include <TypeService.h>

List of all members.

Public Member Functions

 TypeService (Connection *con)
void init ()
TypeInfoPtr getTypeByName (const std::string &tynm)
 find the TypeInfo for the named type; this may involve a search, or a map lookup.
TypeInfoPtr getTypeForAtlas (const Atlas::Objects::Root &obj)
 retrive the TypeInfo for an object; this should be faster (hopefully constant time) since it can take advantage of integer typeids
TypeInfoPtr findTypeByName (const std::string &tynm)
 Lookup the requested type, by name, and return NULL if it's unknown.
void listUnbound ()
void handleOperation (const Atlas::Objects::Operation::RootOperation &)

Public Attributes

sigc::signal< void, TypeInfoPtrBoundType
 emitted when a new type is available and bound to it's parents
sigc::signal< void, TypeInfoPtrBadType
 emitted when a type is confirmed as being undefined

Protected Types

typedef std::map< std::string,
TypeInfoPtr
TypeInfoMap

Protected Member Functions

void sendRequest (const std::string &id)
 request the information about a type from the server.
void recvTypeInfo (const Atlas::Objects::Root &atype)
void recvError (const Atlas::Objects::Operation::Get &get)
TypeInfoPtr defineBuiltin (const std::string &name, TypeInfoPtr parent)

Protected Attributes

TypeInfoMap m_types
 The easy bit : a simple map from 'string-id' (e.g 'look' or 'farmer') to the corresponding TypeInfo instance.
Connectionm_con
bool m_inited


Detailed Description

A service class querying and caching types.

Member Function Documentation

TypeInfoPtr Eris::TypeService::findTypeByName ( const std::string &  tynm  ) 

Lookup the requested type, by name, and return NULL if it's unknown.

References m_types.

TypeInfoPtr Eris::TypeService::getTypeByName ( const std::string &  tynm  ) 

find the TypeInfo for the named type; this may involve a search, or a map lookup.

The returned TypeInfo node may not be bound, and the caller should verify this before using the type.

Todo:
Verify the id is not in the authorative invalid ID list

References m_types, and sendRequest().

Referenced by Eris::Entity::getUseOperations(), and Eris::TypeInfo::resolveChildren().

void Eris::TypeService::sendRequest ( const std::string &  id  )  [protected]

request the information about a type from the server.

Parameters:
id The ID of the type to lookup

References Eris::Connection::getResponder(), and Eris::Connection::send().

Referenced by getTypeByName().


Member Data Documentation

TypeInfoMap Eris::TypeService::m_types [protected]

The easy bit : a simple map from 'string-id' (e.g 'look' or 'farmer') to the corresponding TypeInfo instance.

This could be a hash_map in the future, if efficeny consdierations indicate it would be worthwhile

Referenced by findTypeByName(), and getTypeByName().


The documentation for this class was generated from the following files:

Generated for Eris by  doxygen 1.5.8