forked from cawka/ndn.cxx
diff --git a/disabled/wrapper.h b/disabled/wrapper.h
new file mode 100644
index 0000000..517a832
--- /dev/null
+++ b/disabled/wrapper.h
@@ -0,0 +1,161 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2013, Regents of the University of California
+ * Alexander Afanasyev
+ * Zhenkai Zhu
+ *
+ * BSD license, See the LICENSE file for more information
+ *
+ * Author: Zhenkai Zhu <zhenkai@cs.ucla.edu>
+ * Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef NDN_WRAPPER_H
+#define NDN_WRAPPER_H
+
+#include <boost/thread/locks.hpp>
+#include <boost/thread/recursive_mutex.hpp>
+#include <boost/thread/thread.hpp>
+
+#include "ndn.cxx/common.h"
+#include "ndn.cxx/fields/name.h"
+#include "ndn.cxx/interest.h"
+#include "ndn.cxx/closure.h"
+#include "ndn.cxx/pco.h"
+
+class Executor;
+typedef boost::shared_ptr<Executor> ExecutorPtr;
+
+namespace ndn {
+
+class Verifier;
+class Wrapper
+{
+public:
+ const static int MAX_FRESHNESS = 2147; // max value for ccnx
+ const static int DEFAULT_FRESHNESS = 60;
+ typedef boost::function<void (InterestPtr)> InterestCallback;
+
+ Wrapper();
+ ~Wrapper();
+
+ void
+ start (); // called automatically in constructor
+
+ /**
+ * @brief Because of uncertainty with executor, in some case it is necessary to call shutdown explicitly (see test-server-and-fetch.cc)
+ */
+ void
+ shutdown (); // called in destructor, but can called manually
+
+ int
+ setInterestFilter (const Name &prefix, const InterestCallback &interestCallback, bool record = true);
+
+ void
+ clearInterestFilter (const Name &prefix, bool record = true);
+
+ int
+ sendInterest (const Interest &interest, const Closure &closure);
+
+ int
+ publishData (const Name &name, const unsigned char *buf, size_t len, int freshness = DEFAULT_FRESHNESS, const Name &keyName=Name());
+
+ inline int
+ publishData (const Name &name, const Bytes &content, int freshness = DEFAULT_FRESHNESS, const Name &keyName=Name());
+
+ inline int
+ publishData (const Name &name, const std::string &content, int freshness = DEFAULT_FRESHNESS, const Name &keyName=Name());
+
+ int
+ publishUnsignedData(const Name &name, const unsigned char *buf, size_t len, int freshness = DEFAULT_FRESHNESS);
+
+ inline int
+ publishUnsignedData(const Name &name, const Bytes &content, int freshness = DEFAULT_FRESHNESS);
+
+ inline int
+ publishUnsignedData(const Name &name, const std::string &content, int freshness = DEFAULT_FRESHNESS);
+
+ static Name
+ getLocalPrefix ();
+
+ Bytes
+ createContentObject(const Name &name, const void *buf, size_t len, int freshness = DEFAULT_FRESHNESS, const Name &keyNameParam=Name());
+
+ int
+ putToCcnd (const Bytes &contentObject);
+
+ bool
+ verify(PcoPtr &pco, double maxWait = 1 /*seconds*/);
+
+ PcoPtr
+ get (const Interest &interest, double maxWait = 4.0/*seconds*/);
+
+private:
+ Wrapper(const Wrapper &other) {}
+
+protected:
+ void
+ connectCcnd();
+
+ /// @cond include_hidden
+ void
+ ccnLoop ();
+
+ /// @endcond
+
+protected:
+ typedef boost::shared_mutex Lock;
+ typedef boost::unique_lock<Lock> WriteLock;
+ typedef boost::shared_lock<Lock> ReadLock;
+
+ typedef boost::recursive_mutex RecLock;
+ typedef boost::unique_lock<RecLock> UniqueRecLock;
+
+ ccn* m_handle;
+ RecLock m_mutex;
+ boost::thread m_thread;
+ bool m_running;
+ bool m_connected;
+ std::map<Name, InterestCallback> m_registeredInterests;
+ ExecutorPtr m_executor;
+ Verifier *m_verifier;
+};
+
+typedef boost::shared_ptr<Wrapper> WrapperPtr;
+
+/**
+ * @brief Namespace holding all exceptions that can be fired by the library
+ */
+namespace Error
+{
+struct ndnOperation : boost::exception, std::exception { };
+}
+
+inline int
+Wrapper::publishData (const Name &name, const Bytes &content, int freshness, const Name &keyName)
+{
+ return publishData(name, head(content), content.size(), freshness, keyName);
+}
+
+inline int
+Wrapper::publishData (const Name &name, const std::string &content, int freshness, const Name &keyName)
+{
+ return publishData(name, reinterpret_cast<const unsigned char *> (content.c_str ()), content.size (), freshness, keyName);
+}
+
+inline int
+Wrapper::publishUnsignedData(const Name &name, const Bytes &content, int freshness)
+{
+ return publishUnsignedData(name, head(content), content.size(), freshness);
+}
+
+inline int
+Wrapper::publishUnsignedData(const Name &name, const std::string &content, int freshness)
+{
+ return publishUnsignedData(name, reinterpret_cast<const unsigned char *> (content.c_str ()), content.size (), freshness);
+}
+
+
+} // ndn
+
+#endif