Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sebastian Schrader
Kea
Commits
5b77cd20
Commit
5b77cd20
authored
Oct 17, 2012
by
Michal 'vorner' Vaner
Browse files
[2207] Split off the local Writer
Into a separate file. It is not needed to be too public.
parent
1ae2321d
Changes
7
Hide whitespace changes
Inline
Side-by-side
src/lib/datasrc/memory/Makefile.am
View file @
5b77cd20
...
...
@@ -22,7 +22,8 @@ libdatasrc_memory_la_SOURCES += zone_table.h zone_table.cc
libdatasrc_memory_la_SOURCES
+=
zone_finder.h zone_finder.cc
libdatasrc_memory_la_SOURCES
+=
zone_table_segment.h zone_table_segment.cc
libdatasrc_memory_la_SOURCES
+=
zone_table_segment_local.h zone_table_segment_local.cc
libdatasrc_memory_la_SOURCES
+=
zone_writer.h zone_writer.cc
libdatasrc_memory_la_SOURCES
+=
zone_writer.h
libdatasrc_memory_la_SOURCES
+=
zone_writer_local.h zone_writer_local.cc
libdatasrc_memory_la_SOURCES
+=
load_action.h
nodist_libdatasrc_memory_la_SOURCES
=
memory_messages.h memory_messages.cc
...
...
src/lib/datasrc/memory/zone_table_segment_local.cc
View file @
5b77cd20
...
...
@@ -13,7 +13,7 @@
// PERFORMANCE OF THIS SOFTWARE.
#include
<datasrc/memory/zone_table_segment_local.h>
#include
"zone_writer.h"
#include
"zone_writer
_local
.h"
using
namespace
isc
::
util
;
...
...
src/lib/datasrc/memory/zone_writer.h
View file @
5b77cd20
...
...
@@ -12,19 +12,14 @@
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
#ifndef ZONE_
RELOAD
ER_H
#define ZONE_
RELOAD
ER_H
#ifndef
MEM_
ZONE_
WRIT
ER_H
#define
MEM_
ZONE_
WRIT
ER_H
#include
"load_action.h"
#include
<dns/rrclass.h>
#include
<dns/name.h>
namespace
isc
{
namespace
datasrc
{
namespace
memory
{
class
ZoneData
;
class
ZoneTableSegment
;
/// \brief Does an update to a zone.
///
...
...
@@ -82,64 +77,6 @@ public:
virtual
void
cleanup
()
=
0
;
};
/// \brief Writer implementation which loads data locally.
///
/// This implementation prepares a clean zone data and lets one callback
/// to fill it and another to install it somewhere. The class does mostly
/// nothing (and delegates the work to the callbacks), just stores little bit
/// of state between the calls.
class
ZoneWriterLocal
:
public
ZoneWriter
{
public:
/// \brief Constructor
///
/// \param segment The zone table segment to store the zone into.
/// \param load_action The callback used to load data.
/// \param install_action The callback used to install the loaded zone.
/// \param rrclass The class of the zone.
ZoneWriterLocal
(
ZoneTableSegment
*
segment
,
const
LoadAction
&
load_action
,
const
dns
::
Name
&
name
,
const
dns
::
RRClass
&
rrclass
);
/// \brief Destructor
~
ZoneWriterLocal
();
/// \brief Loads the data.
///
/// This prepares an empty ZoneData and calls load_action (passed to
/// constructor) to fill it with data.
///
/// \throw std::bad_alloc If there's a problem allocating the ZoneData.
/// \throw isc::Unexpected if it is called the second time in lifetime
/// of the object.
/// \throw Whatever the load_action throws, it is propagated up.
virtual
void
load
();
/// \brief Installs the zone.
///
/// This simply calls the install_action.
///
/// \throw isc::Unexpected if it is called the second time in lifetime
/// of the object or if load() was not called previously or if
/// cleanup() was already called.
/// \throw Whatever the install_action throws, it is propagated up.
virtual
void
install
();
/// \brief Clean up memory.
///
/// Cleans up the memory used by load()ed zone if not yet installed, or
/// the old zone replaced by install().
virtual
void
cleanup
();
private:
ZoneTableSegment
*
segment_
;
LoadAction
load_action_
;
dns
::
Name
origin_
;
dns
::
RRClass
rrclass_
;
ZoneData
*
zone_data_
;
// The load was performed
bool
loaded_
;
// The data are ready to be installed
bool
data_ready_
;
};
}
}
}
...
...
src/lib/datasrc/memory/zone_writer.cc
→
src/lib/datasrc/memory/zone_writer
_local
.cc
View file @
5b77cd20
...
...
@@ -12,7 +12,7 @@
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
#include
"zone_writer.h"
#include
"zone_writer
_local
.h"
#include
"zone_data.h"
#include
"zone_table_segment.h"
...
...
src/lib/datasrc/memory/zone_writer_local.h
0 → 100644
View file @
5b77cd20
// Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
#ifndef MEM_ZONE_WRITER_LOCAL_H
#define MEM_ZONE_WRITER_LOCAL_H
#include
"zone_writer.h"
#include
<dns/rrclass.h>
#include
<dns/name.h>
namespace
isc
{
namespace
datasrc
{
namespace
memory
{
class
ZoneData
;
class
ZoneTableSegment
;
/// \brief Writer implementation which loads data locally.
///
/// This implementation prepares a clean zone data and lets one callback
/// to fill it and another to install it somewhere. The class does mostly
/// nothing (and delegates the work to the callbacks), just stores little bit
/// of state between the calls.
class
ZoneWriterLocal
:
public
ZoneWriter
{
public:
/// \brief Constructor
///
/// \param segment The zone table segment to store the zone into.
/// \param load_action The callback used to load data.
/// \param install_action The callback used to install the loaded zone.
/// \param rrclass The class of the zone.
ZoneWriterLocal
(
ZoneTableSegment
*
segment
,
const
LoadAction
&
load_action
,
const
dns
::
Name
&
name
,
const
dns
::
RRClass
&
rrclass
);
/// \brief Destructor
~
ZoneWriterLocal
();
/// \brief Loads the data.
///
/// This prepares an empty ZoneData and calls load_action (passed to
/// constructor) to fill it with data.
///
/// \throw std::bad_alloc If there's a problem allocating the ZoneData.
/// \throw isc::Unexpected if it is called the second time in lifetime
/// of the object.
/// \throw Whatever the load_action throws, it is propagated up.
virtual
void
load
();
/// \brief Installs the zone.
///
/// This simply calls the install_action.
///
/// \throw isc::Unexpected if it is called the second time in lifetime
/// of the object or if load() was not called previously or if
/// cleanup() was already called.
/// \throw Whatever the install_action throws, it is propagated up.
virtual
void
install
();
/// \brief Clean up memory.
///
/// Cleans up the memory used by load()ed zone if not yet installed, or
/// the old zone replaced by install().
virtual
void
cleanup
();
private:
ZoneTableSegment
*
segment_
;
LoadAction
load_action_
;
dns
::
Name
origin_
;
dns
::
RRClass
rrclass_
;
ZoneData
*
zone_data_
;
// The load was performed
bool
loaded_
;
// The data are ready to be installed
bool
data_ready_
;
};
}
}
}
#endif
src/lib/datasrc/tests/memory/zone_table_segment_unittest.cc
View file @
5b77cd20
...
...
@@ -13,7 +13,7 @@
// PERFORMANCE OF THIS SOFTWARE.
#include
<datasrc/memory/zone_table_segment.h>
#include
<datasrc/memory/zone_writer.h>
#include
<datasrc/memory/zone_writer
_local
.h>
#include
<gtest/gtest.h>
#include
<boost/scoped_ptr.hpp>
...
...
src/lib/datasrc/tests/memory/zone_writer_unittest.cc
View file @
5b77cd20
...
...
@@ -12,7 +12,7 @@
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
#include
<datasrc/memory/zone_writer.h>
#include
<datasrc/memory/zone_writer
_local
.h>
#include
<datasrc/memory/zone_table_segment.h>
#include
<datasrc/memory/zone_data.h>
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment