ndn::DummyClientFace Class Reference

A client-side face for unit testing. More...

#include <ndn-cxx/util/dummy-client-face.hpp>

+ Inheritance diagram for ndn::DummyClientFace:
+ Collaboration diagram for ndn::DummyClientFace:

Classes

class  AlreadyLinkedError
 

Public Types

using Options = DummyClientFaceOptions
 

Public Member Functions

 DummyClientFace (boost::asio::io_context &ioCtx, const Options &options={})
 Create a dummy face with the provided I/O context. More...
 
 DummyClientFace (boost::asio::io_context &ioCtx, KeyChain &keyChain, const Options &options={})
 Create a dummy face with the specified I/O context and KeyChain. More...
 
 DummyClientFace (const Options &options={})
 Create a dummy face with an internal I/O context. More...
 
 DummyClientFace (KeyChain &keyChain, const Options &options={})
 Create a dummy face with an internal I/O context and the specified KeyChain. More...
 
 ~DummyClientFace () override
 
PendingInterestHandle expressInterest (const Interest &interest, const DataCallback &afterSatisfied, const NackCallback &afterNacked, const TimeoutCallback &afterTimeout)
 Express an Interest. More...
 
boost::asio::io_context & getIoContext () const noexcept
 Returns a reference to the io_context used by this face. More...
 
boost::asio::io_context & getIoService () const noexcept
 
size_t getNPendingInterests () const
 Get number of pending Interests. More...
 
void linkTo (DummyClientFace &other)
 Link another DummyClientFace through a broadcast medium. More...
 
void processEvents (time::milliseconds timeout=0_ms, bool keepRunning=false)
 Run the event loop to process any pending work and execute completion handlers. More...
 
void put (const Data &data)
 Publish a Data packet. More...
 
void put (const lp::Nack &nack)
 Send a Network Nack. More...
 
void receive (const Data &data)
 Cause the face to receive a Data packet. More...
 
void receive (const Interest &interest)
 Cause the face to receive an Interest packet. More...
 
void receive (const lp::Nack &nack)
 Cause the face to receive a Nack packet. More...
 
RegisteredPrefixHandle registerPrefix (const Name &prefix, const RegisterPrefixSuccessCallback &onSuccess, const RegisterPrefixFailureCallback &onFailure, const security::SigningInfo &signingInfo=security::SigningInfo(), uint64_t flags=nfd::ROUTE_FLAG_CHILD_INHERIT)
 Register prefix with the connected NDN forwarder. More...
 
void removeAllPendingInterests ()
 Cancel all previously expressed Interests. More...
 
InterestFilterHandle setInterestFilter (const InterestFilter &filter, const InterestCallback &onInterest)
 Set an InterestFilter to dispatch matching incoming Interests to onInterest callback. More...
 
RegisteredPrefixHandle setInterestFilter (const InterestFilter &filter, const InterestCallback &onInterest, const RegisterPrefixFailureCallback &onFailure, const security::SigningInfo &signingInfo=security::SigningInfo(), uint64_t flags=nfd::ROUTE_FLAG_CHILD_INHERIT)
 Set InterestFilter to dispatch incoming matching interest to onInterest callback and register the filtered prefix with the connected NDN forwarder. More...
 
RegisteredPrefixHandle setInterestFilter (const InterestFilter &filter, const InterestCallback &onInterest, const RegisterPrefixSuccessCallback &onSuccess, const RegisterPrefixFailureCallback &onFailure, const security::SigningInfo &signingInfo=security::SigningInfo(), uint64_t flags=nfd::ROUTE_FLAG_CHILD_INHERIT)
 Set InterestFilter to dispatch incoming matching interest to onInterest callback and register the filtered prefix with the connected NDN forwarder. More...
 
void shutdown ()
 Shutdown face operations. More...
 
void unlink ()
 Unlink the broadcast medium if previously linked. More...
 

Public Attributes

signal::Signal< DummyClientFace, DataonSendData
 Emitted whenever a Data packet is sent. More...
 
signal::Signal< DummyClientFace, InterestonSendInterest
 Emitted whenever an Interest is sent. More...
 
signal::Signal< DummyClientFace, lp::NackonSendNack
 Emitted whenever a Nack is sent. More...
 
std::vector< DatasentData
 Data sent out of this DummyClientFace. More...
 
std::vector< InterestsentInterests
 Interests sent out of this DummyClientFace. More...
 
std::vector< lp::NacksentNacks
 Nacks sent out of this DummyClientFace. More...
 

Protected Member Functions

TransportgetTransport () const
 Returns the underlying transport. More...
 

Detailed Description

A client-side face for unit testing.

Definition at line 62 of file dummy-client-face.hpp.

Member Typedef Documentation

◆ Options

Constructor & Destructor Documentation

◆ DummyClientFace() [1/4]

ndn::DummyClientFace::DummyClientFace ( const Options options = {})
explicit

Create a dummy face with an internal I/O context.

Definition at line 87 of file dummy-client-face.cpp.

◆ DummyClientFace() [2/4]

ndn::DummyClientFace::DummyClientFace ( KeyChain keyChain,
const Options options = {} 
)
explicit

Create a dummy face with an internal I/O context and the specified KeyChain.

Definition at line 95 of file dummy-client-face.cpp.

◆ DummyClientFace() [3/4]

ndn::DummyClientFace::DummyClientFace ( boost::asio::io_context &  ioCtx,
const Options options = {} 
)
explicit

Create a dummy face with the provided I/O context.

Definition at line 102 of file dummy-client-face.cpp.

◆ DummyClientFace() [4/4]

ndn::DummyClientFace::DummyClientFace ( boost::asio::io_context &  ioCtx,
KeyChain keyChain,
const Options options = {} 
)

Create a dummy face with the specified I/O context and KeyChain.

Definition at line 110 of file dummy-client-face.cpp.

◆ ~DummyClientFace()

ndn::DummyClientFace::~DummyClientFace ( )
override

Definition at line 117 of file dummy-client-face.cpp.

Member Function Documentation

◆ expressInterest()

PendingInterestHandle ndn::Face::expressInterest ( const Interest interest,
const DataCallback afterSatisfied,
const NackCallback afterNacked,
const TimeoutCallback afterTimeout 
)
inherited

Express an Interest.

Parameters
interestthe Interest; a copy will be made, so that the caller is not required to maintain the argument unchanged
afterSatisfiedfunction to be invoked if Data is returned
afterNackedfunction to be invoked if Network NACK is returned
afterTimeoutfunction to be invoked if neither Data nor Network NACK is returned within InterestLifetime
Returns
A handle for canceling the pending Interest.
Exceptions
OversizedPacketErrorEncoded Interest size exceeds MAX_NDN_PACKET_SIZE.

Definition at line 151 of file face.cpp.

◆ getIoContext()

boost::asio::io_context& ndn::Face::getIoContext ( ) const
inlinenoexceptinherited

Returns a reference to the io_context used by this face.

Definition at line 422 of file face.hpp.

◆ getIoService()

boost::asio::io_context& ndn::Face::getIoService ( ) const
inlinenoexceptinherited
Deprecated:
Use getIoContext()

Definition at line 432 of file face.hpp.

◆ getNPendingInterests()

size_t ndn::Face::getNPendingInterests ( ) const
inherited

Get number of pending Interests.

Definition at line 180 of file face.cpp.

◆ getTransport()

Transport& ndn::Face::getTransport ( ) const
inlineprotectedinherited

Returns the underlying transport.

Definition at line 442 of file face.hpp.

◆ linkTo()

void ndn::DummyClientFace::linkTo ( DummyClientFace other)

Link another DummyClientFace through a broadcast medium.

Definition at line 280 of file dummy-client-face.cpp.

◆ processEvents()

void ndn::Face::processEvents ( time::milliseconds  timeout = 0_ms,
bool  keepRunning = false 
)
inlineinherited

Run the event loop to process any pending work and execute completion handlers.

This call will block forever (with the default timeout of 0) to process I/O on the face. To exit cleanly on a producer, clear any Interest filters and wait for processEvents() to return. To exit after an error, one can call shutdown(). In consumer applications, processEvents() will return when all expressed Interests have been satisfied, Nacked, or timed out. To terminate earlier, a consumer application should cancel all previously expressed and still-pending Interests.

If timeout is a positive value, then processEvents() will return after the specified duration has elapsed, unless the event loop is stopped earlier with shutdown() or runs out of work to do.

If a negative timeout is specified, then processEvents() will not block and will process only handlers that are ready to run.

processEvents() can be called repeatedly, if desired.

Parameters
timeoutMaximum amount of time to block the event loop (see above).
keepRunningKeep thread in a blocked state (in event processing), even when there are no outstanding events (e.g., no Interest/Data is expected). Ignored if timeout is negative. If timeout is 0 and keepRunning is true, the only way to stop processEvents() is to call shutdown().
Note
This may throw an exception for reading data or in the callback for processing the data. If you call this from an main event loop, you may want to catch and log/disregard all exceptions.
Exceptions
OversizedPacketErrorEncoded packet size exceeds MAX_NDN_PACKET_SIZE.

Definition at line 397 of file face.hpp.

◆ put() [1/2]

void ndn::Face::put ( const Data data)
inherited

Publish a Data packet.

Parameters
dataThe Data packet; a copy will be made, so that the caller is not required to maintain the argument unchanged.

This method can be called to satisfy incoming Interests, or to add Data packet into the cache of the local NDN forwarder if forwarder is configured to accept unsolicited Data.

Exceptions
OversizedPacketErrorEncoded Data size exceeds MAX_NDN_PACKET_SIZE.

Definition at line 186 of file face.cpp.

◆ put() [2/2]

void ndn::Face::put ( const lp::Nack nack)
inherited

Send a Network Nack.

Parameters
nackThe Nack packet; a copy will be made, so that the caller is not required to maintain the argument unchanged.
Exceptions
OversizedPacketErrorEncoded Nack size exceeds MAX_NDN_PACKET_SIZE.

Definition at line 196 of file face.cpp.

◆ receive() [1/3]

void ndn::DummyClientFace::receive ( const Data data)

Cause the face to receive a Data packet.

Definition at line 255 of file dummy-client-face.cpp.

◆ receive() [2/3]

void ndn::DummyClientFace::receive ( const Interest interest)

Cause the face to receive an Interest packet.

Definition at line 243 of file dummy-client-face.cpp.

◆ receive() [3/3]

void ndn::DummyClientFace::receive ( const lp::Nack nack)

Cause the face to receive a Nack packet.

Definition at line 266 of file dummy-client-face.cpp.

◆ registerPrefix()

RegisteredPrefixHandle ndn::Face::registerPrefix ( const Name prefix,
const RegisterPrefixSuccessCallback onSuccess,
const RegisterPrefixFailureCallback onFailure,
const security::SigningInfo signingInfo = security::SigningInfo(),
uint64_t  flags = nfd::ROUTE_FLAG_CHILD_INHERIT 
)
inherited

Register prefix with the connected NDN forwarder.

This method only modifies forwarder's RIB and does not associate any onInterest callbacks. Use setInterestFilter method to dispatch incoming Interests to the right callbacks.

Parameters
prefixA prefix to register with the connected NDN forwarder
onSuccessA callback to be called when prefixRegister command succeeds
onFailureA callback to be called when prefixRegister command fails
signingInfoSigning parameters. When omitted, a default parameters used in the signature will be used.
flagsPrefix registration flags
Returns
A handle for unregistering the prefix.
See also
nfd::RouteFlags

Definition at line 242 of file face.cpp.

◆ removeAllPendingInterests()

void ndn::Face::removeAllPendingInterests ( )
inherited

Cancel all previously expressed Interests.

Definition at line 170 of file face.cpp.

◆ setInterestFilter() [1/3]

InterestFilterHandle ndn::Face::setInterestFilter ( const InterestFilter filter,
const InterestCallback onInterest 
)
inherited

Set an InterestFilter to dispatch matching incoming Interests to onInterest callback.

Parameters
filterInterest filter
onInterestA callback to be called when a matching interest is received

This method modifies library's FIB only, and does not register the prefix with the forwarder. It will always succeed. To register a prefix with the forwarder, use registerPrefix() or one of the other two setInterestFilter() overloads.

Returns
A handle for unsetting the Interest filter.

Definition at line 228 of file face.cpp.

◆ setInterestFilter() [2/3]

RegisteredPrefixHandle ndn::Face::setInterestFilter ( const InterestFilter filter,
const InterestCallback onInterest,
const RegisterPrefixFailureCallback onFailure,
const security::SigningInfo signingInfo = security::SigningInfo(),
uint64_t  flags = nfd::ROUTE_FLAG_CHILD_INHERIT 
)
inherited

Set InterestFilter to dispatch incoming matching interest to onInterest callback and register the filtered prefix with the connected NDN forwarder.

This version of setInterestFilter combines setInterestFilter and registerPrefix operations and is intended to be used when only one filter for the same prefix needed to be set. When multiple names sharing the same prefix should be dispatched to different callbacks, use one registerPrefix call, followed (in onSuccess callback) by a series of setInterestFilter calls.

Parameters
filterInterest filter (prefix part will be registered with the forwarder)
onInterestA callback to be called when a matching interest is received
onFailureA callback to be called when prefixRegister command fails
signingInfoSigning parameters. When omitted, a default parameters used in the signature will be used.
flagsPrefix registration flags
Returns
A handle for unregistering the prefix and unsetting the Interest filter.

Definition at line 206 of file face.cpp.

◆ setInterestFilter() [3/3]

RegisteredPrefixHandle ndn::Face::setInterestFilter ( const InterestFilter filter,
const InterestCallback onInterest,
const RegisterPrefixSuccessCallback onSuccess,
const RegisterPrefixFailureCallback onFailure,
const security::SigningInfo signingInfo = security::SigningInfo(),
uint64_t  flags = nfd::ROUTE_FLAG_CHILD_INHERIT 
)
inherited

Set InterestFilter to dispatch incoming matching interest to onInterest callback and register the filtered prefix with the connected NDN forwarder.

This version of setInterestFilter combines setInterestFilter and registerPrefix operations and is intended to be used when only one filter for the same prefix needed to be set. When multiple names sharing the same prefix should be dispatched to different callbacks, use one registerPrefix call, followed (in onSuccess callback) by a series of setInterestFilter calls.

Parameters
filterInterest filter (prefix part will be registered with the forwarder)
onInterestA callback to be called when a matching interest is received
onSuccessA callback to be called when prefixRegister command succeeds
onFailureA callback to be called when prefixRegister command fails
signingInfoSigning parameters. When omitted, a default parameters used in the signature will be used.
flagsPrefix registration flags
Returns
A handle for unregistering the prefix and unsetting the Interest filter.

Definition at line 214 of file face.cpp.

◆ shutdown()

void ndn::Face::shutdown ( )
inherited

Shutdown face operations.

This method cancels all pending operations and closes the connection to the NDN forwarder.

Note that this method does not stop the io_context if it is shared between multiple Faces or with other I/O objects (e.g., Scheduler).

Warning
Calling this method may cause outgoing packets to be lost. Producers that shut down immediately after sending a Data packet should instead clear all Interest filters to shut down cleanly.
See also
processEvents()

Definition at line 288 of file face.cpp.

◆ unlink()

void ndn::DummyClientFace::unlink ( )

Unlink the broadcast medium if previously linked.

Definition at line 304 of file dummy-client-face.cpp.

Member Data Documentation

◆ onSendData

signal::Signal<DummyClientFace, Data> ndn::DummyClientFace::onSendData

Emitted whenever a Data packet is sent.

Note
After put(), processEvents() must be called before this signal is emitted.

Definition at line 185 of file dummy-client-face.hpp.

◆ onSendInterest

signal::Signal<DummyClientFace, Interest> ndn::DummyClientFace::onSendInterest

Emitted whenever an Interest is sent.

Note
After expressInterest(), processEvents() must be called before this signal is emitted.

Definition at line 179 of file dummy-client-face.hpp.

◆ onSendNack

signal::Signal<DummyClientFace, lp::Nack> ndn::DummyClientFace::onSendNack

Emitted whenever a Nack is sent.

Note
After put(), processEvents() must be called before this signal is emitted.

Definition at line 191 of file dummy-client-face.hpp.

◆ sentData

std::vector<Data> ndn::DummyClientFace::sentData

Data sent out of this DummyClientFace.

Sent Data are appended to this container if Options::enablePacketLogging is true. The user of this class is responsible for cleaning up the container, if necessary.

Note
After put(), processEvents() must be called before the Data shows up here.

Definition at line 163 of file dummy-client-face.hpp.

◆ sentInterests

std::vector<Interest> ndn::DummyClientFace::sentInterests

Interests sent out of this DummyClientFace.

Sent Interests are appended to this container if Options::enablePacketLogging is true. The user of this class is responsible for cleaning up the container, if necessary.

Note
After expressInterest(), processEvents() must be called before the Interest shows up here.

Definition at line 153 of file dummy-client-face.hpp.

◆ sentNacks

std::vector<lp::Nack> ndn::DummyClientFace::sentNacks

Nacks sent out of this DummyClientFace.

Sent Nacks are appended to this container if Options::enablePacketLogging is true. The user of this class is responsible for cleaning up the container, if necessary.

Note
After put(), processEvents() must be called before the Nack shows up here.

Definition at line 173 of file dummy-client-face.hpp.