receipt.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "receipt.h"
00014 #include "tag.h"
00015 #include "util.h"
00016
00017 namespace gloox
00018 {
00019
00020
00021 static const char* receiptValues [] = {
00022 "request",
00023 "received"
00024 };
00025
00026 static inline Receipt::ReceiptType receiptType( const std::string& type )
00027 {
00028 return (Receipt::ReceiptType)util::lookup( type, receiptValues );
00029 }
00030
00031 Receipt::Receipt( const Tag* tag )
00032 : StanzaExtension( ExtReceipt ),
00033 m_rcpt( receiptType( tag->name() ) )
00034 {
00035 }
00036
00037 const std::string& Receipt::filterString() const
00038 {
00039 static const std::string filter =
00040 "/message/request[@xmlns='" + XMLNS_RECEIPTS + "']"
00041 "|/message/received[@xmlns='" + XMLNS_RECEIPTS + "']";
00042 return filter;
00043 }
00044
00045 Tag* Receipt::tag() const
00046 {
00047 if( m_rcpt == Invalid )
00048 return 0;
00049
00050 return new Tag( util::lookup( m_rcpt, receiptValues ), XMLNS, XMLNS_RECEIPTS );
00051 }
00052
00053 }