From ab7e0b08fa8c31cf1d468ab4b3c660e2b1836811 Mon Sep 17 00:00:00 2001 From: Fishbone Date: Sun, 2 Jun 2013 16:19:21 +0000 Subject: Added WhatsApp-protocol git-svn-id: http://svn.miranda-ng.org/main/trunk@4861 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- .../WhatsApp/src/WhatsAPI++/BinTreeNodeReader.h | 76 ++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeReader.h (limited to 'protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeReader.h') diff --git a/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeReader.h b/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeReader.h new file mode 100644 index 0000000000..61b70b218b --- /dev/null +++ b/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeReader.h @@ -0,0 +1,76 @@ +/* + * BinTreeNodeReader.h + * + * Created on: 26/06/2012 + * Author: Antonio + */ +#ifndef BINTREENODEREADER_H_ +#define BINTREENODEREADER_H_ + +#include "ProtocolTreeNode.h" +#include "ISocketConnection.h" +#include "ByteArray.h" +#include "WAConnection.h" +#include +#include +#include + +#define BUFFER_SIZE 512 + +class WAConnection; + +enum ReadType {STRING, ARRAY}; + +class ReadData { +public: + ReadData() {}; + virtual ~ReadData() {}; + + ReadType type; + void * data; +}; + +class BinTreeNodeReader { +private: + const char** tokenMap; + int tokenmapsize; + ISocketConnection *rawIn; + ByteArrayInputStream* in; + std::vector* buf; + int readSize; + WAConnection* conn; + + ProtocolTreeNode* nextTreeInternal(); + bool isListTag(int b); + void decodeStream(int flags, int offset, int length); + std::map* readAttributes(int attribCount); + std::vector* readList(int token); + int readListSize(int token); + std::vector* readList(); + ReadData* readString(); + ReadData* readString(int token); + static void fillArray(std::vector& buff, int len, ByteArrayInputStream* in); + static void fillArray(std::vector& buff, int len, ISocketConnection* in); + std::string* objectAsString(ReadData* o); + std::string* readStringAsString(); + std::string* readStringAsString(int token); + std::string getToken(int token); + void getTopLevelStream(); + static int readInt8(ByteArrayInputStream* in); + static int readInt8(ISocketConnection* in); + static int readInt16(ByteArrayInputStream* in); + static int readInt16(ISocketConnection* in); + static int readInt24(ByteArrayInputStream* in); + static int readInt24(ISocketConnection* in); + + +public: + BinTreeNodeReader(WAConnection* conn, ISocketConnection* connection, const char** dictionary, const int dictionarysize); + virtual ~BinTreeNodeReader(); + ProtocolTreeNode* nextTree(); + void streamStart(); + +}; + +#endif /* BINTREENODEREADER_H_ */ + -- cgit v1.2.3