Eris
1.4.0
|
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. More... | |
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. More... | |
void | handleOperation (const Atlas::Objects::Operation::RootOperation &) |
void | sendRequest (const std::string &id) |
request the information about a type from the server. More... | |
void | setTypeProviderId (std::string id) |
Set another provider of type data than the connection. More... | |
Public Attributes | |
sigc::signal< void, TypeInfoPtr > | BoundType |
emitted when a new type is available and bound to it's parents | |
sigc::signal< void, TypeInfoPtr > | BadType |
emitted when a type is confirmed as being undefined | |
Protected Types | |
typedef std::unordered_map< std::string, TypeInfoPtr > | TypeInfoMap |
Protected Member Functions | |
void | recvTypeInfo (const Atlas::Objects::Root &atype) |
void | recvError (const Atlas::Objects::Operation::Get &get) |
void | recvTypeUpdate (const Atlas::Objects::Root &atype) |
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. More... | |
Connection * | m_con |
bool | m_inited |
std::string | m_type_provider_id |
An optional type provider, to which requests for types are sent. | |
A service class querying and caching types.
TypeInfoPtr Eris::TypeService::findTypeByName | ( | const std::string & | tynm | ) |
Lookup the requested type, by name, and return NULL if it's unknown.
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.
References sendRequest().
Referenced by getTypeForAtlas(), Eris::TypeInfo::processTypeData(), and Eris::TypeInfo::resolveChildren().
void Eris::TypeService::sendRequest | ( | const std::string & | id | ) |
request the information about a type from the server.
id | The ID of the type to lookup |
References BadType, Eris::getNewSerialno(), m_type_provider_id, and Eris::Connection::send().
Referenced by getTypeByName(), getTypeForAtlas(), and Eris::TypeInfo::refresh().
void Eris::TypeService::setTypeProviderId | ( | std::string | id | ) |
Set another provider of type data than the connection.
This should be set to the external mind once an entity has been possessed, since the external mind has access to more type data (for example the type of the entity itself).
id |
References m_type_provider_id.
Referenced by Eris::Avatar::Avatar().
|
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 efficiency considerations indicate it would be worthwhile