Move config.hpp and a few more private headers to a 'detail' subdir
Also upgrade waf to version 2.0.21 Change-Id: Id290b8336c607fb3939f2ab96dd066dae9810c1e
This commit is contained in:
1 parent
e7dc77695c
commit
07684bced7
18 files changed
+161
-232
No files matched your search
+3
-21
@@ -230,12 +230,6 @@ TAB_SIZE = 4
|
||||
|
||||
ALIASES =
|
||||
|
||||
# This tag can be used to specify a number of word-keyword mappings (TCL only).
|
||||
# A mapping has the form "name=value". For example adding "class=itcl::class"
|
||||
# will allow you to use the command class in the itcl::class meaning.
|
||||
|
||||
TCL_SUBST =
|
||||
|
||||
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
|
||||
# only. Doxygen will then generate output that is more tailored for C. For
|
||||
# instance, some of the names that are used will be different. The list of all
|
||||
@@ -2050,7 +2044,10 @@ INCLUDE_FILE_PATTERNS =
|
||||
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
|
||||
|
||||
PREDEFINED = DOXYGEN \
|
||||
CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PROTECTED=protected \
|
||||
CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PRIVATE=private \
|
||||
CHRONOSYNC_PROTECTED_WITH_TESTS_ELSE_PRIVATE=private \
|
||||
CHRONOSYNC_VIRTUAL_WITH_TESTS= \
|
||||
NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(x)=
|
||||
|
||||
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
|
||||
@@ -2118,12 +2115,6 @@ EXTERNAL_GROUPS = YES
|
||||
|
||||
EXTERNAL_PAGES = YES
|
||||
|
||||
# The PERL_PATH should be the absolute path and name of the perl script
|
||||
# interpreter (i.e. the result of 'which perl').
|
||||
# The default file (with absolute path) is: /usr/bin/perl.
|
||||
|
||||
PERL_PATH = /usr/bin/perl
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
@@ -2137,15 +2128,6 @@ PERL_PATH = /usr/bin/perl
|
||||
|
||||
CLASS_DIAGRAMS = YES
|
||||
|
||||
# You can define message sequence charts within doxygen comments using the \msc
|
||||
# command. Doxygen will then run the mscgen tool (see:
|
||||
# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
|
||||
# documentation. The MSCGEN_PATH tag allows you to specify the directory where
|
||||
# the mscgen tool resides. If left empty the tool is assumed to be found in the
|
||||
# default search path.
|
||||
|
||||
MSCGEN_PATH =
|
||||
|
||||
# You can include diagrams made with dia in doxygen documentation. Doxygen will
|
||||
# then run dia to produce the diagram and insert it in the documentation. The
|
||||
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2018 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -17,7 +17,7 @@
|
||||
* ChronoSync, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "bzip2-helper.hpp"
|
||||
#include "detail/bzip2-helper.hpp"
|
||||
|
||||
#include <boost/iostreams/filtering_stream.hpp>
|
||||
#include <boost/iostreams/detail/iostream.hpp>
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2018 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -17,8 +17,8 @@
|
||||
* ChronoSync, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CHRONOSYNC_BZIP2_HELPER_HPP
|
||||
#define CHRONOSYNC_BZIP2_HELPER_HPP
|
||||
#ifndef CHRONOSYNC_DETAIL_BZIP2_HELPER_HPP
|
||||
#define CHRONOSYNC_DETAIL_BZIP2_HELPER_HPP
|
||||
|
||||
#include <ndn-cxx/encoding/buffer.hpp>
|
||||
|
||||
@@ -40,4 +40,4 @@ decompress(const char* buffer, size_t bufferSize);
|
||||
} // namespace bzip2
|
||||
} // namespace chronosync
|
||||
|
||||
#endif // CHRONOSYNC_BZIP2_HELPER_HPP
|
||||
#endif // CHRONOSYNC_DETAIL_BZIP2_HELPER_HPP
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2020 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -20,12 +20,12 @@
|
||||
* @author Yingdi Yu <yingdi@cs.ucla.edu>
|
||||
*/
|
||||
|
||||
#ifndef CHRONOSYNC_COMMON_HPP
|
||||
#define CHRONOSYNC_COMMON_HPP
|
||||
#ifndef CHRONOSYNC_DETAIL_COMMON_HPP
|
||||
#define CHRONOSYNC_DETAIL_COMMON_HPP
|
||||
|
||||
#include "config.hpp"
|
||||
#include "detail/config.hpp"
|
||||
|
||||
#ifdef CHRONOSYNC_HAVE_TESTS
|
||||
#ifdef CHRONOSYNC_WITH_TESTS
|
||||
#define CHRONOSYNC_VIRTUAL_WITH_TESTS virtual
|
||||
#define CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PROTECTED public
|
||||
#define CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PRIVATE public
|
||||
@@ -93,4 +93,4 @@ namespace encoding = ndn::encoding;
|
||||
|
||||
} // namespace chronosync
|
||||
|
||||
#endif // CHRONOSYNC_COMMON_HPP
|
||||
#endif // CHRONOSYNC_DETAIL_COMMON_HPP
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2014 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -22,8 +22,8 @@
|
||||
* @author Yingdi Yu <yingdi@cs.ucla.edu>
|
||||
*/
|
||||
|
||||
#ifndef CHRONOSYNC_MI_TAG_HPP
|
||||
#define CHRONOSYNC_MI_TAG_HPP
|
||||
#ifndef CHRONOSYNC_DETAIL_MI_TAG_HPP
|
||||
#define CHRONOSYNC_DETAIL_MI_TAG_HPP
|
||||
|
||||
namespace chronosync {
|
||||
|
||||
@@ -40,11 +40,6 @@ struct sequenced
|
||||
{
|
||||
};
|
||||
|
||||
struct timed
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
} // namespace chronosync
|
||||
|
||||
#endif // CHRONOSYNC_MI_TAG_HPP
|
||||
#endif // CHRONOSYNC_DETAIL_MI_TAG_HPP
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2017 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -25,15 +25,14 @@
|
||||
#ifndef CHRONOSYNC_DIFF_STATE_CONTAINER_HPP
|
||||
#define CHRONOSYNC_DIFF_STATE_CONTAINER_HPP
|
||||
|
||||
#include "mi-tag.hpp"
|
||||
#include "detail/mi-tag.hpp"
|
||||
#include "diff-state.hpp"
|
||||
|
||||
#include <boost/multi_index_container.hpp>
|
||||
#include <boost/multi_index/tag.hpp>
|
||||
#include <boost/multi_index/hashed_index.hpp>
|
||||
#include <boost/multi_index/sequenced_index.hpp>
|
||||
#include <boost/multi_index/member.hpp>
|
||||
#include <boost/multi_index/mem_fun.hpp>
|
||||
#include <boost/multi_index/tag.hpp>
|
||||
|
||||
namespace chronosync {
|
||||
|
||||
@@ -72,9 +71,8 @@ struct DiffStateContainer : public mi::multi_index_container<
|
||||
DigestPtrHash,
|
||||
DigestPtrEqual
|
||||
>,
|
||||
|
||||
// sequenced index to access older/newer element (like in list)
|
||||
mi::sequenced<mi::tag<sequenced> >
|
||||
mi::sequenced<mi::tag<sequenced>>
|
||||
>
|
||||
>
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2019 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -25,15 +25,12 @@
|
||||
#ifndef CHRONOSYNC_INTEREST_CONTAINER_HPP
|
||||
#define CHRONOSYNC_INTEREST_CONTAINER_HPP
|
||||
|
||||
#include "common.hpp"
|
||||
#include "mi-tag.hpp"
|
||||
#include "diff-state-container.hpp"
|
||||
|
||||
#include <boost/multi_index_container.hpp>
|
||||
#include <boost/multi_index/tag.hpp>
|
||||
#include <boost/multi_index/hashed_index.hpp>
|
||||
#include <boost/multi_index/ordered_index.hpp>
|
||||
#include <boost/multi_index/member.hpp>
|
||||
#include <boost/multi_index/tag.hpp>
|
||||
|
||||
namespace chronosync {
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2017 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -25,13 +25,14 @@
|
||||
#ifndef CHRONOSYNC_LEAF_CONTAINER_HPP
|
||||
#define CHRONOSYNC_LEAF_CONTAINER_HPP
|
||||
|
||||
#include "mi-tag.hpp"
|
||||
#include "detail/mi-tag.hpp"
|
||||
#include "leaf.hpp"
|
||||
|
||||
#include <boost/multi_index_container.hpp>
|
||||
#include <boost/multi_index/ordered_index.hpp>
|
||||
#include <boost/multi_index/hashed_index.hpp>
|
||||
#include <boost/multi_index/ordered_index.hpp>
|
||||
#include <boost/multi_index/mem_fun.hpp>
|
||||
#include <boost/multi_index/tag.hpp>
|
||||
|
||||
#include <ndn-cxx/util/sha256.hpp>
|
||||
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2017 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -25,7 +25,7 @@
|
||||
#ifndef CHRONOSYNC_LEAF_HPP
|
||||
#define CHRONOSYNC_LEAF_HPP
|
||||
|
||||
#include "common.hpp"
|
||||
#include "detail/common.hpp"
|
||||
|
||||
#include <ndn-cxx/util/sha256.hpp>
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2017 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
*
|
||||
* ChronoSync is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Foundation, either
|
||||
* version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ChronoSync is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* ChronoSync, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @author Zhenkai Zhu <http://irl.cs.ucla.edu/~zhenkai/>
|
||||
* @author Chaoyi Bian <bcy@pku.edu.cn>
|
||||
* @author Alexander Afanasyev <http://lasr.cs.ucla.edu/afanasyev/index.html>
|
||||
*/
|
||||
|
||||
#ifndef CHRONOSYNC_LOGGER_HPP
|
||||
#define CHRONOSYNC_LOGGER_HPP
|
||||
|
||||
#include <ndn-cxx/util/logger.hpp>
|
||||
|
||||
#define INIT_LOGGER(name) NDN_LOG_INIT(sync.name)
|
||||
|
||||
#define _LOG_ERROR(x) NDN_LOG_ERROR(x)
|
||||
#define _LOG_WARN(x) NDN_LOG_WARN(x)
|
||||
#define _LOG_INFO(x) NDN_LOG_INFO(x)
|
||||
#define _LOG_DEBUG(x) NDN_LOG_DEBUG(x)
|
||||
#define _LOG_TRACE(x) NDN_LOG_TRACE(x)
|
||||
|
||||
#define _LOG_FUNCTION(x) NDN_LOG_TRACE(__FUNCTION__ << "(" << x << ")")
|
||||
#define _LOG_FUNCTION_NOARGS NDN_LOG_TRACE(__FUNCTION__ << "()")
|
||||
|
||||
#endif // CHRONOSYNC_LOGGER_HPP
|
||||
+86
-87
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2020 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -24,16 +24,16 @@
|
||||
*/
|
||||
|
||||
#include "logic.hpp"
|
||||
#include "logger.hpp"
|
||||
#include "bzip2-helper.hpp"
|
||||
#include "detail/bzip2-helper.hpp"
|
||||
|
||||
#include <ndn-cxx/util/backports.hpp>
|
||||
#include <ndn-cxx/util/exception.hpp>
|
||||
#include <ndn-cxx/util/logger.hpp>
|
||||
#include <ndn-cxx/util/string-helper.hpp>
|
||||
|
||||
INIT_LOGGER(Logic);
|
||||
NDN_LOG_INIT(sync.Logic);
|
||||
|
||||
#define _LOG_DEBUG_ID(v) _LOG_DEBUG("Instance" << m_instanceId << ": " << v)
|
||||
#define CHRONO_LOG_DBG(v) NDN_LOG_DEBUG("Instance" << m_instanceId << ": " << v)
|
||||
|
||||
namespace chronosync {
|
||||
|
||||
@@ -69,18 +69,18 @@ const size_t NDNLP_EXPECTED_OVERHEAD = 20;
|
||||
* The returned value can be customized using the environment variable `CHRONOSYNC_MAX_PACKET_SIZE`,
|
||||
* but the returned value will be at least 500 and no more than `ndn::MAX_NDN_PACKET_SIZE`.
|
||||
*/
|
||||
#ifndef CHRONOSYNC_HAVE_TESTS
|
||||
#ifndef CHRONOSYNC_WITH_TESTS
|
||||
static
|
||||
#endif // CHRONOSYNC_HAVE_TESTS
|
||||
#endif // CHRONOSYNC_WITH_TESTS
|
||||
size_t
|
||||
getMaxPacketLimit()
|
||||
{
|
||||
static size_t limit = 0;
|
||||
#ifndef CHRONOSYNC_HAVE_TESTS
|
||||
#ifndef CHRONOSYNC_WITH_TESTS
|
||||
if (limit != 0) {
|
||||
return limit;
|
||||
}
|
||||
#endif // CHRONOSYNC_HAVE_TESTS
|
||||
#endif // CHRONOSYNC_WITH_TESTS
|
||||
|
||||
if (getenv("CHRONOSYNC_MAX_PACKET_SIZE") != nullptr) {
|
||||
try {
|
||||
@@ -132,25 +132,25 @@ Logic::Logic(ndn::Face& face,
|
||||
, m_validator(validator)
|
||||
, m_instanceId(s_instanceCounter++)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::Logic");
|
||||
CHRONO_LOG_DBG(">> Logic::Logic");
|
||||
addUserNode(m_defaultUserPrefix, defaultSigningId, session, false);
|
||||
|
||||
_LOG_DEBUG_ID("Listen to: " << m_syncPrefix);
|
||||
CHRONO_LOG_DBG("Listen to: " << m_syncPrefix);
|
||||
m_syncRegisteredPrefix = m_face.setInterestFilter(
|
||||
ndn::InterestFilter(m_syncPrefix).allowLoopback(false),
|
||||
bind(&Logic::onSyncInterest, this, _1, _2),
|
||||
bind(&Logic::onSyncRegisterFailed, this, _1, _2));
|
||||
|
||||
sendSyncInterest();
|
||||
_LOG_DEBUG_ID("<< Logic::Logic");
|
||||
CHRONO_LOG_DBG("<< Logic::Logic");
|
||||
}
|
||||
|
||||
Logic::~Logic()
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::~Logic");
|
||||
CHRONO_LOG_DBG(">> Logic::~Logic");
|
||||
m_interestTable.clear();
|
||||
m_scheduler.cancelAllEvents();
|
||||
_LOG_DEBUG_ID("<< Logic::~Logic");
|
||||
CHRONO_LOG_DBG("<< Logic::~Logic");
|
||||
}
|
||||
|
||||
void
|
||||
@@ -262,20 +262,20 @@ Logic::updateSeqNo(const SeqNo& seqNo, const Name& updatePrefix)
|
||||
auto it = m_nodeList.find(prefix);
|
||||
if (it != m_nodeList.end()) {
|
||||
NodeInfo& node = it->second;
|
||||
_LOG_DEBUG_ID(">> Logic::updateSeqNo");
|
||||
_LOG_DEBUG_ID("seqNo: " << seqNo << " m_seqNo: " << node.seqNo);
|
||||
CHRONO_LOG_DBG(">> Logic::updateSeqNo");
|
||||
CHRONO_LOG_DBG("seqNo: " << seqNo << " m_seqNo: " << node.seqNo);
|
||||
if (seqNo < node.seqNo || seqNo == 0)
|
||||
return;
|
||||
|
||||
node.seqNo = seqNo;
|
||||
_LOG_DEBUG_ID("updateSeqNo: m_seqNo " << node.seqNo);
|
||||
CHRONO_LOG_DBG("updateSeqNo: m_seqNo " << node.seqNo);
|
||||
|
||||
if (!m_isInReset) {
|
||||
_LOG_DEBUG_ID("updateSeqNo: not in Reset ");
|
||||
CHRONO_LOG_DBG("updateSeqNo: not in Reset");
|
||||
ConstBufferPtr previousRoot = m_state.getRootDigest();
|
||||
{
|
||||
std::string hash = ndn::toHex(previousRoot->data(), previousRoot->size(), false);
|
||||
_LOG_DEBUG_ID("Hash: " << hash);
|
||||
CHRONO_LOG_DBG("Hash: " << hash);
|
||||
}
|
||||
|
||||
bool isInserted = false;
|
||||
@@ -283,8 +283,8 @@ Logic::updateSeqNo(const SeqNo& seqNo, const Name& updatePrefix)
|
||||
SeqNo oldSeq;
|
||||
std::tie(isInserted, isUpdated, oldSeq) = m_state.update(node.sessionName, node.seqNo);
|
||||
|
||||
_LOG_DEBUG_ID("Insert: " << std::boolalpha << isInserted);
|
||||
_LOG_DEBUG_ID("Updated: " << std::boolalpha << isUpdated);
|
||||
CHRONO_LOG_DBG("Insert: " << std::boolalpha << isInserted);
|
||||
CHRONO_LOG_DBG("Updated: " << std::boolalpha << isUpdated);
|
||||
if (isInserted || isUpdated) {
|
||||
DiffStatePtr commit = make_shared<DiffState>();
|
||||
commit->update(node.sessionName, node.seqNo);
|
||||
@@ -322,12 +322,12 @@ Logic::getSessionNames() const
|
||||
}
|
||||
|
||||
void
|
||||
Logic::onSyncInterest(const Name& prefix, const Interest& interest)
|
||||
Logic::onSyncInterest(const Name&, const Interest& interest)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::onSyncInterest");
|
||||
CHRONO_LOG_DBG(">> Logic::onSyncInterest");
|
||||
Name name = interest.getName();
|
||||
|
||||
_LOG_DEBUG_ID("InterestName: " << name);
|
||||
CHRONO_LOG_DBG("InterestName: " << name);
|
||||
|
||||
if (name.size() >= 1 && RESET_COMPONENT == name.get(-1)) {
|
||||
processResetInterest(interest);
|
||||
@@ -339,20 +339,19 @@ Logic::onSyncInterest(const Name& prefix, const Interest& interest)
|
||||
processSyncInterest(interest);
|
||||
}
|
||||
|
||||
_LOG_DEBUG_ID("<< Logic::onSyncInterest");
|
||||
CHRONO_LOG_DBG("<< Logic::onSyncInterest");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::onSyncRegisterFailed(const Name& prefix, const std::string& msg)
|
||||
{
|
||||
//Sync prefix registration failed
|
||||
_LOG_DEBUG_ID(">> Logic::onSyncRegisterFailed");
|
||||
CHRONO_LOG_DBG(">> Logic::onSyncRegisterFailed");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::onSyncData(const Interest& interest, const Data& data)
|
||||
Logic::onSyncData(const Interest&, const Data& data)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::onSyncData");
|
||||
CHRONO_LOG_DBG(">> Logic::onSyncData");
|
||||
if (m_validator != nullptr)
|
||||
m_validator->validate(data,
|
||||
bind(&Logic::onSyncDataValidated, this, _1),
|
||||
@@ -360,38 +359,38 @@ Logic::onSyncData(const Interest& interest, const Data& data)
|
||||
else
|
||||
onSyncDataValidated(data);
|
||||
|
||||
_LOG_DEBUG_ID("<< Logic::onSyncData");
|
||||
CHRONO_LOG_DBG("<< Logic::onSyncData");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::onResetData(const Interest& interest, const Data& data)
|
||||
Logic::onResetData(const Interest&, const Data&)
|
||||
{
|
||||
// This should not happened, drop the received data.
|
||||
}
|
||||
|
||||
void
|
||||
Logic::onSyncNack(const Interest& interest, const ndn::lp::Nack& nack)
|
||||
Logic::onSyncNack(const Interest&, const ndn::lp::Nack& nack)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::onSyncNack");
|
||||
CHRONO_LOG_DBG(">> Logic::onSyncNack");
|
||||
if (nack.getReason() == ndn::lp::NackReason::NO_ROUTE) {
|
||||
auto after = ndn::time::milliseconds(m_reexpressionJitter(m_rng));
|
||||
_LOG_DEBUG_ID("Schedule sync interest after: " << after);
|
||||
CHRONO_LOG_DBG("Schedule sync interest after: " << after);
|
||||
m_scheduler.schedule(after, [this] { sendSyncInterest(); });
|
||||
}
|
||||
_LOG_DEBUG_ID("<< Logic::onSyncNack");
|
||||
CHRONO_LOG_DBG("<< Logic::onSyncNack");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::onSyncTimeout(const Interest& interest)
|
||||
{
|
||||
// It is OK. Others will handle the time out situation.
|
||||
_LOG_DEBUG_ID(">> Logic::onSyncTimeout");
|
||||
_LOG_DEBUG_ID("Interest: " << interest.getName());
|
||||
_LOG_DEBUG_ID("<< Logic::onSyncTimeout");
|
||||
CHRONO_LOG_DBG(">> Logic::onSyncTimeout");
|
||||
CHRONO_LOG_DBG("Interest: " << interest.getName());
|
||||
CHRONO_LOG_DBG("<< Logic::onSyncTimeout");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::onSyncDataValidationFailed(const Data& data)
|
||||
Logic::onSyncDataValidationFailed(const Data&)
|
||||
{
|
||||
// SyncReply cannot be validated.
|
||||
}
|
||||
@@ -408,14 +407,14 @@ Logic::onSyncDataValidated(const Data& data)
|
||||
processSyncData(name, digest, Block(std::move(contentBuffer)));
|
||||
}
|
||||
catch (const std::ios_base::failure& error) {
|
||||
_LOG_WARN("Error decompressing content of " << data.getName() << " (" << error.what() << ")");
|
||||
NDN_LOG_WARN("Error decompressing content of " << data.getName() << " (" << error.what() << ")");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Logic::processSyncInterest(const Interest& interest, bool isTimedProcessing/*=false*/)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::processSyncInterest");
|
||||
CHRONO_LOG_DBG(">> Logic::processSyncInterest");
|
||||
|
||||
Name name = interest.getName();
|
||||
ConstBufferPtr digest = make_shared<ndn::Buffer>(name.get(-1).value(), name.get(-1).value_size());
|
||||
@@ -425,23 +424,23 @@ Logic::processSyncInterest(const Interest& interest, bool isTimedProcessing/*=fa
|
||||
// If the digest of the incoming interest is the same as root digest
|
||||
// Put the interest into InterestTable
|
||||
if (*rootDigest == *digest) {
|
||||
_LOG_DEBUG_ID("Oh, we are in the same state");
|
||||
CHRONO_LOG_DBG("Oh, we are in the same state");
|
||||
m_interestTable.insert(interest, digest, false);
|
||||
|
||||
if (!m_isInReset)
|
||||
return;
|
||||
|
||||
if (!isTimedProcessing) {
|
||||
_LOG_DEBUG_ID("Non timed processing in reset");
|
||||
CHRONO_LOG_DBG("Non timed processing in reset");
|
||||
// Still in reset, our own seq has not been put into state yet
|
||||
// Do not hurry, some others may be also resetting and may send their reply
|
||||
time::milliseconds after(m_rangeUniformRandom(m_rng));
|
||||
_LOG_DEBUG_ID("After: " << after);
|
||||
CHRONO_LOG_DBG("After: " << after);
|
||||
m_delayedInterestProcessingId = m_scheduler.schedule(after,
|
||||
[=] { processSyncInterest(interest, true); });
|
||||
}
|
||||
else {
|
||||
_LOG_DEBUG_ID("Timed processing in reset");
|
||||
CHRONO_LOG_DBG("Timed processing in reset");
|
||||
// Now we can get out of reset state by putting our own stuff into m_state.
|
||||
cancelReset();
|
||||
}
|
||||
@@ -451,7 +450,7 @@ Logic::processSyncInterest(const Interest& interest, bool isTimedProcessing/*=fa
|
||||
|
||||
// If the digest of incoming interest is an "empty" digest
|
||||
if (*digest == *EMPTY_DIGEST) {
|
||||
_LOG_DEBUG_ID("Poor guy, he knows nothing");
|
||||
CHRONO_LOG_DBG("Poor guy, he knows nothing");
|
||||
sendSyncData(m_defaultUserPrefix, name, m_state);
|
||||
return;
|
||||
}
|
||||
@@ -459,13 +458,13 @@ Logic::processSyncInterest(const Interest& interest, bool isTimedProcessing/*=fa
|
||||
auto stateIter = m_log.find(digest);
|
||||
// If the digest of incoming interest can be found from the log
|
||||
if (stateIter != m_log.end()) {
|
||||
_LOG_DEBUG_ID("It is ok, you are so close");
|
||||
CHRONO_LOG_DBG("It is ok, you are so close");
|
||||
sendSyncData(m_defaultUserPrefix, name, *(*stateIter)->diff());
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isTimedProcessing) {
|
||||
_LOG_DEBUG_ID("Let's wait, just wait for a while");
|
||||
CHRONO_LOG_DBG("Let's wait, just wait for a while");
|
||||
// Do not hurry, some incoming SyncReplies may help us to recognize the digest
|
||||
m_interestTable.insert(interest, digest, true);
|
||||
|
||||
@@ -475,25 +474,25 @@ Logic::processSyncInterest(const Interest& interest, bool isTimedProcessing/*=fa
|
||||
}
|
||||
else {
|
||||
// OK, nobody is helping us, just tell the truth.
|
||||
_LOG_DEBUG_ID("OK, nobody is helping us, let us try to recover");
|
||||
CHRONO_LOG_DBG("OK, nobody is helping us, let us try to recover");
|
||||
m_interestTable.erase(digest);
|
||||
sendRecoveryInterest(digest);
|
||||
}
|
||||
|
||||
_LOG_DEBUG_ID("<< Logic::processSyncInterest");
|
||||
CHRONO_LOG_DBG("<< Logic::processSyncInterest");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::processResetInterest(const Interest&)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::processResetInterest");
|
||||
CHRONO_LOG_DBG(">> Logic::processResetInterest");
|
||||
reset(true);
|
||||
}
|
||||
|
||||
void
|
||||
Logic::processSyncData(const Name&, ConstBufferPtr digest, const Block& syncReply)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::processSyncData");
|
||||
CHRONO_LOG_DBG(">> Logic::processSyncData");
|
||||
DiffStatePtr commit = make_shared<DiffState>();
|
||||
ConstBufferPtr previousRoot = m_state.getRootDigest();
|
||||
|
||||
@@ -528,12 +527,11 @@ Logic::processSyncData(const Name&, ConstBufferPtr digest, const Block& syncRepl
|
||||
insertToDiffLog(commit, previousRoot);
|
||||
}
|
||||
else {
|
||||
_LOG_DEBUG_ID("What? nothing new");
|
||||
CHRONO_LOG_DBG("What? nothing new");
|
||||
}
|
||||
}
|
||||
catch (const State::Error&) {
|
||||
_LOG_DEBUG_ID("Something really fishy happened during state decoding");
|
||||
// Something really fishy happened during state decoding;
|
||||
CHRONO_LOG_DBG("Something really fishy happened during state decoding");
|
||||
commit.reset();
|
||||
return;
|
||||
}
|
||||
@@ -541,7 +539,7 @@ Logic::processSyncData(const Name&, ConstBufferPtr digest, const Block& syncRepl
|
||||
if (static_cast<bool>(commit) && !commit->getLeaves().empty()) {
|
||||
// state changed and it is safe to express a new interest
|
||||
auto after = time::milliseconds(m_reexpressionJitter(m_rng));
|
||||
_LOG_DEBUG_ID("Reschedule sync interest after: " << after);
|
||||
CHRONO_LOG_DBG("Reschedule sync interest after: " << after);
|
||||
m_reexpressingInterestId = m_scheduler.schedule(after, [this] { sendSyncInterest(); });
|
||||
}
|
||||
}
|
||||
@@ -549,9 +547,9 @@ Logic::processSyncData(const Name&, ConstBufferPtr digest, const Block& syncRepl
|
||||
void
|
||||
Logic::satisfyPendingSyncInterests(const Name& updatedPrefix, ConstDiffStatePtr commit)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::satisfyPendingSyncInterests");
|
||||
CHRONO_LOG_DBG(">> Logic::satisfyPendingSyncInterests");
|
||||
try {
|
||||
_LOG_DEBUG_ID("InterestTable size: " << m_interestTable.size());
|
||||
CHRONO_LOG_DBG("InterestTable size: " << m_interestTable.size());
|
||||
auto it = m_interestTable.begin();
|
||||
while (it != m_interestTable.end()) {
|
||||
ConstUnsatisfiedInterestPtr request = *it;
|
||||
@@ -566,13 +564,13 @@ Logic::satisfyPendingSyncInterests(const Name& updatedPrefix, ConstDiffStatePtr
|
||||
catch (const InterestTable::Error&) {
|
||||
// ok. not really an error
|
||||
}
|
||||
_LOG_DEBUG_ID("<< Logic::satisfyPendingSyncInterests");
|
||||
CHRONO_LOG_DBG("<< Logic::satisfyPendingSyncInterests");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::insertToDiffLog(DiffStatePtr commit, ConstBufferPtr previousRoot)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::insertToDiffLog");
|
||||
CHRONO_LOG_DBG(">> Logic::insertToDiffLog");
|
||||
// Connect to the history
|
||||
if (!m_log.empty())
|
||||
(*m_log.find(previousRoot))->setNext(commit);
|
||||
@@ -580,17 +578,17 @@ Logic::insertToDiffLog(DiffStatePtr commit, ConstBufferPtr previousRoot)
|
||||
// Insert the commit
|
||||
m_log.erase(commit->getRootDigest());
|
||||
m_log.insert(commit);
|
||||
_LOG_DEBUG_ID("<< Logic::insertToDiffLog");
|
||||
CHRONO_LOG_DBG("<< Logic::insertToDiffLog");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::sendResetInterest()
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::sendResetInterest");
|
||||
CHRONO_LOG_DBG(">> Logic::sendResetInterest");
|
||||
|
||||
if (m_needPeriodReset) {
|
||||
_LOG_DEBUG_ID("Need Period Reset");
|
||||
_LOG_DEBUG_ID("ResetTimer: " << m_resetTimer);
|
||||
CHRONO_LOG_DBG("Need Period Reset");
|
||||
CHRONO_LOG_DBG("ResetTimer: " << m_resetTimer);
|
||||
|
||||
m_resetInterestId = m_scheduler.schedule(m_resetTimer + time::milliseconds(m_reexpressionJitter(m_rng)),
|
||||
[this] { sendResetInterest(); });
|
||||
@@ -607,13 +605,13 @@ Logic::sendResetInterest()
|
||||
bind(&Logic::onResetData, this, _1, _2),
|
||||
bind(&Logic::onSyncTimeout, this, _1), // Nack
|
||||
bind(&Logic::onSyncTimeout, this, _1));
|
||||
_LOG_DEBUG_ID("<< Logic::sendResetInterest");
|
||||
CHRONO_LOG_DBG("<< Logic::sendResetInterest");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::sendSyncInterest()
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::sendSyncInterest");
|
||||
CHRONO_LOG_DBG(">> Logic::sendSyncInterest");
|
||||
|
||||
Name interestName;
|
||||
interestName.append(m_syncPrefix)
|
||||
@@ -639,8 +637,8 @@ Logic::sendSyncInterest()
|
||||
bind(&Logic::onSyncNack, this, _1, _2),
|
||||
bind(&Logic::onSyncTimeout, this, _1));
|
||||
|
||||
_LOG_DEBUG_ID("Send interest: " << interest.getName());
|
||||
_LOG_DEBUG_ID("<< Logic::sendSyncInterest");
|
||||
CHRONO_LOG_DBG("Send interest: " << interest.getName());
|
||||
CHRONO_LOG_DBG("<< Logic::sendSyncInterest");
|
||||
}
|
||||
|
||||
void
|
||||
@@ -688,7 +686,8 @@ Logic::encodeSyncReply(const Name& nodePrefix, const Name& name, const State& st
|
||||
while (syncReply.wireEncode().size() > getMaxPacketLimit() - NDNLP_EXPECTED_OVERHEAD) {
|
||||
if (nExcludedStates == 1) {
|
||||
// To show this debug message only once
|
||||
_LOG_DEBUG("Sync reply size exceeded maximum packet limit (" << (getMaxPacketLimit() - NDNLP_EXPECTED_OVERHEAD) << ")");
|
||||
NDN_LOG_DEBUG("Sync reply size exceeded maximum packet limit ("
|
||||
<< (getMaxPacketLimit() - NDNLP_EXPECTED_OVERHEAD) << ")");
|
||||
}
|
||||
State partialState;
|
||||
trimState(partialState, state, nExcludedStates);
|
||||
@@ -704,7 +703,7 @@ Logic::encodeSyncReply(const Name& nodePrefix, const Name& name, const State& st
|
||||
void
|
||||
Logic::sendSyncData(const Name& nodePrefix, const Name& name, const State& state)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::sendSyncData");
|
||||
CHRONO_LOG_DBG(">> Logic::sendSyncData");
|
||||
if (m_nodeList.find(nodePrefix) == m_nodeList.end())
|
||||
return;
|
||||
|
||||
@@ -717,17 +716,17 @@ Logic::sendSyncData(const Name& nodePrefix, const Name& name, const State& state
|
||||
|
||||
// re-schedule sending Sync interest
|
||||
time::milliseconds after(m_reexpressionJitter(m_rng));
|
||||
_LOG_DEBUG_ID("Satisfy our own interest");
|
||||
_LOG_DEBUG_ID("Reschedule sync interest after " << after);
|
||||
CHRONO_LOG_DBG("Satisfy our own interest");
|
||||
CHRONO_LOG_DBG("Reschedule sync interest after " << after);
|
||||
m_reexpressingInterestId = m_scheduler.schedule(after, [this] { sendSyncInterest(); });
|
||||
}
|
||||
_LOG_DEBUG_ID("<< Logic::sendSyncData");
|
||||
CHRONO_LOG_DBG("<< Logic::sendSyncData");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::cancelReset()
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::cancelReset");
|
||||
CHRONO_LOG_DBG(">> Logic::cancelReset");
|
||||
if (!m_isInReset)
|
||||
return;
|
||||
|
||||
@@ -735,20 +734,20 @@ Logic::cancelReset()
|
||||
for (const auto& node : m_nodeList) {
|
||||
updateSeqNo(node.second.seqNo, node.first);
|
||||
}
|
||||
_LOG_DEBUG_ID("<< Logic::cancelReset");
|
||||
CHRONO_LOG_DBG("<< Logic::cancelReset");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::printDigest(ConstBufferPtr digest)
|
||||
{
|
||||
std::string hash = ndn::toHex(digest->data(), digest->size(), false);
|
||||
_LOG_DEBUG_ID("Hash: " << hash);
|
||||
CHRONO_LOG_DBG("Hash: " << hash);
|
||||
}
|
||||
|
||||
void
|
||||
Logic::sendRecoveryInterest(ConstBufferPtr digest)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::sendRecoveryInterest");
|
||||
CHRONO_LOG_DBG(">> Logic::sendRecoveryInterest");
|
||||
|
||||
Name interestName;
|
||||
interestName.append(m_syncPrefix)
|
||||
@@ -764,14 +763,14 @@ Logic::sendRecoveryInterest(ConstBufferPtr digest)
|
||||
bind(&Logic::onRecoveryData, this, _1, _2),
|
||||
bind(&Logic::onRecoveryTimeout, this, _1), // Nack
|
||||
bind(&Logic::onRecoveryTimeout, this, _1));
|
||||
_LOG_DEBUG_ID("interest: " << interest.getName());
|
||||
_LOG_DEBUG_ID("<< Logic::sendRecoveryInterest");
|
||||
CHRONO_LOG_DBG("interest: " << interest.getName());
|
||||
CHRONO_LOG_DBG("<< Logic::sendRecoveryInterest");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::processRecoveryInterest(const Interest& interest)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::processRecoveryInterest");
|
||||
CHRONO_LOG_DBG(">> Logic::processRecoveryInterest");
|
||||
|
||||
Name name = interest.getName();
|
||||
ConstBufferPtr digest = make_shared<ndn::Buffer>(name.get(-1).value(), name.get(-1).value_size());
|
||||
@@ -779,30 +778,30 @@ Logic::processRecoveryInterest(const Interest& interest)
|
||||
|
||||
auto stateIter = m_log.find(digest);
|
||||
if (stateIter != m_log.end() || *digest == *EMPTY_DIGEST || *rootDigest == *digest) {
|
||||
_LOG_DEBUG_ID("I can help you recover");
|
||||
CHRONO_LOG_DBG("I can help you recover");
|
||||
sendSyncData(m_defaultUserPrefix, name, m_state);
|
||||
return;
|
||||
}
|
||||
|
||||
_LOG_DEBUG_ID("<< Logic::processRecoveryInterest");
|
||||
CHRONO_LOG_DBG("<< Logic::processRecoveryInterest");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::onRecoveryData(const Interest& interest, const Data& data)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::onRecoveryData");
|
||||
CHRONO_LOG_DBG(">> Logic::onRecoveryData");
|
||||
m_pendingRecoveryInterests.erase(interest.getName()[-1].toUri());
|
||||
onSyncDataValidated(data);
|
||||
_LOG_DEBUG_ID("<< Logic::onRecoveryData");
|
||||
CHRONO_LOG_DBG("<< Logic::onRecoveryData");
|
||||
}
|
||||
|
||||
void
|
||||
Logic::onRecoveryTimeout(const Interest& interest)
|
||||
{
|
||||
_LOG_DEBUG_ID(">> Logic::onRecoveryTimeout");
|
||||
CHRONO_LOG_DBG(">> Logic::onRecoveryTimeout");
|
||||
m_pendingRecoveryInterests.erase(interest.getName()[-1].toUri());
|
||||
_LOG_DEBUG_ID("Interest: " << interest.getName());
|
||||
_LOG_DEBUG_ID("<< Logic::onRecoveryTimeout");
|
||||
CHRONO_LOG_DBG("Interest: " << interest.getName());
|
||||
CHRONO_LOG_DBG("<< Logic::onRecoveryTimeout");
|
||||
}
|
||||
|
||||
} // namespace chronosync
|
||||
+4
-9
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2020 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -81,14 +81,9 @@ public:
|
||||
class Error : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
explicit
|
||||
Error(const std::string& what)
|
||||
: std::runtime_error(what)
|
||||
{
|
||||
}
|
||||
using std::runtime_error::runtime_error;
|
||||
};
|
||||
|
||||
public:
|
||||
static const time::steady_clock::Duration DEFAULT_RESET_TIMER;
|
||||
static const time::steady_clock::Duration DEFAULT_CANCEL_RESET_TIMER;
|
||||
static const time::milliseconds DEFAULT_RESET_INTEREST_LIFETIME;
|
||||
@@ -512,10 +507,10 @@ private:
|
||||
static int s_instanceCounter;
|
||||
};
|
||||
|
||||
#ifdef CHRONOSYNC_HAVE_TESTS
|
||||
#ifdef CHRONOSYNC_WITH_TESTS
|
||||
size_t
|
||||
getMaxPacketLimit();
|
||||
#endif // CHRONOSYNC_HAVE_TESTS
|
||||
#endif // CHRONOSYNC_WITH_TESTS
|
||||
|
||||
} // namespace chronosync
|
||||
|
||||
|
||||
+15
-12
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2019 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -23,9 +23,10 @@
|
||||
*/
|
||||
|
||||
#include "socket.hpp"
|
||||
#include "logger.hpp"
|
||||
|
||||
INIT_LOGGER(Socket);
|
||||
#include <ndn-cxx/util/logger.hpp>
|
||||
|
||||
NDN_LOG_INIT(sync.Socket);
|
||||
|
||||
namespace chronosync {
|
||||
|
||||
@@ -55,7 +56,7 @@ Socket::Socket(const Name& syncPrefix,
|
||||
m_registeredPrefixList[m_userPrefix] =
|
||||
m_face.setInterestFilter(m_userPrefix,
|
||||
bind(&Socket::onInterest, this, _1, _2),
|
||||
[] (const Name& prefix, const std::string& msg) {});
|
||||
[] (const Name&, const std::string&) {});
|
||||
NDN_LOG_DEBUG("<< Socket::Socket");
|
||||
}
|
||||
|
||||
@@ -84,7 +85,8 @@ Socket::addSyncNode(const Name& prefix, const Name& signingId, const name::Compo
|
||||
m_registeredPrefixList[prefix] =
|
||||
m_face.setInterestFilter(prefix,
|
||||
bind(&Socket::onInterest, this, _1, _2),
|
||||
[] (const Name& prefix, const std::string& msg) {});
|
||||
[] (const Name&, const std::string&) {});
|
||||
|
||||
NDN_LOG_DEBUG("<< addSyncNode");
|
||||
}
|
||||
|
||||
@@ -194,7 +196,7 @@ Socket::fetchData(const Name& sessionName, const SeqNo& seqNo,
|
||||
const ndn::TimeoutCallback& onTimeout,
|
||||
int nRetries)
|
||||
{
|
||||
_LOG_DEBUG(">> Socket::fetchData");
|
||||
NDN_LOG_DEBUG(">> Socket::fetchData");
|
||||
Name interestName;
|
||||
interestName.append(sessionName).appendNumber(seqNo);
|
||||
|
||||
@@ -207,24 +209,24 @@ Socket::fetchData(const Name& sessionName, const SeqNo& seqNo,
|
||||
bind(onTimeout, _1), // Nack
|
||||
onTimeout);
|
||||
|
||||
_LOG_DEBUG("<< Socket::fetchData");
|
||||
NDN_LOG_DEBUG("<< Socket::fetchData");
|
||||
}
|
||||
|
||||
void
|
||||
Socket::onInterest(const Name& prefix, const Interest& interest)
|
||||
Socket::onInterest(const Name&, const Interest& interest)
|
||||
{
|
||||
shared_ptr<const Data> data = m_ims.find(interest);
|
||||
auto data = m_ims.find(interest);
|
||||
if (data != nullptr) {
|
||||
m_face.put(*data);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Socket::onData(const Interest& interest, const Data& data,
|
||||
Socket::onData(const Interest&, const Data& data,
|
||||
const DataValidatedCallback& onValidated,
|
||||
const DataValidationErrorCallback& onFailed)
|
||||
{
|
||||
_LOG_DEBUG("Socket::onData");
|
||||
NDN_LOG_DEBUG("Socket::onData");
|
||||
|
||||
if (static_cast<bool>(m_validator))
|
||||
m_validator->validate(data, onValidated, onFailed);
|
||||
@@ -237,7 +239,8 @@ Socket::onDataTimeout(const Interest& interest, int nRetries,
|
||||
const DataValidatedCallback& onValidated,
|
||||
const DataValidationErrorCallback& onFailed)
|
||||
{
|
||||
_LOG_DEBUG("Socket::onDataTimeout");
|
||||
NDN_LOG_DEBUG("Socket::onDataTimeout");
|
||||
|
||||
if (nRetries <= 0)
|
||||
return;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2017 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -20,7 +20,7 @@
|
||||
#ifndef NDN_TESTS_IDENTITY_MANAGEMENT_FIXTURE_HPP
|
||||
#define NDN_TESTS_IDENTITY_MANAGEMENT_FIXTURE_HPP
|
||||
|
||||
#include "common.hpp"
|
||||
#include "detail/common.hpp"
|
||||
|
||||
#include "unit-test-time-fixture.hpp"
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2019 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -17,7 +17,7 @@
|
||||
* ChronoSync, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "bzip2-helper.hpp"
|
||||
#include "detail/bzip2-helper.hpp"
|
||||
|
||||
#include "tests/boost-test.hpp"
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2019 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
#include "logic.hpp"
|
||||
#include "bzip2-helper.hpp"
|
||||
#include "detail/bzip2-helper.hpp"
|
||||
|
||||
#include "tests/boost-test.hpp"
|
||||
#include "tests/identity-management-fixture.hpp"
|
||||
|
||||
@@ -32,13 +32,13 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import os, sys, inspect
|
||||
|
||||
VERSION="2.0.19"
|
||||
REVISION="1f3c580272b15a03d2566843c5fe872a"
|
||||
GIT="61ee22b598cf80e260beb64e475966f58b304d0d"
|
||||
VERSION="2.0.21"
|
||||
REVISION="16cd196b0fc7b4eebe195ce20396f3d1"
|
||||
GIT="86eea788e3210f6681a827cda931089da04e06c1"
|
||||
INSTALL=''
|
||||
C1='#6'
|
||||
C2='#.'
|
||||
C3='#%'
|
||||
C1='#2'
|
||||
C2='#/'
|
||||
C3='#-'
|
||||
cwd = os.getcwd()
|
||||
join = os.path.join
|
||||
|
||||
@@ -168,6 +168,6 @@ if __name__ == '__main__':
|
||||
Scripting.waf_entry_point(cwd, VERSION, wafdir)
|
||||
|
||||
#==>
|
||||
#BZh91AY&SY9 ½´\¥ÿÿÿ³DPÿÿÿÿÿÿÿÿÿÿÿm (¬#%0�0e€(b÷/mЀ#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%öÞúzómmkîÖZžÞæ—²U#.´[iÚ¾î�õ¹±µ–ú:¥'kd‹î7{ÛïoºµÛ¶ÖµK“¹]Øvµ'ÛßO¾ö¸gv÷s½÷¶N)#.Q+Ù½íp·µÞ�]/{mš»<{guÒ‹@Ýó{§«�vo;¾ø;ŸvÎiîáÉî44lºï{ß|ûëËßÚU9íõÝŸÝšî·¯y½÷½x#%#%@(}ìh#%` ï²€=â�wfí˜:4§[aÓ¹½ y©³A¦€‡¸ê»´ö4=¦öìd+Ö¨ª)ífš0#6 *”¢”{ƒ’�Q$#%#6#%YJ�zÚV½ƒ%çÍíîæ}»�j½êºa’ïjÚØá3TTf˦Iv×]s}6óu7¾÷z:#.ÎxûÝW_=³ÛzÖåZ;Û»ÍÝÛ}Þsy¾¯³»ß{¸ûížÖîiÉÔ÷Ëzõ¶§rç>^æû}ñ¾íóÛa zúz{x¹-ì�z̀ݳֲ4÷³¼ÛÞ÷fÞÏs¬ô`u¡ÒãF°Û"’EE7w¼#%(J*’OCÀ#%lîè•=÷n{Ywº¹½»ÐdÜöï>}Ü[vÇGÐ`>†ÛEmk®¥ÑMã�W`×LæyÛãÚ^u½#%}�÷aŽît;o¶û}|{mçO—vpòǼ΀Šo·*WµíƘܶ2>öí®®òÏŸwÖõ»]´î;ºjîí9QÚt×·Zt“ž>÷»Ü®¨ÜÙu÷‡ß|}í«×ܬ‰&ÞíN«îq\îû½:¾Ã.ñŽ^ÙéyaC§¶Ó¶Û›—³®÷Ð¥&nCzî¤|öilöͶíÝîвë[¸˜÷»³Ûºû5ÖkoX«èqØ—nöÐlîõÞÞ/`{´žó½wÌ>ï†Ðê¥PJªPTT´jB¹7uÐv�&i¶vÜèº]vú‰Ý›:kÛkÔØëUUܘ{x÷š)º¼»HЃºÚɯfw€#%7ZI#%#%;Ü^êåÉÎó²û3ÊF-Ÿm½ÜözÔíÝ™Üì_U.us[›¶õv]]ó¸|˜Hû†,ÍqÑ»ÝÁæñ{c;úŒçvåJº{+¹éÔ²õ§l÷+ªWg¡»`úùÛÙ;{n#î²Ç]÷}çww»{»»xîvÛ#.¾Øú½mÝEfù‡"sž¼ï¯¼ùÚÀ°ËlÐú$/g¬íÑ”x<ïÜë°VØ6EÇ‘µÞ®ÚGxO{×>öø½ïwÞ´#%À*×Û;Fªµíí7¶;g�<�ÂÀëu´oSk´ÝëÓmï 9.ó’®Ú×ݬ»Ý¾çwÅówwtåvë¥Þç:#.[.ëwc Ó‚àéÕhÁ”gu“½Þ^ïŸnØu¼�ÓÐŒ…/=ÝÚ4#%•c�¹éî½Mö{ÜàìJ…U )½{xW»´×`ï{®ñÝÊäÅÖÃV¶•U[}÷IzovƒuÇH*Ší·u$ëIÒÖªîúãÞncÚ[ÓµŽÛ× &Æ»»}öøø‡½óí·³acÜ| ìÁ“G»îñÌͼÜ&:·»}½í6µî�Ðíç;ï¹ßvÛRÀîï·Ÿw}-âò�ó[ãnh€ &€#%&€ £CBa0š#.#%‰ä™PÏTz†Ðš#%õ§’{SÔõA) B @†@©©á$zzI☠é4#%#%#%#%#%#%#%‚D! M5TÿMŠoU<ÔôzTý(òÔõ)é¨mG¨#%#%Ñ£@#%#%'ªRD!4dÐODõ$ÙOFž¡£õM#.€ò@#.Sj#%#%#%#%#%#%$!#%&@bh&M#%M#.4SÓiˆŒ4 ¢ #%h#%#%#%I¨ˆ L˜#Až€&Œ¦�=&”õmêˆ{SIé” h#%d4#%È#%—ÿÓ?£Uirê\ÕQWwk¹úµZvhʃ>5Zu!LA³ ,L•Q*"€)æ°Pcõ§óü Zü“•5OùÓ¦¸ üæJt¦î£Ä‘8•WoT"¢]^SÌÆ´_3ý†os2ìÀlDs‚4;m»qE6›®ñ‘ÎÊ´ÚMí˜ÖØ`Vd…â]jíâ—˜•5o‚# åñ÷UŒI7wD¼áÌKUå¦/žÝ~«oÔB�äE"ªSº»U¦ÖÖ5k3khÈ‹ €7#%H*-E Õ:¥”$HŠ&� ˆ" HåP° !ß#%hŠ–‚¡#%ª$@dPÉ@mªfL…’ŒÍCLÓd@M$Rj6Ñ35–25)F”Sm&‰š$ÐJ2Zš�Q°h[Fi,ši¢Z!#.F)iM€F¥�#.1eM£DRl–�¨Š–ZSMh�ˆYi#.š ƒ(ÌÌcRF£Qµ&ƒJl†BjcI@˜hÒËHÆR›F¦›"[M¶³U´i˜’ÆfLÈM&²m¦ÛM6�5%)-5±–¦Û3fZL“1‘f´ÄÑd¢‚™l‰B!Qf‘´R`4TH!`ؤ©„f•Jb0lB ‘X�hdFIR&B4±ClÍ’&)BF�RÊËf$@ÒYŠY5“ccE�#6‘d†K) -)¦ ±%&EDš2hhɉIF‘(�$@VAM�Eˆ¢fRÒ¦`›É؉1MÍ‚ab6¤Ø–V‹$”›‚$´”PRD•’%¤Q0Ea�ÆIL# ”&RJME™±£XHÒjH’b iM�$"H²[bË2ŠFÌ’‰²™3bdE(Í‘˜&U4Ä�‹)A³Q`,�i¦†Æ"5+%’6(”R"šIˆ&¤a³L�cI¡ &¤–Q”Ôi3HÚ("šh¢kP,&YA¤²2‹%&DÐM2‘*4f6”)1¨6ÄÊA! "“1�F4,�Ë ŠÙ&TÌÕ˜£l¥±(‰™#.H¦!HŒØÐ¡YM$QF¤É&ÉØÆJšF¦h±b2’™˜²2³i„¬D`ˆ¢JM52i™!Œ¢)#.š1Sb‹5*R’š)#.‘“2)´…HÅ(ÊHR"‹E$˜’M)´i5DŠFÀ˜Œh&Ti¦DÚ#.ƒ,„Òe‹DÈY‘¦ÉJb”D!f™ k6lmd°$4–Ld5EPZ XR$Ècc1 Â2ƒRXÔY¤J&ŒE©M(Z˜hI™IŠ$2ɲ#)‚E,Ñ¥1„5„²e"$4M¶¦¶´`™BjfŒ¦F&”RLȈ¥6À¥š,Å&‘”%–TÙ¢-L¬-”bC؈RˆšD#HJm~Ãk¢¦©aˆÍ¢ŒlVƶ*6L¥4ÔR¤š44´…¨ØFÉ5Y†¡¦c(ÉS*H¶D‰™¦[%´Q‰IKQµ…£&˜D±5˜±acR#6e¥™2eI´*Ò4TÙB+dË"©TÒT›63š¶,Y“L¬‰S,¦ÖJ²ÙJSL�l�’‘µ)¬±%¤2RÔZ ªŒ!¨Õ£%AEVMd£jŠÅEH”kDÑ$m‹hÅŠÔl2ѵ�€´™0°U@i€”R £F2™&•¦±Æ�¦&±‹d‹i Õª–µ–* ”ÍKY4IR1!M¤lY"¶¥Y¶1Jm*–R¦YaZšDF¶•K"e5MM¶„”Êk,Xl²k+,…lÓ ¨ÒD…�bÃ4˜‰!´…-£T%¢†KQY&š6LšJ,ˆ&ËŠl¤#."+,‚E1”ÌJ”lÓ4AE¢Ó$&Fm6“F6ÆÈS¦™cE%bHÌÔ#!4LÔQ¢JdR�–P5BTÀ4˜Ó J™²Bj-#636£)F̤’Œ�£!HbÊkÃi4F5&Éa$YP…-4)Äš4Y”©””²•˜d¬aš,‘±jE¨Õ5£4ECF¥)6b¥�fQj4 2ÆA¦&Ä•%I”1Ršcd�¤Ía)ME`Û0Ù¤²lf“E�˜‰CJ2Zfµ‘hTÍ2–H’l£0D2hªih�¬Òl”Ä,LDÒRBAh´[ Q¨ÔQŠÆ-–ÃI†’M#6L�ŒRˆ#b��-f›C2ˆ6*2%,¤©‘Ñ´k£TI¢„Ë5EŠ$Ôš£PdðŒj”¡kA¥4Ë!E$ЦIh‚5Eˆ±JÛ"¥F±¤ÁdÑÌ¡jQHfJ$©±(‰•j#V#.2,Y*6Œ)‹4¢Ù2V-&)+)¶D¶M�¡¢T’™R¢Âƒccd£dÑ&#¶H�ÔRLÁ¬ÉƒA#6�)³6&"𯍩•“Y‘¤)¤šŠ¢Š&›RV-”’ÆÉˆ£F‚4˜2JÔˆÑie£he¨’Ñjб”£i5² …Q¶5%)ЙÈ̌ƚ‘�LÙ&kDlU%‹hÔ•,«&´LÚ�1lj £cc$UE2©¥XÚ6��¶1mI˜ÊQ f²±-F+iQµ´©QJV”f*šB(4X"J�&ØÖ,Ê’+I[M²“+F�bbÑI�E[l¶¬R&T*&$¢1PÀ"CF�Ši&ÔÃ%XÛØ´Í[F5¬´•42ÖÊY6ÔÔÛ!mI¦¬ME26’QA°ÖjMI™²Êˆ B¢LI&RLˆÈÄd"Ù-¢Ñ‚±“þn··ýÔ¥C)þB51jÄÿTqôe+(a(Æh”‡÷!þ§ ûbåÕ LÿL$hÒlùNzí¿Îó±½9¿‹øºô·¦SUIPª?ë[ŒlÈŸÎÿ·ÖYLâsÈ †ßùë;�L(0\:8À¥‰pÁI äˆd˜*ƒ‰Ãß±¢rý*¤çÿœ3ÿ³ôZÑÿÊI(R×+ˆ½”g™,$b/Í0ÿ-‹npz%ZM‡¼íõâ8ßwB¹ÁŒ¨d~ËÕ‹NØœ“ÆZþ,3cRR(l“ŠrrXˆþúݳf¤áV…cÈÌ`I¥Û"lÆLhƒcôzç““G]“¼î�˜Þ¹w§¥^¥ã\³�Ë/âuçåu™Í\‚LŠëP¦"W‹4LªvcK™@¥JAF&Ä“M‚ê×bÈ‹Ò3ˆ(êñç]¨eñnY½74h6m`Ù—(c2@sªªzoþÝ(‘ 7p‡Êc#6Gv…)†ì,`¼rÂü®R[ŒR}ßÒëdzçgsÅéšÐN×VÄQL0¦Ð¤Y;ùd«Ïô8$ÚÍÏ£˜ØÐØžj¤Ï(%?·râƒþ°Ãµ“ºÀ¡…†JÅxžß÷k¶Œ¶cÂx-›2KËw%€•¬C°UyáyÜ–íÞw^QŽr車esn–CQW6éçqllO²ëå5¼Z4EA¯»ºŸ?_ÆW‹ò-ȦWÅȶÆåÈIºÕø¼u‘¨Û?Go*„Èyùæ|m<™b#4L9cuPEX°ž«©#.¹t@#6A�!´ä#ñÆ#.¯)ÎãÂHˆÃz”^+›Ý\Ѩ8šë•ÞwcrŽ•Ë™(Ë®é$s™5öø‘ZA„�ÿhÿŒJrÈ.YÚlCÙ’,0!MðÛtÉÈe«#6ýR�‹ÁÃ79ô,ýפ�¾ìÉþ˜FtÃÏxV¬@Gô¡€dž%lþ «p’—<kìÄ9 c£ðÐÃ|¶Ç™“#tE]HP0îT[æÈ؃Ù_#¨½—zírH ȦwâÔŠŽÍW†7mxþVYê?)Ärvj³oQžwE¦m„e#.¿ÂdÔ‚™ç™×¶b²àþN!ïe §&¢”øuû/ÑÏKà`ö§nínœšùT)"*�¤#6d9#c*w&é�ƒbÛ†ÉðfR6zš®:'ï�.àûì¥k,YL#6N�*}±ÆyÞ>ÇãŠ�UË"õÖ�“UO«pi)8ª—â”+ñ §Ó¬,‰±Èj[þv¼‹lQôÇôa™1Kèë¯Ç×FÌ÷¿SªÄ7Ím‰Z½”*‰£NŒ¼Pâ-#6¬AË@‰�*•{iX<ÙZøW÷»(Éðâ»EEE¼nY5ÆÕ͵þ—ìw’�>ÇS6½•ß‹«¦öøÿM‡fhŠF¨%2+zmýW!†�ŒbSQIðîÜ®÷uVé(i%"�÷@Xš'+¬¥&D§)J²‹šå¢¶/]öï^¯"R¬•k¹bÑ_·-×»±öõÆ*Š|ý{ü=o÷îèë˜ØÔl›|ÏÀÞ1¨4–üŽ�‹>õÝŒ>¬žýóL—ÖȲ"4£�~"U�ä¨ræPaŒLÖ¶jϹ$Â![ÙùzÛ²†F²lWßî«âøùÑÊW=ì¼4D‰Áa«l—AHÒPŤ'Ò'mBµ§…C×Gƒ¶éE2„R]U¥"»wÕ¬�ü*ÔðХ߲œœ²ôî²Á‹¨ÀS�E#6lÃQMZH"JuœëJ»*”Ó#6I¢L²íãe—¥Â„S²ŠŸ$+�bLine truncated
|
||||
#BZh91AY&SYTÛ¶ñ^îÿÿÿ°dPÿÿÿÿÿÿÿÿÿÿÿm ¨Â,#-40�E0m b¼÷)#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-¥÷Ó\ÊV¾æ»Yc½Û½Úl¥Cf–ÎÜ´ºûwY¬Û¬w¶U:fÖÉÖ»zt¾{vÚÖ%Ñܬš�<Ÿ|ûäÂolÙÝ·G»dÅ!ª;nìó½p¼›×»^ƒïa»<zÞ÷C¤ô:íõÛÚN&Y®mïCs‡]××q‰îg°½ì÷½÷Ûï¾Wo|m¶4Þo¯£Àocš½Ý;øà#-#-#-#-A7¸#->4=hà÷f€yà#/›»y€=µnÒw;Ðtô{¾ööµ°i #-i“Ó»]—^Š:º#-íÐØl…z4Uö°Q€P()T¥È2ª‚ŠÐ#/uèzz€UèuÀé£Ï¾íz÷»‰Øí]ŸuEnñÛÍÕ©3#/RTm‹L’íÍÍôö�®_wÞ^·»ØûîŽö¼öí´�mìó¹çxúÉí¾ûzó{;vÏnºûìÉlÛy5<ûž“íñßYêmËÇxíïpò€ èó²´#2AUR�{6›Ù¤ë]µÝ›µ™v={¼nï9Ö:Ô�´<¯yÈöìÌÔˆ¤§o9L§#-Q‰DP=Øg¡Ð½ÁÑOGo;¼g¼Ôö·½�Jªû�w¼Ï™—³"Š#-õ¥¦)kk_]K§Û;ã�W{�ïiæ}öö;ÁèV÷·µào}nw²·�Ãèi[Üð}ã¦}×sÔöãÝ�#-ºÓïgÓÛv©�p2_föº»ËO¾ß[Ç]\]Ë´ÕÍÒï®=§»W×7�$ç—Ü÷/nv¾ïuìç¼;½>ó«ì¥#/vt¦œîm>Úõ]>Ì9|'s|šÞ,({k’î¹ÏmÛãà×»*Ïvêfùîîún½ŽÙ±÷�¾Î^Û;›C–ÕK}Ý%ë�÷d{»Ýdòœwpç+µÓy#-Ý9^ózï˜}Þ#/:ÎRŠ(#2ìÊB.…˜Ùr‚¶ZÖÛggCêÜ®—BAï¹›±:UÃcÛBW]²¼¼{e"ÝvöÔƒ»æuÝ�#-#-mìë´€‹Ðöósr;¼ívZªKW¶l¾Ýæiîkbn»ÜÙnQêæäTôévÁO³:ù8ön�½515ÇDBÞ²“¼^ìyîú}íïq¸ø +™Jó[ž�Aí›Ö�§:¤žG¤›{+¡Ï¶â>ë}‡r[ºu½Ã½î^Õçm¬Wۃã»��zvL§�ÙÎǦ–›j[[(z/wéÞÞL£>¼{àíºè5k ¢qòίCU™Â÷žûß}µ>sì@UïjáUG9J[×y�{º8îõ\î.0©Úfì*Í7׃٫6½·m�}µ—a½ï}ÏwŸU»�ÒTËJ½ÎtiwXÒîšô÷Zí‡4ð\º ƒt8éÇ{¼»¾µ¶¾o iè°ú+é˜=À#-9W“Wn¬û¬v{€:¢�¶¥Ú×{Þ»Û#-ì^Úqo+¶çwWLX½·ë{¤lغܻ¤¨¡Œm¦ÙÖ•Ùm— õÆ}Ï»ÇvÜ}¥½1{Xì÷zͪæ¾ûxø‡½ó¾ë\ÀžÇÏFôÇlC&NëîñÛÍÁ¡mqïsîï-½Þ÷¼ó¸ôÖ^ù÷;/²µ�ÝݸÖókíﯓàkSå_,ᦈ#-€#-&€#CA0 ¡¡0‰äBO#/¨ÈQ z@òGµ4Ÿª M@�#-š¥<&1&FÑOÒFÒPÈF™#-#-#-#-#-#- &A2a4§â‰?#2›ÒŸéSñ=Q=OQ£j=zž“@Ð4#-#-#-#-OT¤ˆA4ôÊ1)æ£ÑGêƒF'êž�P#-#/šƒÔ4M#-#-#-#-D#-M#-€&™4ÔÍ551‰¦ ¡3I�š@#-#-#-€$ÔD ˆ4h�4Õ3)õQè�({I¨ÓOSÔ#-h#- #->_ÿIþ�U¥sùñʵ;µÛöª´ó4™¨3ãU§bB˜“Td` ˆ*%@@|–"Qú/Óø¨ý?¨»ýTøØ xƒ50èµ+,S¾šSTboéêê`‰þ£_#ývos2ìÀkWdD$ AÔÔ] ÔDd‘ÊÞd¾*ꉗŽqs…OˆW4]Z¬aâí•FQ1‰Ãâ1wŒ(˜‹˜¸Ça†ñåøúˆVâ#2‘V#2F @¨€‘EF1E$E@A@n#-�TZŠ”å,¬‰"Asha@0Š�#ŒQBÀ$Dl@„×çUºm¯-kim©Wt[н¦ÔUUo}¶µµLÉ�²Q™¨išlˆ £ŠJ�´LÍB%Œ€MJQ¥ÛI°¢f�2M£%©¨Õ…´f’ɤˆÑ-†£‰´¦‚@#/£RƆ˜²¦Ñ¢)6KE¨Š–ZSKh�ˆYi#/š ƒ(ÌÌcRF£Qj“A¥6C¡51¤ L4Ye¤c)M£SM‘-¦ÛYjÚ4ÌIc3&d&ˆ“Y6Óm¦›@š’�”–šØËSm™²–“$ÌE@dY14Y( ¦E"FЈTY¤m˜#/X6)*a¥DAR˜Œ„($D– Z’FÔ‰��,DÛ3C$‰ŠP‘†d²²Á™‰4–F"–MdØØÑb‰…H²C%”„�Ji‚lII‘FQ&ŒšL˜�T”iˆÒH�ScD‘b(™”´‚)˜&ƲC6"LSC3`˜X�i6%•„"À‰%&Æ¢"KIE$IQ "Q ŠEP`&d”Â0™Be$¤ÔY›5„�&¤‰&!–”ÙB$‹%±&,³(¤lÉ(›)‘±6&DRŒÙ‚eSLI²”†ÍE€²A¦šˆÔ¬–HØ¢QHLŠi& š�†Í2�&! &¤–Q”Ôi3HÚ("šh¢kP,&YA¤²2‹%&DÐM2‘*4f6”)1¨6ÄÊA! "“1�F4,�Ë ŠÙ&TÌÕ˜£l¥±(‰™#/H¦!HŒØÐ¡YM$QF¤É&ÉØÆJšF¦h±b2’™˜²2³i„¬D`ˆ¢JM52i™!Œ¢)#/š"¦ÅjT¥%4R#&2dSi#2,‘ŠQ”�¤E*ŠI1$šShÒj4‰4ÆÀ˜Œh&Ti¦DÚ#/ƒ,„Òe‹DÈY‘¦ÉJb”D!f™ k6lmd°$4–Ld5EPZ XR$Ècc1 Â2ƒRXÔY¤J&ŒE©M(Z˜hI™IŠ$2ɲ#)‚E,Ñ¥1„5„²e"$4J5µ£ÊS4e214¢’fDEh5)¶,Ñf)4Œ¡,²¦Íjeal£Sb!J"i�!)µüV×D%MR"ÛE؊بÙ2”ÓQJ’hÐÒÒ£a$ÔmdF†™Œ£$l¦T‘lˆ33L¶Kh£’–£j)FM0ššÌX°±©2ÒÌ™2¤Ú#2�•i*l¡²e‘TªY*aM›ŒÍ[,ˆ“L¬‰S,¦ÖJ²ÙJSL‹l�’‘µ)¬±%¤2RÔZ ªŒHj5hÉPQU“Y(Ú¢±QR%Ñ4DÉbÄZ1bµ´mc`-&L(ÁU¦QH&�ÈZdšV–Ä[6˜šÆ-’,m¢Z©kYb¡�™LÔµ“D•#4ÚFÅ’+jU›c¦Ò©e*e–©¤DkiT²&RÔÔѱhIL¦²Å†Ë&²²ÈVË1BAC*4‘!cDX°Í&"Dˆm„Æ!KhÕ @„¨¡’ÔVI¦�“&’‹" ²Å"›)FÈŠË ‘Le3…%4ÍQh´É ‘›M¤Å�±²Â)¦@Ä…ÑIE†˜’2j‰#/�ƒ &j(Ñ%2)F‚Ë(¡*`�Li„¥LÙ!5Œ„FfÔe(Ù”’Q�4d)YKb"˜m&ˆÆ¤Ù,"‚ÉXBŒ–ІbM,ÊTÊJYJÌ2V0‚ÍH؆5"Ôj�šÑš"¡£R”›#/1RÆÙ”–£@‘�“ LdblIRT™BŠ”Ó$…&k Jj+Ù†Í%“c4š,lÄM4£%¦FÕ‘hTÍ2–H’l£0D2hªih�¬Òl”Ä,LDÒRBAh´[ Q¨ÔQŠÆ-–ÃI†’M#2L�ŒRˆ#b��-f›C2ˆ6*2FÉK)*dE´mƨÕh¡2ÍQAb‚ 5&¨Ô0Ä,#¥(mch4¦™d(£D‘TÉ-F¨±#)[dT¢¨Ö4˜",š"™”-J)ÉD•6%2DjÁ¢¦E‹%FÑ…1f”[&Jŵ¤Å%e6Ȗɱ´4J’S ÊTX@�lll”lš$Äb6ÉŠI˜ Õ™0h!Q¥6fÄÄSXÕ2²k24…4“QAQDÓjJŲ’XÙ1h �&’µ"4ZYhÚj$´Z¢¬e(ÚMlˆ!Tm�IEŠE4&E23#1¦¤F%#/LÙ&kDlU%‹hÔ•,«&´LÚ�1lj £cc$UE2©¥XÚ6��¶1mI˜ÊQ f²±-F+iQµ´©QJV”f*šB(4X"J�&ØÖ,Ê’+I[M²“+F�bbÑI�F¶[V)*Q¨`!£FÅ4“jaŒ“mbÛ™«hƵ–’¦†ZÙK&Úš›d-©4Õ‰£(¢#FFÒJ(6ÍI©™›,¨Š*$Ä’e$ÈŒŒFB6Éme¶EÿƒÄÿ} èš?ÁXf³ô#?Ï£¥†ØJ0åÛ•üÅò9ì¿“�wÅ[›û<½*#/MŸ4ç®Ûüï;Ó›ø?ƒ¯Kze7q˨ÿ]òeŇõÏôüK�Õ‡~…rÿ©Zà#2dAE‡G±.)$‘#/·¹‰ÃåÚÑ9þJ¤³ýAŸüÿZ?é$”)k•Ä^ÊpVP±ˆ¾§4ÃýkÜàóJ´›i×çˆã}�#2ç2¡‘úXwf¬ZvÄä�ò×õ0ÕJ"†É8¡·'%ˆƒüµ»fÍIÂD##1�$v—l‰³1¢#/�Í¢:>MvNóºBczåÞž•z—�rÎw,¿�ן�Ög5r 6#2…1š¼Y¢eS³\Ê*S I’$b„ÞíºP®‘€‰�h”…ãλPËâܲ3znhÐl‚ÁS‹&*�î\r¿ö,°þwp̦0Q`¤whR˜nÂÆnX_wµÊKb1ŠOËü=xö|íÜñzf´µÕ±S)´)NþY*Ì�Á&Ön|9���&ÄóU&xA(ñý›—(?àv¡brwBØ0¡ÂiX¯Ûþjí£-˜ðžË@æÌ’òÝÉA %kìQáyÜ–íÞw^QŽr車esn–CQW6éçqllGÀ£q„¶A`¢€«uP<hø!kë[‘L¯‹‘m�Ë�þëWçxë#Q¶~|("!ãã˜Añ´òeˆŒÑ0å�ÕAbÂz®¤4råÑ#-)i#/§!7Ž0mxNwDFÔ£¼W7º¹£Pq5×+¼îÆå+—2Q—]ÒHç2>kíòIa�?ìê’œ²–A¶›öB$ÆÑ�#2hg†ØË��ËV,öQJ>´š~ÆŒi[v—_'³2<PD¯õQIº4Áj°T?І�>¼J6:jÀ\$¥‘7£þRÁ½8&V¾Û%AÆgØ¢…2Ia;•ù²6 öWÄÈê/eÞË\’(3)¡øµ"¢…+ö¼~û,ò>ü)Äruj³oQ�ß#/wE¦m„e#/¿ÂdÔ‚™ç™×¶b²àþN ø2�S“QJ|:ý—èç¥ð0{S·v·NM|ª² âÕÊßDlònß}|—·»´Kn'¹™HÙäÕqÑ?l wÛe+Zie0):4¨ôRÄGçxûŽ*uW,MùqY„�¿µ21¤Úy"¾ÖP¯¼&ŸGXYc�Ô·ü¬=Y4Ø£ƒÇó�a™1Kèë¯Öë£f{ß›«Èæ¶Ä^ˆ�ŒJDѧF^(q…V å DÇ•J½´¬l|+ûÝ”euâ»EEE¼nY5ÆÕÌ�ÿ‡ì«X>#/¡^41Xý¾?ÉaÙš"‘ª L‚#2Å^›EÈa„EF1‰ME'ûr»ÝÕ[¦á¤”ŠwÝbhœ®²”™œ¥*�5ËEl^»íÞ½^D¥Y*×rÅ¢¿¥–ëÝØûzãE ¾~½þ·Š{÷tuÌlj6M¾gÝoÔK}n�,ø/»æÆ,žÝóL—Í‘dDiGÜD«ë�åÌ Â#™lÕŸrI„B>¶£éD•V"Â#"‡Z 6vº’W=ü¼ôë,±®h×Áão:¹9tÇ!8¶‘;jå<(šº<·J)”"’ê)Ù¥®úµ‘¿¦O#/#2]ü+)ÉË/N뼦5„Ô_5×Eñká+ÅðrÓ£áxLC%¡GîŠ4whŒ[bÓV¾ÖYz\(E;(©òB¸ñ°¶*ŠÄêÃÍ–±ä�¥ÑÒŠœ�£Â©æLine truncated
|
||||
#<==
|
||||
#-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEivIt5aBoIuNHTzxwSbTGfAUneqoFAl3aW3cACgkQSbTGfAUn\neqruqA//Y9oJ46ZR8W7YB/e45bfrYxGbN7NnkvkwSPNziObYur+n1QpQEOaPTn/U\n5kFtPWHXRJzaG/A9poKn7pl1Xd7Edcu1aalfoEazZbuD37VOxIp9lnrefCAeICqj\nGv0SD96Zac91CbA+b20Q4xnqxKMi3LSI4NPjfFGy62FkSk3MS4p6Rdp0/WAKwwNj\nw7WEjQCNmLb37z+FGSzXg28aljYeteBZEthsVmGJ5QqVwMBwgj2+y5FOTzFfxmqB\nrWgjFYS0l85kgYRZv9yzdNmFs5SScwafwpT8Xmdr49tFn/+0LxXyRxX+rdODgrpV\nY4EOiQz0fd6mMMnaTDXlLSXls3JyVYmbTjeNL/9gcHmnStzJ851CJQfyQg7A+JoC\nc7nz0HbiFyTgB+PUZr1OhGj3A7287o8XQ0tqR3oa7jXIOX0OynrGplMQKr++0jE1\nBgKzjLoE9CTbjkQfICLG+aUy3S1ZyDk/BcO+5+Ytbru+qXuDsIgAdVosMfNSv9jJ\nXvOINsbRMekdejYMZv8fIkn5OEjCFHVhNpobEsCb768bjB3p7alQGECBvjHCm6dy\nXZPzl9cBMWIXcBjPTS+GZj+PIXGcu76pbsx6HBHWf+uJ+4xgOsUCVu//0AV09jvA\n0MjtLWwQ8mdRH6Wt4hsp4HKtSvQrhmljf2OnuYBgaFmcdJkN1zI=\n=C0oT\n-----END PGP SIGNATURE-----\n
|
||||
#-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEECzlystnjLqtCPS4PIr4MYv+/pUgFAl+oTtQACgkQIr4MYv+/\npUhzmhAAqNeBRQuz2Z2EvWjxH/EARVKUe499ZPLsiJpl79NX3r0LWeLjf1kNAdxi\n7pR36XY8RdRwQaqNQiJ7UWzKRYXGCix71gaDyq/Qk6eZko6ts3DdicG8m12i7abi\navAtSgKzwE7o4rMqKG3iZe4AXxhCtijjIZY8Kli22XNCpY0YqUjXSNYPlhsZBWrK\nkKSmfcYxqHGrH6AKGwEJV/GbLIivYCQi6KWFfJwSOcid+479EXBuMiK8piVl6uhs\nvWGI/FcbR7cWA46Mkw7JGqJcdoyX9r8fHXrkbdIrojvQ1b4YdALZvgG6jzENCD8s\nk1KPQw+nLcC5Bax9aNO8QEn2O7vkQ5OAq19RV7ezaup2ptwe2XLuolkD3TAXr+jz\njDp0Ktc24IuVmArOyz6KZXQSIxKN3vZ8NJfdRD112/HBO/gxuZCdRQgD4c8WX9EV\nCbgrgxy02pKQdvTva/ffNgFBDOY7esRhrLLzH8lIo/556aAx6NIUy8ekAXTaFfKL\n+UenHhsYzuemapaTMhbBjqzAeiczB/fhWRr9NUajQ2x3+NDJ52/V40/fnZvYbkRx\nmvw28wCXslOh2kxQM7GgLfke8rmHN9Kek6SwHJx7RQ5OnCMKPHAo2Vb/VMx01qX4\nWeNIX9df34mD+Zy+iqJ5neXERGARPAIPeb3xYhCemgyRdWEUwvc=\n=/5DR\n-----END PGP SIGNATURE-----\n
|
||||
@@ -45,12 +45,12 @@ def configure(conf):
|
||||
# system has a different version of the ChronoSync library installed.
|
||||
conf.env.prepend_value('STLIBPATH', ['.'])
|
||||
|
||||
conf.define_cond('CHRONOSYNC_HAVE_TESTS', conf.env.WITH_TESTS)
|
||||
conf.define_cond('WITH_TESTS', conf.env.WITH_TESTS)
|
||||
# The config header will contain all defines that were added using conf.define()
|
||||
# or conf.define_cond(). Everything that was added directly to conf.env.DEFINES
|
||||
# will not appear in the config header, but will instead be passed directly to the
|
||||
# compiler on the command line.
|
||||
conf.write_config_header('config.hpp')
|
||||
conf.write_config_header('src/detail/config.hpp', define_prefix='CHRONOSYNC_')
|
||||
|
||||
def build(bld):
|
||||
bld.shlib(target='ChronoSync',
|
||||
@@ -64,17 +64,16 @@ def build(bld):
|
||||
if bld.env.WITH_TESTS:
|
||||
bld.recurse('tests')
|
||||
|
||||
bld.install_files(
|
||||
dest = '%s/ChronoSync' % bld.env.INCLUDEDIR,
|
||||
files = bld.path.ant_glob(['src/*.hpp', 'common.hpp']),
|
||||
cwd = bld.path.find_dir('src'),
|
||||
relative_trick = False)
|
||||
srcdir = bld.path.find_dir('src')
|
||||
bld.install_files('${INCLUDEDIR}/ChronoSync',
|
||||
srcdir.ant_glob('**/*.hpp'),
|
||||
cwd=srcdir,
|
||||
relative_trick=True)
|
||||
|
||||
bld.install_files(
|
||||
dest = '%s/ChronoSync' % bld.env.INCLUDEDIR,
|
||||
files = bld.path.get_bld().ant_glob(['src/*.hpp', 'common.hpp', 'config.hpp']),
|
||||
cwd = bld.path.get_bld().find_dir('src'),
|
||||
relative_trick = False)
|
||||
bld.install_files('${INCLUDEDIR}/ChronoSync',
|
||||
'src/detail/config.hpp',
|
||||
cwd=bld.path.get_bld().find_dir('src'),
|
||||
relative_trick=True)
|
||||
|
||||
bld(features='subst',
|
||||
source='ChronoSync.pc.in',
|
||||
|
||||
Reference in new issue
Block a user