Eris  1.3.19
Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Eris::TypeService Class Reference

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

#include <TypeService.h>

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.

Referenced by Eris::TypeInfo::processTypeData().

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 authoritative invalid ID list

References m_types, and sendRequest().

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

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

request the information about a type from the server.

Parameters
idThe ID of the type to lookup

References 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: