Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
Kea
Commits
a13e1e0d
Commit
a13e1e0d
authored
Jan 14, 2015
by
Marcin Siodelski
Browse files
[3671] Addressed second round of review comments.
Simplified the method which loads leases from the CSV file.
parent
52bd9f4d
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/lib/dhcpsrv/memfile_lease_mgr.cc
View file @
a13e1e0d
...
...
@@ -481,57 +481,35 @@ loadLeasesFromFiles(const std::string& filename,
StorageType
&
storage
)
{
storage
.
clear
();
for
(
int
i
=
2
;
i
>=
0
;
--
i
)
{
bool
completed_exists
=
false
;
// Initialize the name of the lease file to parse. For the
// first two loops we're going to append .2 and .1 to the
// lease file name, unless the file with the .completed
// postfix exists.
std
::
ostringstream
s
;
s
<<
filename
;
// If this is the first file to load leases from, we should check
// if the file with the .completed prefix exists. If it exists
// we are going to skip loading leases from the files with
// postfixes .2 and .1.
if
(
i
==
2
)
{
s
<<
".completed"
;
lease_file
.
reset
(
new
LeaseFileType
(
s
.
str
()));
// If the .completed file exists, reduce the value of i to
// skip loop for the file with postfix .1. We will only
// load leases from the .completed file and the lease
// file without postfix (for i = 0).
if
(
lease_file
->
exists
())
{
--
i
;
completed_exists
=
true
;
}
}
// Load the leasefile.completed, if exists.
lease_file
.
reset
(
new
LeaseFileType
(
std
::
string
(
filename
+
".completed"
)));
if
(
lease_file
->
exists
())
{
LeaseFileLoader
::
load
<
LeaseObjectType
>
(
*
lease_file
,
storage
,
MAX_LEASE_ERRORS
);
// If .completed file doesn't exist, load the files with postfixes
// .1 and .2.
if
(
!
completed_exists
)
{
std
::
ostringstream
s2
;
s2
<<
filename
;
if
(
i
>
0
)
{
s2
<<
"."
<<
i
;
}
lease_file
.
reset
(
new
LeaseFileType
(
s2
.
str
()));
}
else
{
// If the leasefile.completed doesn't exist, let's load the leases
// from leasefile.2 and leasefile.1, if they exist.
lease_file
.
reset
(
new
LeaseFileType
(
std
::
string
(
filename
+
".2"
)));
if
(
lease_file
->
exists
())
{
LeaseFileLoader
::
load
<
LeaseObjectType
>
(
*
lease_file
,
storage
,
MAX_LEASE_ERRORS
);
}
// Don't open the file if it doesn't exist and it is not the
// primary lease file - not ending with .1 or .2 or .completed.
// Those files are optional and we don't want to create them if
// they don't exist.
if
(
i
==
0
||
lease_file
->
exists
())
{
// If the file doesn't exist it will be created as an empty
// file (with no leases). The last parameter is set to false
// when the primary lease file is parsed. This is to
// indicate that the lease file should remain open after
// parsing. The backend will use this file to append future
// lease updates.
lease_file
.
reset
(
new
LeaseFileType
(
std
::
string
(
filename
+
".1"
)));
if
(
lease_file
->
exists
())
{
LeaseFileLoader
::
load
<
LeaseObjectType
>
(
*
lease_file
,
storage
,
MAX_LEASE_ERRORS
,
(
i
!=
0
)
);
MAX_LEASE_ERRORS
);
}
}
// Always load leases from the primary lease file. If the lease file
// doesn't exist it will be created by the LeaseFileLoader. Note
// that the false value passed as the last parameter to load
// function causes the function to leave the file open after
// it is parsed. This file will be used by the backend to record
// future lease updates.
lease_file
.
reset
(
new
LeaseFileType
(
filename
));
LeaseFileLoader
::
load
<
LeaseObjectType
>
(
*
lease_file
,
storage
,
MAX_LEASE_ERRORS
,
false
);;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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