Skip to content
Snippets Groups Projects
Commit ae8178f2 authored by g0dil's avatar g0dil
Browse files

Packets: Add reserve() / capacity() to PacketData interface

Utils/Daemon: Make argv() return 'char const **'
parent b853fca0
No related branches found
No related tags found
No related merge requests found
...@@ -100,7 +100,7 @@ namespace module { ...@@ -100,7 +100,7 @@ namespace module {
struct DuplicateKeyException : public senf::Exception struct DuplicateKeyException : public senf::Exception
{ DuplicateKeyException(AnnotationType const & key) { DuplicateKeyException(AnnotationType const & key)
: senf::Exception("Duplicate senf::ppi::module::AnnotationRouter routing key") : senf::Exception("Duplicate senf::ppi::module::AnnotationRouter routing key ")
{ append(boost::lexical_cast<std::string>(key)); } }; { append(boost::lexical_cast<std::string>(key)); } };
private: private:
......
...@@ -108,6 +108,17 @@ prefix_ void senf::PacketData::clear() ...@@ -108,6 +108,17 @@ prefix_ void senf::PacketData::clear()
impl().clear(this); impl().clear(this);
} }
prefix_ void senf::PacketData::reserve(size_type n)
{
impl().reserve(n + size() - impl().size());
}
prefix_ senf::PacketData::size_type senf::PacketData::capacity()
const
{
return impl().capacity() - (impl().size() - size());
}
prefix_ bool senf::PacketData::valid() prefix_ bool senf::PacketData::valid()
{ {
return impl_; return impl_;
......
...@@ -133,6 +133,9 @@ namespace senf { ...@@ -133,6 +133,9 @@ namespace senf {
void resize(size_type n, byte v=0); void resize(size_type n, byte v=0);
void reserve(size_type n);
size_type capacity() const;
///@} ///@}
protected: protected:
......
...@@ -175,6 +175,17 @@ prefix_ void senf::detail::PacketImpl::erase(PacketData * self, iterator first, ...@@ -175,6 +175,17 @@ prefix_ void senf::detail::PacketImpl::erase(PacketData * self, iterator first,
updateIterators(self,ix,-delta); updateIterators(self,ix,-delta);
} }
prefix_ void senf::detail::PacketImpl::reserve(size_type n)
{
data_.reserve(n);
}
prefix_ senf::detail::PacketImpl::size_type senf::detail::PacketImpl::capacity()
const
{
return data_.capacity();
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// senf::detail::PacketImpl::Guard // senf::detail::PacketImpl::Guard
......
...@@ -183,6 +183,9 @@ namespace detail { ...@@ -183,6 +183,9 @@ namespace detail {
void erase(PacketData * self, iterator first, iterator last); void erase(PacketData * self, iterator first, iterator last);
void clear(PacketData * self); void clear(PacketData * self);
void reserve(size_type n);
size_type capacity() const;
// Annotations // Annotations
template <class Annotation> template <class Annotation>
Annotation & annotation(); Annotation & annotation();
......
...@@ -89,7 +89,7 @@ prefix_ int senf::Daemon::argc() ...@@ -89,7 +89,7 @@ prefix_ int senf::Daemon::argc()
return argc_; return argc_;
} }
prefix_ char ** senf::Daemon::argv() prefix_ char const ** senf::Daemon::argv()
{ {
return argv_; return argv_;
} }
...@@ -107,7 +107,7 @@ namespace { ...@@ -107,7 +107,7 @@ namespace {
prefix_ void senf::Daemon::removeDaemonArgs() prefix_ void senf::Daemon::removeDaemonArgs()
{ {
char ** last (std::remove_if(argv_+1, argv_+argc_, IsDaemonOpt())); char const ** last (std::remove_if(argv_+1, argv_+argc_, IsDaemonOpt()));
*last = 0; *last = 0;
argc_ = last - argv_; argc_ = last - argv_;
} }
...@@ -238,7 +238,7 @@ prefix_ void senf::Daemon::exit(unsigned code) ...@@ -238,7 +238,7 @@ prefix_ void senf::Daemon::exit(unsigned code)
throw DaemonExitException(code); throw DaemonExitException(code);
} }
prefix_ int senf::Daemon::start(int argc, char ** argv) prefix_ int senf::Daemon::start(int argc, char const ** argv)
{ {
argc_ = argc; argc_ = argc;
argv_ = argv; argv_ = argv;
......
...@@ -157,7 +157,7 @@ namespace senf { ...@@ -157,7 +157,7 @@ namespace senf {
successful startup. */ successful startup. */
int argc(); ///< Access command line parameter count int argc(); ///< Access command line parameter count
char ** argv(); ///< Access command line parameters char const ** argv(); ///< Access command line parameters
void removeDaemonArgs(); ///< Remove the daemon arguments from argc()/argv() void removeDaemonArgs(); ///< Remove the daemon arguments from argc()/argv()
static void exit(unsigned code=0); ///< Terminate daemon with failure static void exit(unsigned code=0); ///< Terminate daemon with failure
...@@ -168,7 +168,7 @@ namespace senf { ...@@ -168,7 +168,7 @@ namespace senf {
///\} ///\}
int start(int argc, char ** argv); ///< Called from main() to launch daemon. int start(int argc, char const ** argv); ///< Called from main() to launch daemon.
/**< Normally not called directly but from the /**< Normally not called directly but from the
\ref SENF_DAEMON_MAIN macro. */ \ref SENF_DAEMON_MAIN macro. */
...@@ -211,7 +211,7 @@ namespace senf { ...@@ -211,7 +211,7 @@ namespace senf {
void installSighandlers(); void installSighandlers();
int argc_; int argc_;
char ** argv_; char const ** argv_;
bool daemonize_; bool daemonize_;
std::string stdoutLog_; std::string stdoutLog_;
...@@ -234,7 +234,7 @@ namespace senf { ...@@ -234,7 +234,7 @@ namespace senf {
\ingroup process \ingroup process
*/ */
# define SENF_DAEMON_MAIN(klass) \ # define SENF_DAEMON_MAIN(klass) \
int main(int argc, char ** argv) \ int main(int argc, char const ** argv) \
{ \ { \
klass instance; \ klass instance; \
return instance.start(argc, argv); \ return instance.start(argc, argv); \
......
...@@ -73,7 +73,7 @@ namespace { ...@@ -73,7 +73,7 @@ namespace {
} }
}; };
int myMain(int argc, char ** argv) int myMain(int argc, char const ** argv)
{ {
MyDaemon instance; MyDaemon instance;
return instance.start(argc, argv); return instance.start(argc, argv);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment