blob: 64019d1521f93e62f7b534d6434d96e0e4f91c29 [file] [log] [blame]
#ifndef QPID_AMQP_READER_H
#define QPID_AMQP_READER_H
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
#include "qpid/sys/IntegerTypes.h"
#include <stddef.h>
namespace qpid {
namespace amqp {
struct CharSequence;
struct Constructor;
struct Descriptor;
/**
* Allows an event-driven, callback-based approach to processing an
* AMQP encoded data stream. By sublassing and implementing the
* methods of interest, readers can be constructed for different
* contexts.
*/
class Reader
{
public:
virtual ~Reader() {}
virtual void onNull(const Descriptor*) {}
virtual void onBoolean(bool, const Descriptor*) {}
virtual void onUByte(uint8_t, const Descriptor*) {}
virtual void onUShort(uint16_t, const Descriptor*) {}
virtual void onUInt(uint32_t, const Descriptor*) {}
virtual void onULong(uint64_t, const Descriptor*) {}
virtual void onByte(int8_t, const Descriptor*) {}
virtual void onShort(int16_t, const Descriptor*) {}
virtual void onInt(int32_t, const Descriptor*) {}
virtual void onLong(int64_t, const Descriptor*) {}
virtual void onFloat(float, const Descriptor*) {}
virtual void onDouble(double, const Descriptor*) {}
virtual void onUuid(const CharSequence&, const Descriptor*) {}
virtual void onTimestamp(int64_t, const Descriptor*) {}
virtual void onBinary(const CharSequence&, const Descriptor*) {}
virtual void onString(const CharSequence&, const Descriptor*) {}
virtual void onSymbol(const CharSequence&, const Descriptor*) {}
/**
* @return true to get elements of the compound value, false
* to skip over it
*/
virtual bool onStartList(uint32_t /*count*/, const CharSequence&, const Descriptor*) { return true; }
virtual bool onStartMap(uint32_t /*count*/, const CharSequence&, const Descriptor*) { return true; }
virtual bool onStartArray(uint32_t /*count*/, const CharSequence&, const Constructor&, const Descriptor*) { return true; }
virtual void onEndList(uint32_t /*count*/, const Descriptor*) {}
virtual void onEndMap(uint32_t /*count*/, const Descriptor*) {}
virtual void onEndArray(uint32_t /*count*/, const Descriptor*) {}
virtual void onDescriptor(const Descriptor&, const char*) {}
virtual bool proceed() { return true; }
private:
};
}} // namespace qpid::amqp
#endif /*!QPID_AMQP_READER_H*/