| Index: build_tools/debug_server/debug_server/common/rsp_packetizer.h
|
| ===================================================================
|
| --- build_tools/debug_server/debug_server/common/rsp_packetizer.h (revision 0)
|
| +++ build_tools/debug_server/debug_server/common/rsp_packetizer.h (revision 0)
|
| @@ -0,0 +1,48 @@
|
| +#ifndef NACL_SDK_BUILD_TOOLS_DEBUG_SERVER_COMMON_RSP_TOKENIZER_H_
|
| +#define NACL_SDK_BUILD_TOOLS_DEBUG_SERVER_COMMON_RSP_TOKENIZER_H_
|
| +
|
| +#include <deque>
|
| +#include <string>
|
| +#include "debug_blob.h"
|
| +#include "rsp_packet_utils.h"
|
| +
|
| +namespace rsp {
|
| +class PacketConsumer {
|
| + public:
|
| + PacketConsumer() {}
|
| + virtual ~PacketConsumer() {}
|
| + virtual void OnPacket(debug::Blob& body, bool valid_checksum) = 0;
|
| + virtual void OnUnexpectedChar(char unexpected_char) = 0;
|
| + virtual void OnBreak() = 0;
|
| +};
|
| +
|
| +class Packetizer {
|
| +public:
|
| + Packetizer();
|
| + virtual ~Packetizer();
|
| +
|
| + virtual void SetPacketConsumer(PacketConsumer* consumer);
|
| + virtual void OnData(const void* data, size_t data_length=-1);
|
| + virtual void OnData(const debug::Blob& data);
|
| + virtual void Reset();
|
| + virtual bool IsIdle() const;
|
| +
|
| +protected:
|
| + enum State {IDLE, BODY, END, CHECKSUM, ESCAPE, RUNLEN};
|
| +
|
| + virtual void OnChar(unsigned char c);
|
| + bool HexCharToint(unsigned char c, unsigned int* result);
|
| + virtual void AddToChecksum(unsigned char c);
|
| + virtual void AddCharToBody(unsigned char c);
|
| + virtual void AddRepeatedChars(size_t n);
|
| +
|
| + State state_;
|
| + PacketConsumer* consumer_;
|
| + debug::Blob body_;
|
| + unsigned int calculated_checksum_;
|
| + unsigned int recv_checksum_;
|
| +};
|
| +
|
| +} // namespace rsp
|
| +
|
| +#endif // NACL_SDK_BUILD_TOOLS_DEBUG_SERVER_COMMON_RSP_TOKENIZER_H_
|
|
|