util: Avoid template implementation of DummyClientFace::receive

The method now can accept the derived classes (e.g.,
IdentityCertificate) without requiring them to be statically casted.

Change-Id: I9f6fc6c3bbec0abc8db3b2229ef07c5ca0c1d8ff
diff --git a/src/util/dummy-client-face.hpp b/src/util/dummy-client-face.hpp
index 41d843e..630913c 100644
--- a/src/util/dummy-client-face.hpp
+++ b/src/util/dummy-client-face.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2016 Regents of the University of California.
+ * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -92,12 +92,20 @@
   DummyClientFace(boost::asio::io_service& ioService, KeyChain& keyChain,
                   const Options& options = Options());
 
-  /** \brief cause the Face to receive a packet
-   *  \tparam Packet either Interest or Data
+  /** \brief cause the Face to receive an interest
    */
-  template<typename Packet>
   void
-  receive(const Packet& packet);
+  receive(const Interest& interest);
+
+  /** \brief cause the Face to receive a data
+   */
+  void
+  receive(const Data& data);
+
+  /** \brief cause the Face to receive a nack
+   */
+  void
+  receive(const lp::Nack& nack);
 
 private:
   class Transport;
@@ -163,10 +171,6 @@
   std::function<void(time::milliseconds)> m_processEventsOverride;
 };
 
-template<>
-void
-DummyClientFace::receive(const lp::Nack& nack);
-
 } // namespace util
 } // namespace ndn