fipa_acl  1.4
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
fipa::acl::ACLMessage Class Reference

This class provides a representation of a message conforming to the FIPA specification SC00061. More...

#include <acl_message.h>

Public Types

enum  Performative {
  ACCEPT_PROPOSAL = 0, AGREE, CANCEL, CALL_FOR_PROPOSAL,
  CONFIRM, DISCONFIRM, FAILURE, INFORM,
  INFORM_IF, INFORM_REF, NOT_UNDERSTOOD, PROPAGATE,
  PROPOSE, PROXY, QUERY_IF, QUERY_REF,
  REFUSE, REJECT_PROPOSAL, REQUEST, REQUEST_WHEN,
  REQUEST_WHENEVER, SUBSCRIBE, END_PERFORMATIVE
}
 an enum of all the predefined fipa message performatives so far, presented in the order used in the message and encoding specifications More...
 

Public Member Functions

 ACLMessage ()
 Default constructor. More...
 
 ACLMessage (Performative performative)
 constructor of an ACLMessage with a predefined performative More...
 
 ACLMessage (const std::string &perf)
 constructor of an ACLMessage with a custom performative More...
 
bool operator== (const ACLMessage &other) const
 
void setPerformative (Performative perf)
 Set performative. More...
 
void setPerformative (const std::string &str)
 the method checks whether the passed performative string is a word or not(according to the fipa spec) More...
 
std::string getPerformative () const
 
Performative getPerformativeAsEnum () const
 
void addReceiver (const AgentID &aid)
 
void deleteReceiver (const AgentID &aid)
 
void clearReceivers ()
 
AgentIDList getAllReceivers () const
 
void setAllReceivers (const AgentIDList &receivers)
 
void addReplyTo (const AgentID &aid)
 
void deleteReplyTo (const AgentID &aid)
 
void clearReplyTo ()
 
AgentIDList getAllReplyTo () const
 
void setAllReplyTo (const AgentIDList &replyTo)
 
void setInReplyTo (const std::string &str)
 
std::string getInReplyTo () const
 
void setReplyWith (const std::string &str)
 
std::string getReplyWith () const
 
void setConversationID (const std::string &str)
 
std::string getConversationID () const
 
void setProtocol (const std::string &str)
 the method checks whether the passed protocol string is a word or not(according to the fipa spec) More...
 
std::string getProtocol () const
 
void setOntology (const std::string &str)
 
std::string getOntology () const
 
void setEncoding (const std::string &str)
 
std::string getEncoding () const
 
void setLanguage (const std::string &str)
 
std::string getLanguage () const
 
void setContent (const std::string &content)
 
void setBinaryContent (const std::vector< uint8_t > &content)
 
bool hasBinaryContent () const
 
std::string getContent () const
 
const std::string * getContentPtr () const
 
void setSender (const AgentID &sender)
 
AgentID getSender () const
 
void addUserdefParam (const UserdefParam &p)
 
std::vector< UserdefParamgetUserdefParams () const
 
void setUserdefParams (const std::vector< UserdefParam > &p)
 
base::Time getReplyBy () const
 
void setReplyBy (const base::Time &time)
 
std::string toString () const
 

Static Public Member Functions

static Performative performativeFromString (const std::string &performative)
 

Friends

class MessageFormat
 

Detailed Description

This class provides a representation of a message conforming to the FIPA specification SC00061.

The class implements the general structure of an ACLMessage. It follows the FIPA specification SC00061(http://www.fipa.org/specs/fipa00061/index.html) with emphasis of what is needed in order to encode it (so far according to the bit efficient specification SC00069 - http://www.fipa.org/specs/fipa00069/index.html) Important notice regarding using the class: The copy constructor provided and the overloaded assignment operator provide deep-copy methods for the class objects, HOWEVER the setter and getter methods(for the pointer fields i.e. sender) do not. Some fields were made pointers for reasons of using as little memory as possible at runtime; if the conclusion is reached that this is not needed, it should be a fairly simple task to make the class own all of its fields(even by leaving the fields as pointers)with the provided deep-copy methods(just allocate memory for the owned field and use the asignment operator to assign the value of the passed parameter)

Definition at line 55 of file acl_message.h.

Member Enumeration Documentation

an enum of all the predefined fipa message performatives so far, presented in the order used in the message and encoding specifications

Enumerator
ACCEPT_PROPOSAL 
AGREE 
CANCEL 
CALL_FOR_PROPOSAL 
CONFIRM 
DISCONFIRM 
FAILURE 
INFORM 
INFORM_IF 
INFORM_REF 
NOT_UNDERSTOOD 
PROPAGATE 
PROPOSE 
PROXY 
QUERY_IF 
QUERY_REF 
REFUSE 
REJECT_PROPOSAL 
REQUEST 
REQUEST_WHEN 
REQUEST_WHENEVER 
SUBSCRIBE 
END_PERFORMATIVE 

Definition at line 64 of file acl_message.h.

67  };

Constructor & Destructor Documentation

fipa::acl::ACLMessage::ACLMessage ( )

Default constructor.

Definition at line 56 of file acl_message.cpp.

57 {
58  mPerformative = PerformativeTxt[INFORM];
59 }
std::map< ACLMessage::Performative, std::string > PerformativeTxt
Definition: acl_message.cpp:15
fipa::acl::ACLMessage::ACLMessage ( Performative  performative)

constructor of an ACLMessage with a predefined performative

Parameters
performativea predefined fipa performative(represented by its index in the perfs vector)

Definition at line 61 of file acl_message.cpp.

62 {
63  mPerformative = PerformativeTxt[performative];
64 }
std::map< ACLMessage::Performative, std::string > PerformativeTxt
Definition: acl_message.cpp:15
fipa::acl::ACLMessage::ACLMessage ( const std::string &  perf)

constructor of an ACLMessage with a custom performative

Parameters
perfstring representing the custom performative(but it can just as well be one of the pre-defined ones)

Definition at line 66 of file acl_message.cpp.

67 {
68  if ( (perf.find_first_of(illegalWordChars) != std::string::npos) || (illegalWordStart.find_first_of(perf.c_str()[0]) != std::string::npos) )
69  {
70  char buffer[512];
71  snprintf(buffer, 512,"Illegal characters in given performative: %s", perf.c_str());
72  throw std::runtime_error(buffer);
73  } else {
74  mPerformative = perf;
75  }
76 }
const std::string illegalWordStart
Definition: acl_message.cpp:40
const std::string illegalWordChars
Definition: acl_message.cpp:39

Member Function Documentation

void fipa::acl::ACLMessage::addReceiver ( const AgentID aid)

Add an agent id to the list of receivers

Definition at line 146 of file acl_message.cpp.

147 {
148  // prevent entering duplicates
149  // NOTE: this function searches for and uses the overloaded == op not the resDepthEq()
150  if ( find(mReceivers.begin(), mReceivers.end(),aid) == mReceivers.end() )
151  {
152  mReceivers.insert(mReceivers.begin(),aid);
153  }
154 }
void fipa::acl::ACLMessage::addReplyTo ( const AgentID aid)

Add agent id to reply to list

Definition at line 172 of file acl_message.cpp.

173 {
174  // prevent entering duplicates
175  // NOTE: this function searches for and uses the overloaded == op not the resDepthEq()
176  if ( find(mReplyTo.begin(), mReplyTo.end(),aid) == mReplyTo.end() )
177  {
178  mReplyTo.insert(mReplyTo.begin(),aid);
179  }
180 }
void fipa::acl::ACLMessage::addUserdefParam ( const UserdefParam p)

Add a userdefined parameter

Parameters
puserdefined parameter

Definition at line 216 of file acl_message.cpp.

217 {
218  if (find (mParameters.begin(),mParameters.end(),p) == mParameters.end() )
219  {
220  mParameters.insert(mParameters.begin(),p);
221  }
222 }
void fipa::acl::ACLMessage::clearReceivers ( )

Clear list of receivers

Definition at line 167 of file acl_message.cpp.

168 {
169  mReceivers.clear();
170 }
void fipa::acl::ACLMessage::clearReplyTo ( )

Clear reply to list

Definition at line 193 of file acl_message.cpp.

194 {
195  mReplyTo.clear();
196 }
void fipa::acl::ACLMessage::deleteReceiver ( const AgentID aid)

Delete an agent id from the list of receivers

Definition at line 156 of file acl_message.cpp.

157 {
158  // prevent entering duplicates
159  // NOTE: this function searches for and uses the overloaded == op not the resDepthEq()
160  std::vector<AgentID>::iterator it = find(mReceivers.begin(), mReceivers.end(),aid);
161  if ( it != mReceivers.end())
162  {
163  mReceivers.erase(it);
164  }
165 }
void fipa::acl::ACLMessage::deleteReplyTo ( const AgentID aid)

Delete an agent id from the reply to list

Definition at line 182 of file acl_message.cpp.

183 {
184  // prevent entering duplicates
185  // NOTE: this function searches for and uses the overloaded == op not the resDepthEq()
186  std::vector<AgentID>::iterator it = find(mReplyTo.begin(), mReplyTo.end(),aid);
187  if (it != mReplyTo.end() )
188  {
189  mReplyTo.erase(it);
190  }
191 }
AgentIDList fipa::acl::ACLMessage::getAllReceivers ( ) const
inline

Retrieve list of all receivers

Returns
List of all receivers

Definition at line 166 of file acl_message.h.

166 { return mReceivers; }
AgentIDList fipa::acl::ACLMessage::getAllReplyTo ( ) const
inline

Get reply to list

Returns
reply to list

Definition at line 192 of file acl_message.h.

192 { return mReplyTo; }
std::string fipa::acl::ACLMessage::getContent ( ) const
inline

Get content as string If the content is binary use string's data() function to access the underlying array

Returns
content data

Definition at line 294 of file acl_message.h.

294 { return mContent; }
const std::string* fipa::acl::ACLMessage::getContentPtr ( ) const
inline

Get reference to content object in order to avoid unnecessary content copies

Definition at line 299 of file acl_message.h.

299 { return &mContent; }
std::string fipa::acl::ACLMessage::getConversationID ( ) const
inline

Get conversation id

Definition at line 227 of file acl_message.h.

227 { return mConversationId; }
std::string fipa::acl::ACLMessage::getEncoding ( ) const
inline

Get encoding

Definition at line 258 of file acl_message.h.

258 { return mEncoding; }
std::string fipa::acl::ACLMessage::getInReplyTo ( ) const
inline

Get in reply to parameter

Definition at line 207 of file acl_message.h.

207 { return mInReplyTo; }
std::string fipa::acl::ACLMessage::getLanguage ( ) const
inline

Get language

Definition at line 268 of file acl_message.h.

268 { return mLanguage; }
std::string fipa::acl::ACLMessage::getOntology ( ) const
inline

Get ontology parameter

Definition at line 248 of file acl_message.h.

248 { return mOntology; }
std::string fipa::acl::ACLMessage::getPerformative ( ) const
inline

Get Performative

Returns
performative as string

Definition at line 139 of file acl_message.h.

139 { return mPerformative; }
Performative fipa::acl::ACLMessage::getPerformativeAsEnum ( ) const
inline

Get Performative

Returns
performative as enum

Definition at line 145 of file acl_message.h.

145 { return performativeFromString(mPerformative); }
static Performative performativeFromString(const std::string &performative)
Definition: acl_message.cpp:42
std::string fipa::acl::ACLMessage::getProtocol ( ) const
inline

Get protocol

Definition at line 238 of file acl_message.h.

238 { return mProtocol; }
base::Time fipa::acl::ACLMessage::getReplyBy ( ) const
inline

Return reply by as time object

Definition at line 334 of file acl_message.h.

334 { return mReplyBy; }
std::string fipa::acl::ACLMessage::getReplyWith ( ) const
inline

Get reply with parameter

Definition at line 217 of file acl_message.h.

217 { return mReplyWith; }
AgentID fipa::acl::ACLMessage::getSender ( ) const
inline

Get the senders AgentID

Returns
AgentID of the sender

Definition at line 311 of file acl_message.h.

311 { return mSender; }
std::vector<UserdefParam> fipa::acl::ACLMessage::getUserdefParams ( ) const
inline

Retrieve any userdefined parameters this message contains

Returns
List of userdefined parameters

Definition at line 323 of file acl_message.h.

323 { return mParameters; }
bool fipa::acl::ACLMessage::hasBinaryContent ( ) const

Check whether the content has to be treated as binary or not. This is done by simply checking on the existance of a \0 (0x00) in the data.

Returns
bool if the data contains at least one 0x00 markers within

Definition at line 210 of file acl_message.cpp.

211 {
212  // Check on the existance of 0x00 in the content
213  return ( strlen(mContent.c_str()) != mContent.size() );
214 }
bool fipa::acl::ACLMessage::operator== ( const ACLMessage other) const

The parameters are not passed by reference on purpose so that the copy constructor of the class is called. This is necessary because in the comparison, pointer fields are modified(removed) and we don't want this to affect the original object

Definition at line 230 of file acl_message.cpp.

231 {
232  if (getPerformative().compare(other.getPerformative()))
233  return false;
234  if (getContent().compare(other.getContent()))
235  return false;
236  if (getLanguage().compare(other.getLanguage()))
237  return false;
238  if (getEncoding().compare(other.getEncoding()))
239  return false;
240  if (getOntology().compare(other.getOntology()))
241  return false;
242  if (getProtocol().compare(other.getProtocol()))
243  return false;
244  if (getConversationID().compare(other.getConversationID()))
245  return false;
246  if (getReplyWith().compare(other.getReplyWith()))
247  return false;
248  if (getInReplyTo().compare(other.getInReplyTo()))
249  return false;
250  if (getReplyBy() != other.getReplyBy())
251  return false;
252  if (!(getSender() == other.getSender()) )
253  return false;
254 
255  // checking if receivers sets of the message are the same
256  AgentIDList agentsA = getAllReceivers();
257  AgentIDList agentsB = other.getAllReceivers();
258  AgentIDList::iterator ait = agentsA.begin();
259  AgentIDList::iterator bit = agentsB.begin();
260 
261  int found_one = 0; // flag variable to control flow through inner loops
262 
263  while (ait != agentsA.end())
264  {
265  found_one = 0;
266  bit = agentsB.begin();
267  while (bit != agentsB.end())
268  {
270  {
271  agentsA.erase(ait);
272  ait = agentsA.begin();
273  agentsB.erase(bit);
274  bit = agentsB.end();
275  found_one = 1;
276 
277  } else {
278  ++bit;
279  }
280  }
281 
282  if (!found_one)
283  {
284  ++ait;
285  }
286  }
287 
288  if (!agentsA.empty() || !agentsB.empty())
289  return false;
290 
291  //checking if reply_to sets of the message are the same
292  agentsA = getAllReplyTo();
293  agentsB = other.getAllReplyTo();
294  ait = agentsA.begin();
295  bit = agentsB.begin();
296  while (ait != agentsA.end())
297  {
298  found_one = 0;
299  bit = agentsB.begin();
300  while (bit != agentsB.end())
301  {
303  {
304  agentsA.erase(ait);
305  ait = agentsA.begin();
306  agentsB.erase(bit);
307  bit = agentsB.end();
308  found_one = 1;
309 
310  } else {
311  ++bit;
312  }
313 
314  }
315  if (!found_one)
316  ++ait;
317 
318  }
319 
320  if (!agentsA.empty())
321  { return false; }
322  if (!agentsB.empty())
323  { return false; }
324 
325 
326  std::vector<UserdefParam> paramsA = getUserdefParams();
327  std::vector<UserdefParam> paramsB = other.getUserdefParams();
328  std::vector<UserdefParam>::iterator pita = paramsA.begin();
329  std::vector<UserdefParam>::iterator pitb = paramsB.begin();
330 
331  while (pita != paramsA.end())
332  {
333  found_one = 0;
334  pitb = paramsB.begin();
335  while (pitb != paramsB.end())
336  {
337  if (*pita == *pitb)
338  {
339  paramsA.erase(pita);
340  pita = paramsA.begin();
341  paramsB.erase(pitb);
342  pitb = paramsB.end();
343  found_one = 1;
344 
345  } else {
346  pitb++;
347  }
348  }
349 
350  if (!found_one)
351  pita++;
352  }
353 
354  if (!paramsA.empty())
355  return false;
356 
357  if (!paramsB.empty())
358  return false;
359 
360  return true;
361 }
std::string getEncoding() const
Definition: acl_message.h:258
std::string getContent() const
Definition: acl_message.h:294
static bool compareEqual(const AgentID &a, const AgentID &b, int depth)
alternative function for equality operator; the depth can be specified through the depth param ...
Definition: agent_id.cpp:90
std::vector< UserdefParam > getUserdefParams() const
Definition: acl_message.h:323
base::Time getReplyBy() const
Definition: acl_message.h:334
std::string getPerformative() const
Definition: acl_message.h:139
std::string getReplyWith() const
Definition: acl_message.h:217
std::vector< AgentID > AgentIDList
Definition: agent_id.h:20
std::string getOntology() const
Definition: acl_message.h:248
AgentIDList getAllReplyTo() const
Definition: acl_message.h:192
std::string getLanguage() const
Definition: acl_message.h:268
std::string getInReplyTo() const
Definition: acl_message.h:207
static int msResolverComparisonDepth
Definition: agent_id.h:65
AgentID getSender() const
Definition: acl_message.h:311
std::string getProtocol() const
Definition: acl_message.h:238
AgentIDList getAllReceivers() const
Definition: acl_message.h:166
std::string getConversationID() const
Definition: acl_message.h:227
ACLMessage::Performative fipa::acl::ACLMessage::performativeFromString ( const std::string &  performative)
static

Get Performative from string

Exceptions
std::runtime_errorwhen string is not a known representation of a performative

Definition at line 42 of file acl_message.cpp.

43 {
44  std::map<ACLMessage::Performative, std::string>::const_iterator it = PerformativeTxt.begin();
45  for(; it != PerformativeTxt.end(); ++it)
46  {
47  if(it->second == performative)
48  {
49  return it->first;
50  }
51  }
52  std::string msg = "String '" + performative + "' does not match any existing performative definition";
53  throw std::runtime_error(msg);
54 }
std::map< ACLMessage::Performative, std::string > PerformativeTxt
Definition: acl_message.cpp:15
void fipa::acl::ACLMessage::setAllReceivers ( const AgentIDList receivers)
inline

Set list of all receivers

Definition at line 171 of file acl_message.h.

171 { mReceivers = receivers; }
void fipa::acl::ACLMessage::setAllReplyTo ( const AgentIDList replyTo)
inline

Set reply to list

Definition at line 197 of file acl_message.h.

197 { mReplyTo = replyTo; }
void fipa::acl::ACLMessage::setBinaryContent ( const std::vector< uint8_t > &  content)
inline

Set content using a byte vector

Parameters
contentbinary content

Definition at line 280 of file acl_message.h.

280 { mContent.assign(content.begin(), content.end()); }
void fipa::acl::ACLMessage::setContent ( const std::string &  content)
inline

Set content

Parameters
contentContent as string (can be binary content as well)

Definition at line 274 of file acl_message.h.

274 { mContent = content; }
void fipa::acl::ACLMessage::setConversationID ( const std::string &  str)
inline

Set conversation id

Definition at line 222 of file acl_message.h.

222 { mConversationId = str; }
void fipa::acl::ACLMessage::setEncoding ( const std::string &  str)
inline

Set encoding

Definition at line 253 of file acl_message.h.

253 { mEncoding = str; }
void fipa::acl::ACLMessage::setInReplyTo ( const std::string &  str)
inline

Set reply to

Definition at line 202 of file acl_message.h.

202 { mInReplyTo = str; }
void fipa::acl::ACLMessage::setLanguage ( const std::string &  str)
inline

Set language

Definition at line 263 of file acl_message.h.

263 { mLanguage = str; }
void fipa::acl::ACLMessage::setOntology ( const std::string &  str)
inline

Set ontology parameter

Definition at line 243 of file acl_message.h.

243 { mOntology = str; }
void fipa::acl::ACLMessage::setPerformative ( Performative  perf)

Set performative.

Exceptions
runtime_errorif performative does not exist

Definition at line 121 of file acl_message.cpp.

122 {
123  std::map<Performative, std::string>::iterator it;
124  it = PerformativeTxt.find(perf);
125  if(it == PerformativeTxt.end())
126  {
127  throw std::runtime_error("Cannot set performative. Performative unknown");
128  }
129 
130  mPerformative = it->second;
131 }
std::map< ACLMessage::Performative, std::string > PerformativeTxt
Definition: acl_message.cpp:15
void fipa::acl::ACLMessage::setPerformative ( const std::string &  str)

the method checks whether the passed performative string is a word or not(according to the fipa spec)

Exceptions
runtime_errorif performative does not exist or is illegal

Definition at line 133 of file acl_message.cpp.

134 {
135  if ( (str.find_first_of(illegalWordChars) != std::string::npos) || (illegalWordStart.find_first_of(str.c_str()[0]) != std::string::npos) )
136  {
137 
138  char buffer[512];
139  snprintf(buffer, 512,"Illegal characters in given performative: %s", str.c_str());
140  throw std::runtime_error(buffer);
141  }
142 
143  mPerformative = str;
144 }
const std::string illegalWordStart
Definition: acl_message.cpp:40
const std::string illegalWordChars
Definition: acl_message.cpp:39
void fipa::acl::ACLMessage::setProtocol ( const std::string &  str)

the method checks whether the passed protocol string is a word or not(according to the fipa spec)

Exceptions
runtime_errorwhen protocol name contains illegal characters

Definition at line 198 of file acl_message.cpp.

199 {
200  if ( (str.find_first_of(illegalWordChars) != std::string::npos) || (illegalWordStart.find_first_of(str.c_str()[0]) != std::string::npos) )
201  {
202  char buffer[512];
203  snprintf(buffer, 512, "Protocol name contains illegal characters: %s", str.c_str());
204  throw std::runtime_error(buffer);
205  }
206 
207  mProtocol = str;
208 }
const std::string illegalWordStart
Definition: acl_message.cpp:40
const std::string illegalWordChars
Definition: acl_message.cpp:39
void fipa::acl::ACLMessage::setReplyBy ( const base::Time &  time)
inline

Set reply by as time object

Parameters
timeTime

Definition at line 340 of file acl_message.h.

340 { mReplyBy = time; }
void fipa::acl::ACLMessage::setReplyWith ( const std::string &  str)
inline

Set in reply with parameter

Definition at line 212 of file acl_message.h.

212 { mReplyWith = str; }
void fipa::acl::ACLMessage::setSender ( const AgentID sender)
inline

Set the sender of this message

Parameters
senderSender's AgentID

Definition at line 305 of file acl_message.h.

305 { mSender = sender; }
void fipa::acl::ACLMessage::setUserdefParams ( const std::vector< UserdefParam > &  p)

Set the list of userdefined parameter of this message Overwrites an already existing parameter list

Definition at line 224 of file acl_message.cpp.

225 {
226  mParameters.clear();
227  mParameters.insert(mParameters.begin(),p.begin(),p.end());
228 }
std::string fipa::acl::ACLMessage::toString ( ) const

Convert message to string

Returns
Message in string format

Definition at line 363 of file acl_message.cpp.

364 {
365  std::stringstream ss;
366  ss << "(";
367  ss << mPerformative << std::endl;
368  ss << ":sender (agent-identifier :name " << mSender.getName() << " )" << std::endl;
369 
370  if(!mReceivers.empty())
371  {
372  ss << ":receiver (set "<< std::endl;
373  BOOST_FOREACH(const AgentID& agent, mReceivers)
374  {
375  ss << "\t(agent-identifier ";
376  ss << ":name " << agent.getName();
377  ss << ") " << std::endl;
378  }
379  ss << ")" << std::endl;
380  }
381 
382  if(!mLanguage.empty())
383  {
384  ss << ":language " << mLanguage << std::endl;
385  }
386 
387  if(!mEncoding.empty())
388  {
389  ss << ":encoding " << mEncoding << std::endl;
390  }
391 
392  if(!mOntology.empty())
393  {
394  ss << ":ontology " << mOntology << std::endl;
395  }
396 
397  if(!mProtocol.empty())
398  {
399  ss << ":protocol " << mProtocol << std::endl;
400  }
401 
402  if(!mConversationId.empty())
403  {
404  ss << ":conversation-id " << mConversationId << std::endl;
405  }
406 
407  if(!mReplyWith.empty())
408  {
409  ss << ":reply-with " << mReplyWith << std::endl;
410  }
411 
412  if(!mInReplyTo.empty())
413  {
414  ss << ":in-reply-to " << mInReplyTo << std::endl;
415  }
416 
417  if(!mReplyBy.isNull())
418  {
419  ss << ":reply-by " << mReplyBy.toString() << std::endl;
420  }
421 
422  if(!mParameters.empty())
423  {
424  BOOST_FOREACH(const UserdefParam& param, mParameters)
425  {
426  ss << param.getName() << " " << param.getValue() << std::endl;
427  }
428  }
429 
430  if(!mContent.empty())
431  {
432  ss << ":content " << mContent << std::endl;
433  }
434 
435 
436  ss << ")" << std::endl;
437  return ss.str();
438 }
const std::string & getName() const
setter and getter methods for all fields; they do not result in deep-copies assignments/retreivals, but this can be easily changed if needed through the overloaded operator which do
Definition: agent_id.h:90

Friends And Related Function Documentation

friend class MessageFormat
friend

Definition at line 57 of file acl_message.h.


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