face+util: Add protected Face::getTransport method and simplify DummyClientFace implementation

Change-Id: I42e7e5705f27b6823ed18107b374c9841d2a7500
Refs: #3146
diff --git a/src/util/dummy-client-face.cpp b/src/util/dummy-client-face.cpp
index aadb6bc..1db5b8d 100644
--- a/src/util/dummy-client-face.cpp
+++ b/src/util/dummy-client-face.cpp
@@ -82,17 +82,21 @@
   Signal<Transport, Block> onSendBlock;
 };
 
-DummyClientFace::DummyClientFace(const Options& options, shared_ptr<Transport> transport)
-  : Face(transport)
-  , m_transport(transport)
+DummyClientFace::DummyClientFace(const Options& options/* = DummyClientFace::DEFAULT_OPTIONS*/)
+  : Face(make_shared<DummyClientFace::Transport>())
+#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
+  , sentDatas(sentData)
+#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
 {
   this->construct(options);
 }
 
-DummyClientFace::DummyClientFace(const Options& options, shared_ptr<Transport> transport,
-                                 boost::asio::io_service& ioService)
-  : Face(transport, ioService)
-  , m_transport(transport)
+DummyClientFace::DummyClientFace(boost::asio::io_service& ioService,
+                                 const Options& options/* = DummyClientFace::DEFAULT_OPTIONS*/)
+  : Face(make_shared<DummyClientFace::Transport>(), ioService)
+#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
+  , sentDatas(sentData)
+#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
 {
   this->construct(options);
 }
@@ -100,7 +104,7 @@
 void
 DummyClientFace::construct(const Options& options)
 {
-  m_transport->onSendBlock.connect([this] (const Block& blockFromDaemon) {
+  static_pointer_cast<Transport>(getTransport())->onSendBlock.connect([this] (const Block& blockFromDaemon) {
     Block packet(blockFromDaemon);
     packet.encode();
     lp::Packet lpPacket(packet);
@@ -151,7 +155,7 @@
     this->sentInterests.push_back(interest);
   });
   onSendData.connect([this] (const Data& data) {
-    this->sentDatas.push_back(data);
+    this->sentData.push_back(data);
   });
   onSendNack.connect([this] (const lp::Nack& nack) {
     this->sentNacks.push_back(nack);
@@ -204,7 +208,7 @@
   if (nextHopFaceIdTag != nullptr) {
     lpPacket.add<lp::NextHopFaceIdField>(*nextHopFaceIdTag);
   }
-  m_transport->receive(lpPacket.wireEncode());
+  static_pointer_cast<Transport>(getTransport())->receive(lpPacket.wireEncode());
 }
 
 template void
@@ -227,15 +231,16 @@
     lpPacket.add<lp::IncomingFaceIdField>(*incomingFaceIdTag);
   }
 
-  m_transport->receive(lpPacket.wireEncode());
+  static_pointer_cast<Transport>(getTransport())->receive(lpPacket.wireEncode());
 }
 
+#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
+
 shared_ptr<DummyClientFace>
 makeDummyClientFace(const DummyClientFace::Options& options)
 {
   // cannot use make_shared<DummyClientFace> because DummyClientFace constructor is private
-  return shared_ptr<DummyClientFace>(
-         new DummyClientFace(options, make_shared<DummyClientFace::Transport>()));
+  return shared_ptr<DummyClientFace>(new DummyClientFace(options));
 }
 
 shared_ptr<DummyClientFace>
@@ -243,10 +248,10 @@
                     const DummyClientFace::Options& options)
 {
   // cannot use make_shared<DummyClientFace> because DummyClientFace constructor is private
-  return shared_ptr<DummyClientFace>(
-         new DummyClientFace(options, make_shared<DummyClientFace::Transport>(),
-                             ref(ioService)));
+  return shared_ptr<DummyClientFace>(new DummyClientFace(ref(ioService), options));
 }
 
+#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
+
 } // namespace util
 } // namespace ndn