2014-01-04 19:45:04 +08:00
/**
* Class describing initial connection setup acknowledge frame
*
* @ copyright 2014 Copernica BV
*/
/**
* Set up namespace
*/
namespace AMQP {
/**
* Class implementation
*/
class ConnectionStartOKFrame : public ConnectionFrame
{
private :
/**
* Additional client properties
* @ note : exact properties are not specified
* and are implementation - dependent
* @ var Table
*/
Table _properties ;
/**
* The selected security mechanism
* @ var ShortString
*/
ShortString _mechanism ;
/**
* The security response
* @ var LongString
*/
LongString _response ;
/**
* The selected locale
* @ var ShortString
*/
ShortString _locale ;
protected :
/**
* Encode a frame on a string buffer
*
* @ param buffer buffer to write frame to
*/
virtual void fill ( OutBuffer & buffer ) const override
{
// call base
ConnectionFrame : : fill ( buffer ) ;
// add fields
_properties . fill ( buffer ) ;
_mechanism . fill ( buffer ) ;
_response . fill ( buffer ) ;
_locale . fill ( buffer ) ;
}
public :
/**
* Construct a connection start ok frame from a received frame
*
* @ param frame received frame
*/
ConnectionStartOKFrame ( ReceivedFrame & frame ) :
ConnectionFrame ( frame ) ,
_properties ( frame ) ,
_mechanism ( frame ) ,
_response ( frame ) ,
_locale ( frame )
{ }
/**
* Construct a connection start ok frame
*
* @ param properties client propertes
* @ param mechanism selected security mechanism
* @ param response security response data
* @ param locale selected locale .
*/
ConnectionStartOKFrame ( const Table & properties , const std : : string & mechanism , const std : : string & response , const std : : string & locale ) :
2018-01-23 23:47:53 +08:00
ConnectionFrame ( ( uint32_t ) ( properties . size ( ) + mechanism . length ( ) + response . length ( ) + locale . length ( ) + 6 ) ) , // 1 byte extra per shortstring, 4 per longstring
2014-01-04 19:45:04 +08:00
_properties ( properties ) ,
_mechanism ( mechanism ) ,
_response ( response ) ,
_locale ( locale )
{ }
/**
* Destructor
*/
virtual ~ ConnectionStartOKFrame ( ) { }
/**
* Method id
*/
2014-01-07 00:15:21 +08:00
virtual uint16_t methodID ( ) const override
2014-01-04 19:45:04 +08:00
{
return 11 ;
}
/**
* Additional client properties
* @ note : exact properties are not specified
* and are implementation - dependent
* @ return Table
*/
const Table & properties ( ) const
{
return _properties ;
}
/**
* The selected security mechanism
* @ return string
*/
const std : : string & mechanism ( ) const
{
return _mechanism ;
}
/**
* The security response
* @ return string
*/
const std : : string & response ( ) const
{
return _response ;
}
/**
* The selected locale
* @ return string
*/
const std : : string locale ( ) const
{
return _locale ;
}
2014-01-05 03:34:36 +08:00
/**
* Is this a frame that is part of the connection setup ?
* @ return bool
*/
virtual bool partOfHandshake ( ) const override
{
return true ;
}
2014-01-04 19:45:04 +08:00
} ;
/**
* end namespace
*/
}