1 // This file may be redistributed and modified only under the terms of 2 // the GNU Lesser General Public License (See COPYING for details). 3 // Copyright (C) 2000 Stefanus Du Toit 4 5 #ifndef ATLAS_OBJECTS_DECODER_H 6 #define ATLAS_OBJECTS_DECODER_H 7 8 #include <Atlas/Message/DecoderBase.h> 9 10 namespace Atlas { namespace Objects { 11 12 class Root; 13 14 namespace Entity { 15 16 class Account; 17 class Admin; 18 class AdminEntity; 19 class Game; 20 class Player; 21 class RootEntity; 22 23 } 24 25 namespace Operation { 26 27 class Action; 28 class Appearance; 29 class Combine; 30 class Communicate; 31 class Create; 32 class Delete; 33 class Disappearance; 34 class Divide; 35 class Error; 36 class Feel; 37 class Get; 38 class Imaginary; 39 class Info; 40 class Listen; 41 class Login; 42 class Logout; 43 class Look; 44 class Move; 45 class Perceive; 46 class Perception; 47 class RootOperation; 48 class Set; 49 class Sight; 50 class Smell; 51 class Sniff; 52 class Sound; 53 class Talk; 54 class Touch; 55 56 } 57 58 /** Objects hierarchy decoder 59 * 60 * This decoder can be bound to a codec, will assemble incoming messages, 61 * check their type, convert them into the appropriate instance in the 62 * Objects hierarchy and call the relevant member functions, which 63 * subclasses can conveniently override to pick up the object. 64 * 65 * @see Atlas::Objects::Encoder 66 * @author Stefanus Du Toit <sdt@gmx.net> 67 */ 68 class Decoder : public Atlas::Message::DecoderBase 69 { 70 public: 71 /// Default destructor. 72 virtual ~Decoder(); 73 74 protected: 75 /// Overridden by Objects::Decoder to retrieve the object. 76 virtual void objectArrived(const Atlas::Message::Element&); 77 78 /// An unknown object has arrived. unknownObjectArrived(const Atlas::Message::Element &)79 virtual void unknownObjectArrived(const Atlas::Message::Element&) { } 80 81 /// A Root object has arrived. objectArrived(const Root &)82 virtual void objectArrived(const Root&) { } 83 objectArrived(const Entity::Account &)84 virtual void objectArrived(const Entity::Account&) { } objectArrived(const Entity::Admin &)85 virtual void objectArrived(const Entity::Admin&) { } objectArrived(const Entity::AdminEntity &)86 virtual void objectArrived(const Entity::AdminEntity&) { } objectArrived(const Entity::Game &)87 virtual void objectArrived(const Entity::Game&) { } objectArrived(const Entity::Player &)88 virtual void objectArrived(const Entity::Player&) { } objectArrived(const Entity::RootEntity &)89 virtual void objectArrived(const Entity::RootEntity&) { } 90 objectArrived(const Operation::Action &)91 virtual void objectArrived(const Operation::Action&) { } objectArrived(const Operation::Appearance &)92 virtual void objectArrived(const Operation::Appearance&) { } objectArrived(const Operation::Combine &)93 virtual void objectArrived(const Operation::Combine&) { } objectArrived(const Operation::Communicate &)94 virtual void objectArrived(const Operation::Communicate&) { } objectArrived(const Operation::Create &)95 virtual void objectArrived(const Operation::Create&) { } objectArrived(const Operation::Delete &)96 virtual void objectArrived(const Operation::Delete&) { } objectArrived(const Operation::Disappearance &)97 virtual void objectArrived(const Operation::Disappearance&) { } objectArrived(const Operation::Divide &)98 virtual void objectArrived(const Operation::Divide&) { } objectArrived(const Operation::Error &)99 virtual void objectArrived(const Operation::Error&) { } objectArrived(const Operation::Feel &)100 virtual void objectArrived(const Operation::Feel&) { } objectArrived(const Operation::Get &)101 virtual void objectArrived(const Operation::Get&) { } objectArrived(const Operation::Imaginary &)102 virtual void objectArrived(const Operation::Imaginary&) { } objectArrived(const Operation::Info &)103 virtual void objectArrived(const Operation::Info&) { } objectArrived(const Operation::Listen &)104 virtual void objectArrived(const Operation::Listen&) { } objectArrived(const Operation::Login &)105 virtual void objectArrived(const Operation::Login&) { } objectArrived(const Operation::Logout &)106 virtual void objectArrived(const Operation::Logout&) { } objectArrived(const Operation::Look &)107 virtual void objectArrived(const Operation::Look&) { } objectArrived(const Operation::Move &)108 virtual void objectArrived(const Operation::Move&) { } objectArrived(const Operation::Perceive &)109 virtual void objectArrived(const Operation::Perceive&) { } objectArrived(const Operation::Perception &)110 virtual void objectArrived(const Operation::Perception&) { } objectArrived(const Operation::RootOperation &)111 virtual void objectArrived(const Operation::RootOperation&) { } objectArrived(const Operation::Set &)112 virtual void objectArrived(const Operation::Set&) { } objectArrived(const Operation::Sight &)113 virtual void objectArrived(const Operation::Sight&) { } objectArrived(const Operation::Smell &)114 virtual void objectArrived(const Operation::Smell&) { } objectArrived(const Operation::Sniff &)115 virtual void objectArrived(const Operation::Sniff&) { } objectArrived(const Operation::Sound &)116 virtual void objectArrived(const Operation::Sound&) { } objectArrived(const Operation::Talk &)117 virtual void objectArrived(const Operation::Talk&) { } objectArrived(const Operation::Touch &)118 virtual void objectArrived(const Operation::Touch&) { } 119 120 }; 121 122 } } // namespace Atlas::Objects 123 #endif 124