management: Making LocalControlHeader encoding independent of Interest/Data wire

Boost.Asio support multi-buffer send operation, which is enabled in this
commit for prepending (potentially different) LocalControlHeader's to
Interest/Data wire.

Change-Id: I39b979f89f196d3e47d6466fb71f6d440bce74d4
refs: #1265
diff --git a/src/transport/unix-transport.hpp b/src/transport/unix-transport.hpp
index dc85eac..4a89bc8 100644
--- a/src/transport/unix-transport.hpp
+++ b/src/transport/unix-transport.hpp
@@ -1,7 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
- * Copyright (C) 2013 Regents of the University of California.
- * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * Copyright (C) 2013-2014 Regents of the University of California.
  * See COPYING for copyright and distribution information.
  */
 
@@ -11,8 +10,15 @@
 #include "../common.hpp"
 #include "transport.hpp"
 
+// forward declaration
+namespace boost { namespace asio { namespace local { class stream_protocol; } } }
+
 namespace ndn {
 
+// forward declaration
+template<class T, class U>
+class StreamTransportImpl;
+
 class UnixTransport : public Transport
 {
 public:
@@ -32,11 +38,15 @@
   virtual void
   send(const Block& wire);
 
+  virtual void
+  send(const Block& header, const Block& payload);
+  
 private:
-  std::string unixSocket_;
+  std::string m_unixSocket;
 
-  class Impl;
-  ptr_lib::shared_ptr<Impl> impl_;
+  typedef StreamTransportImpl<UnixTransport, boost::asio::local::stream_protocol> Impl;
+  friend class StreamTransportImpl<UnixTransport, boost::asio::local::stream_protocol>;
+  ptr_lib::shared_ptr< Impl > m_impl;
 };
 
 }