/* -*- 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>
 * See COPYING for copyright and distribution information.
 */

#ifndef NDN_UDPTRANSPORT_HPP
#define NDN_UDPTRANSPORT_HPP

#include <string>
#include "transport.hpp"

namespace ndn {
  
class UnixTransport : public Transport
{
public:
  UnixTransport(const std::string &unixSocket = "/tmp/.ndnd.sock");
  ~UnixTransport();

  // from Transport
  virtual void 
  connect(boost::asio::io_service &ioService,
          const ReceiveCallback &receiveCallback,
          const ErrorCallback &errorCallback);
  
  virtual void 
  close();

  virtual void 
  send(const Block &wire);
  
private:
  std::string unixSocket_;

  class Impl;
  std::auto_ptr<Impl> impl_;
};

}

#endif
