/* -*- 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 "../common.hpp"
#include "transport.hpp"

namespace ndn {

class UnixTransport : public Transport
{
public:
  UnixTransport();

  UnixTransport(const std::string& unixSocket);
  ~UnixTransport();

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

  virtual void
  close();

  virtual void
  send(const Block& wire);

private:
  std::string unixSocket_;

  class Impl;
  ptr_lib::shared_ptr<Impl> impl_;
};

}

#endif
