First steps in CCNx packet coding. ccnx_encode* routines rewritten in NS3 style (using NS3::Buffer)

diff --git a/in-progress/ccnx-cs.h b/in-progress/ccnx-cs.h
new file mode 100644
index 0000000..096b0c0
--- /dev/null
+++ b/in-progress/ccnx-cs.h
@@ -0,0 +1,65 @@
+/* 
+ * File:   ndn_cs.h
+ * Author: cawka
+ *
+ * Created on December 15, 2010, 2:17 PM
+ */
+
+#ifndef NDN_CS_H
+#define	NDN_CS_H
+
+#include "ndn_common.h"
+#include "hash_helper.h"
+#include <qualnet_mutex.h>
+#include <list>
+#include <string>
+
+using namespace std;
+
+class CsEntry;
+typedef list<CsEntry*>::iterator CsLruIterator;
+
+//structure for CS entry
+struct CsEntry
+{
+    string contentName;
+    int contentSize;
+
+	CsLruIterator lruPosition;
+};
+
+typedef string_key_hash_t<CsEntry>::point_iterator CsIterator;
+typedef string_key_hash_t<CsEntry>::iterator CsRangeIterator;
+
+// class implementing NDN content store
+class NdnCs
+{
+public:
+	NdnCs( int max_size=NDN_CONTENT_STORE_SIZE );
+	virtual ~NdnCs( );
+
+	// Find corresponding CS entry for the given content name
+	CsIterator lookup( const string &prefix );
+	bool isValid( const CsIterator &it ) { return it!=_cs.end(); }
+	
+	// Add new content to the content store. Old content will be replaced
+	void add( const string &contentName, int contentSize );
+
+	// Dump content store entries
+	void dump( );
+
+protected:
+	//move the given CS entry to the head of the list
+	void promote( CsEntry &entry );
+
+private:
+	int							_maxSize; // maximum number of entries in cache
+
+	string_key_hash_t<CsEntry>	_cs;	// actual content store
+
+	list<CsEntry*>				_lru;	// LRU index of the content store
+	QNThreadMutex				_csMutex; // just to make sure we are not
+										  // getting problems with multiple threads
+};
+
+#endif	/* NDN_CS_H */