12#ifndef ZYPP_PLUGINFRAME_H
13#define ZYPP_PLUGINFRAME_H
49 static const std::string & ackCommand();
51 static const std::string & errorCommand();
53 static const std::string & enomethodCommand();
70 PluginFrame(
const std::string & command_r, std::string body_r );
93 explicit operator bool()
const
98 const std::string & command()
const;
103 void setCommand(
const std::string & command_r );
107 {
return command() == ackCommand(); }
111 {
return command() == errorCommand(); }
115 {
return command() == enomethodCommand(); }
118 const std::string & body()
const;
128 std::string & bodyRef();
131 void setBody(
const std::string & body_r );
150 {
return headerList().empty(); }
154 {
return headerList().size(); }
158 {
return headerList().begin(); }
162 {
return headerList().end(); }
166 { headerList().clear(); }
170 bool hasKey(
const std::string & key_r )
const
171 {
return ! keyEmpty( key_r ); }
175 {
return headerList().find( key_r ) == headerEnd(); }
178 bool keySize(
const std::string & key_r )
const
179 {
return headerList().count( key_r ); }
183 {
return headerList().lower_bound( key_r ); }
187 {
return headerList().upper_bound( key_r ); }
194 const std::string & getHeader(
const std::string & key_r )
const;
199 const std::string & getHeader(
const std::string & key_r,
const std::string & default_r )
const;
202 const std::string & getHeaderNT(
const std::string & key_r,
const std::string & default_r = std::string() )
const;
208 void setHeader(
const std::string & key_r,
const std::string & value_r = std::string() );
215 { headerList().clear(); addHeader( contents_r ); }
221 void addHeader(
const std::string & key_r,
const std::string & value_r = std::string() );
223 void addHeader( HeaderInitializerList contents_r );
226 void clearHeader(
const std::string & key_r );
232 std::ostream & writeTo( std::ostream & stream_r )
const;
236 {
return frame_r.
writeTo( stream_r ); }
242 { *
this =
PluginFrame( stream_r );
return stream_r; }
246 { frame_r =
PluginFrame( stream_r );
return stream_r; }
272 {
return( !
operator==( lhs, rhs ) ); }
std::ostream & operator<<(std::ostream &str, const zypp::sat::detail::CDataiterator *obj)
Base class for PluginFrame Exception.
Command frame for communication with PluginScript.
HeaderList::const_iterator HeaderListIterator
Header list iterator.
const std::initializer_list< std::pair< std::string, std::string > > & HeaderInitializerList
HeaderListIterator keyBegin(const std::string &key_r) const
Return iterator pointing to the 1st header for key_r (or keyEnd(key_r))
void headerClear()
Clear the list of headers.
void setHeader(HeaderInitializerList contents_r)
Set a new header list.
bool headerEmpty() const
Whether header list is empty.
bool keyEmpty(const std::string &key_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
unsigned headerSize() const
Return size of the header list.
bool isErrorCommand() const
Convenience to identify an ERROR command.
std::istream & readFrom(std::istream &stream_r)
Read frame from stream.
bool keySize(const std::string &key_r) const
Return number of header entries for key_r.
std::ostream & dumpOn(std::ostream &str, const PluginFrame &obj)
Stream output writing all data for logging (no throw)
RWCOW_pointer< Impl > _pimpl
Pointer to implementation.
bool isEnomethodCommand() const
Convenience to identify an _ENOMETHOD command.
HeaderListIterator keyEnd(const std::string &key_r) const
Return iterator pointing behind the last header for key_r.
bool operator!=(const PluginFrame &lhs, const PluginFrame &rhs)
Comparison based on content.
static std::istream & readFrom(std::istream &stream_r, PluginFrame &frame_r)
static std::ostream & writeTo(std::ostream &stream_r, const PluginFrame &frame_r)
HeaderListIterator headerEnd() const
Return iterator pointing behind the last header.
std::multimap< std::string, std::string > HeaderList
The header list.
std::istream & operator>>(std::istream &str, PluginFrame &obj)
Construct from stream.
bool isAckCommand() const
Convenience to identify an ACK command.
HeaderListIterator headerBegin() const
Return iterator pointing to the 1st header (or headerEnd)
std::ostream & writeTo(std::ostream &stream_r) const
Write frame to stream.
bool hasKey(const std::string &key_r) const
Whether the header list contains at least one entry for key_r.
String related utilities and Regular expression matching.
Easy-to use interface to the ZYPP dependency resolver.
bool operator==(const SetRelation::Enum &lhs, const SetCompare &rhs)
This is an overloaded member function, provided for convenience. It differs from the above function o...
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
RW_pointer supporting 'copy on write' functionality.