1 #ifndef FIPA_ACL_CONVERSATION_H 2 #define FIPA_ACL_CONVERSATION_H 6 #include <boost/shared_ptr.hpp> 7 #include <boost/thread/mutex.hpp> 8 #include <boost/thread/condition.hpp> 9 #include <fipa_acl/message_generator/acl_message.h> 10 #include <fipa_acl/conversation_monitor/transition.h> 11 #include <fipa_acl/conversation_monitor/statemachine_factory.h> 12 #include <base/Time.hpp> 17 class ConversationObserver;
27 namespace conversation {
38 static const std::string EventTypeTxt[] = {
"UNKNOWN",
"START_OF_CONVERSATION",
"INTERMEDIATE_UPDATE",
"END_OF_CONVERSATION",
"FAILURE" };
39 static const std::string StatusTxt[] = {
"UNINITIALIZED",
"RUNNING",
"ENDED",
"FAILED" };
59 :
std::runtime_error(
"fipa::acl::conversation::ProtocolException")
63 :
std::runtime_error(
"fipa::acl::conversation::ProtocolException: '" + msg +
"'" )
71 :
std::runtime_error(
"fipa::acl::conversation::InvalidOperation")
75 :
std::runtime_error(
"fipa::acl::conversation::InvalidOperation: '" + msg +
"'" )
111 bool hasEvents()
const;
127 std::vector<fipa::acl::ConversationID> getConversationIdsOfObservables()
const;
140 void registerObservable(
const ConversationObservablePtr& observable);
143 boost::condition mCondition;
144 mutable boost::mutex mEventsMutex;
149 std::vector<conversation::Event> mEvents;
151 mutable boost::mutex mObservablesMutex;
153 std::vector<ConversationObservablePtr> mObservables;
193 void addObserver(
const ConversationObserverPtr& observer);
198 void removeObserver(
const ConversationObserverPtr& observer);
213 ConversationObserverList getObservers()
const;
219 void detachObservers();
225 bool hasObservers()
const;
237 mutable boost::mutex mObserverMutex;
246 ConversationObserverList mObservers;
322 std::vector<fipa::acl::ACLMessage>
getMessages()
const {
return mMessages; }
337 bool hasEnded()
const;
343 bool hasMessages()
const;
349 std::string getOwner()
const;
359 static std::string toString(
const std::vector<fipa::acl::ACLMessage>& messages);
364 std::string toString()
const;
385 int mNumberOfSubConversations;
390 std::vector<fipa::acl::ACLMessage> mMessages;
392 mutable boost::mutex mMutex;
412 #endif //FIPA_ACL_CONVERSATION_H std::string ConversationID
boost::shared_ptr< ConversationObservable > ConversationObservablePtr
void setConversationId(const fipa::acl::ConversationID &conversationId)
std::vector< ConversationObserverPtr > ConversationObserverList
boost::shared_ptr< Conversation > ConversationPtr
std::vector< fipa::acl::ACLMessage > getMessages() const
boost::shared_ptr< ConversationObserver > ConversationObserverPtr
virtual ~ConversationObserver()
void operator()(void const *) const
fipa::acl::Protocol getProtocol() const
void setNumberOfSubConversations(int amount)
std::string ContentLanguage
ProtocolException(const std::string &msg)
This class provides a representation of a message conforming to the FIPA specification SC00061...
fipa::acl::ConversationID mConversationId
void setProtocol(const fipa::acl::Protocol &protocol)
Foundation of Physical Intelligent Agents.
InvalidOperation(const std::string &msg)
fipa::acl::ACLMessage msg
void setContentLanguage(const fipa::acl::ContentLanguage &language)
virtual ~ConversationObservable()