aboutsummaryrefslogtreecommitdiffstats
path: root/documentapi/src/vespa/documentapi/messagebus/routablefactories52.h
diff options
context:
space:
mode:
Diffstat (limited to 'documentapi/src/vespa/documentapi/messagebus/routablefactories52.h')
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories52.h421
1 files changed, 0 insertions, 421 deletions
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories52.h b/documentapi/src/vespa/documentapi/messagebus/routablefactories52.h
deleted file mode 100644
index 9c614bde487..00000000000
--- a/documentapi/src/vespa/documentapi/messagebus/routablefactories52.h
+++ /dev/null
@@ -1,421 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-// @author Vegard Sjonfjell
-#pragma once
-
-#include <vespa/document/util/bytebuffer.h>
-#include <vespa/vespalib/util/growablebytebuffer.h>
-#include "iroutablefactory.h"
-#include <vespa/documentapi/messagebus/messages/putdocumentmessage.h>
-#include <vespa/documentapi/messagebus/messages/removedocumentmessage.h>
-#include <vespa/documentapi/messagebus/messages/updatedocumentmessage.h>
-
-namespace document { class DocumentTypeRepo; }
-
-/**
- * Utility class for invoking setApproxSize on a DocumentMessage with the delta
- * between the read position of a ByteBuffer at construction and destruction
- * time. The assumption being made is that the in-memory footprint of a message
- * is reasonably close to its wire-serialized form.
- */
-class ScopedApproxSizeSetter {
-public:
- ScopedApproxSizeSetter(documentapi::DocumentMessage& msg,
- const document::ByteBuffer& buf)
- : _msg(msg),
- _buf(buf),
- _posBefore(_buf.getPos())
- {
- }
-
- ~ScopedApproxSizeSetter() {
- _msg.setApproxSize(static_cast<uint32_t>(_buf.getPos() - _posBefore));
- }
-
-private:
- documentapi::DocumentMessage& _msg;
- const document::ByteBuffer& _buf;
- const size_t _posBefore;
-};
-
-namespace documentapi {
-
-template<typename MessageType, typename FactoryType>
-DocumentMessage::UP
-decodeMessage(const FactoryType * self, document::ByteBuffer & buf) {
- auto msg = std::make_unique<MessageType>();
- ScopedApproxSizeSetter sizeSetter(*msg, buf);
- self->decodeInto(*msg, buf);
- return msg;
-}
-
-/**
- * This class encapsulates all the {@link RoutableFactory} classes needed to implement factories for the document
- * routable. When adding new factories to this class, please KEEP THE THEM ORDERED alphabetically like they are now.
- */
-class RoutableFactories52 {
-public:
- RoutableFactories52() = delete;
-
- /**
- * Implements the shared factory logic required for {@link DocumentMessage} objects, and it offers a more
- * convenient interface for implementing {@link RoutableFactory}.
- */
- class DocumentMessageFactory : public IRoutableFactory {
- protected:
- /**
- * This method encodes the given message into the given byte buffer. You are guaranteed to only receive messages of
- * the type that this factory was registered for.
- *
- * This method is NOT exception safe. Return false to signal failure.
- *
- * @param msg The message to encode.
- * @param buf The byte buffer to write to.
- * @return True if the message was encoded.
- */
- virtual bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const = 0;
-
- /**
- * This method decodes a message from the given byte buffer. You are guaranteed to only receive byte buffers
- * generated by a previous call to {@link #doEncode(DocumentMessage, GrowableByteBuffer)}.
- *
- * This method is NOT exception safe. Return null to signal failure.
- *
- * @param buf The byte buffer to read from.
- * @return The decoded message.
- */
- virtual DocumentMessage::UP doDecode(document::ByteBuffer &buf) const = 0;
-
- public:
- bool encode(const mbus::Routable &obj, vespalib::GrowableByteBuffer &out) const override;
- mbus::Routable::UP decode(document::ByteBuffer &in, const LoadTypeSet& loadTypes) const override;
- };
-
- /**
- * Implements the shared factory logic required for {@link DocumentReply} objects, and it offers a more
- * convenient interface for implementing {@link RoutableFactory}.
- */
- class DocumentReplyFactory : public IRoutableFactory {
- protected:
- /**
- * This method encodes the given reply into the given byte buffer. You are guaranteed to only receive
- * replies of the type that this factory was registered for.
- *
- * This method is NOT exception safe. Return false to signal failure.
- *
- * @param reply The reply to encode.
- * @param buf The byte buffer to write to.
- * @return True if the message was encoded.
- */
- virtual bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const = 0;
-
- /**
- * This method decodes a reply from the given byte buffer. You are guaranteed to only receive byte buffers
- * generated by a previous call to {@link #doEncode(DocumentReply, GrowableByteBuffer)}.
- *
- * This method is NOT exception safe. Return null to signal failure.
- *
- * @param buf The byte buffer to read from.
- * @return The decoded reply.
- */
- virtual DocumentReply::UP doDecode(document::ByteBuffer &buf) const = 0;
-
- public:
- bool encode(const mbus::Routable &obj, vespalib::GrowableByteBuffer &out) const override;
- mbus::Routable::UP decode(document::ByteBuffer &in, const LoadTypeSet& loadTypes) const override;
- };
-
- ////////////////////////////////////////////////////////////////////////////////
- //
- // Factories
- //
- ////////////////////////////////////////////////////////////////////////////////
- class CreateVisitorMessageFactory : public DocumentMessageFactory {
- const document::DocumentTypeRepo &_repo;
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
-
- virtual bool encodeBucketSpace(vespalib::stringref bucketSpace, vespalib::GrowableByteBuffer& buf) const;
- virtual string decodeBucketSpace(document::ByteBuffer&) const;
- public:
- CreateVisitorMessageFactory(const document::DocumentTypeRepo &r) : _repo(r) {}
- };
- class CreateVisitorReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class DestroyVisitorMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class DestroyVisitorReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class DocumentIgnoredReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class DocumentListMessageFactory : public DocumentMessageFactory {
- const document::DocumentTypeRepo &_repo;
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- public:
- DocumentListMessageFactory(const document::DocumentTypeRepo &r)
- : _repo(r) {}
- };
- class DocumentListReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class DocumentSummaryMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class DocumentSummaryReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class EmptyBucketsMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class EmptyBucketsReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class GetBucketListMessageFactory : public DocumentMessageFactory {
- virtual bool encodeBucketSpace(vespalib::stringref bucketSpace, vespalib::GrowableByteBuffer& buf) const;
- virtual string decodeBucketSpace(document::ByteBuffer&) const;
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class GetBucketListReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class GetBucketStateMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class GetBucketStateReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class GetDocumentMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class GetDocumentReplyFactory : public DocumentReplyFactory {
- const document::DocumentTypeRepo &_repo;
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &msg, vespalib::GrowableByteBuffer &buf) const override;
- public:
- GetDocumentReplyFactory(const document::DocumentTypeRepo &r) : _repo(r) {}
- };
- class MapVisitorMessageFactory : public DocumentMessageFactory {
- const document::DocumentTypeRepo &_repo;
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- public:
- MapVisitorMessageFactory(const document::DocumentTypeRepo &r) : _repo(r) {}
- };
- class MapVisitorReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class PutDocumentMessageFactory : public DocumentMessageFactory {
- protected:
- const document::DocumentTypeRepo &_repo;
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override {
- return decodeMessage<PutDocumentMessage>(this, buf);
- }
-
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- public:
- void decodeInto(PutDocumentMessage & msg, document::ByteBuffer & buf) const;
- PutDocumentMessageFactory(const document::DocumentTypeRepo &r) : _repo(r) {}
- };
- class PutDocumentReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class RemoveDocumentMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override {
- return decodeMessage<RemoveDocumentMessage>(this, buf);
- }
-
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- public:
- void decodeInto(RemoveDocumentMessage & msg, document::ByteBuffer & buf) const;
- };
- class RemoveDocumentReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class RemoveLocationMessageFactory : public DocumentMessageFactory {
- const document::DocumentTypeRepo &_repo;
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- public:
- RemoveLocationMessageFactory(const document::DocumentTypeRepo &r) : _repo(r) {}
- };
- class RemoveLocationReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class SearchResultMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class SearchResultReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class StatBucketMessageFactory : public DocumentMessageFactory {
- virtual bool encodeBucketSpace(vespalib::stringref bucketSpace, vespalib::GrowableByteBuffer& buf) const;
- virtual string decodeBucketSpace(document::ByteBuffer&) const;
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class StatBucketReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class StatDocumentMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class StatDocumentReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class UpdateDocumentMessageFactory : public DocumentMessageFactory {
- protected:
- const document::DocumentTypeRepo &_repo;
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override {
- return decodeMessage<UpdateDocumentMessage>(this, buf);
- }
-
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- public:
- void decodeInto(UpdateDocumentMessage & msg, document::ByteBuffer & buf) const;
- UpdateDocumentMessageFactory(const document::DocumentTypeRepo &r) : _repo(r) {}
- };
- class UpdateDocumentReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class VisitorInfoMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class VisitorInfoReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class WrongDistributionReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
- class QueryResultMessageFactory : public DocumentMessageFactory {
- protected:
- DocumentMessage::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentMessage &msg, vespalib::GrowableByteBuffer &buf) const override;
- };
- class QueryResultReplyFactory : public DocumentReplyFactory {
- protected:
- DocumentReply::UP doDecode(document::ByteBuffer &buf) const override;
- bool doEncode(const DocumentReply &reply, vespalib::GrowableByteBuffer &buf) const override;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // Utilities
- //
- ///////////////////////////////////////////////////////////////////////////
-
- /**
- * This is a complement for the vespalib::GrowableByteBuffer.putString() method.
- *
- * @param in The byte buffer to read from.
- * @return The decoded string.
- */
- static string decodeString(document::ByteBuffer &in);
-
- /**
- * This is a complement for the vespalib::GrowableByteBuffer.putBoolean() method.
- *
- * @param in The byte buffer to read from.
- * @return The decoded bool.
- */
- static bool decodeBoolean(document::ByteBuffer &in);
-
- /**
- * Convenience method to decode a 32-bit int from the given byte buffer.
- *
- * @param in The byte buffer to read from.
- * @return The decoded int.
- */
- static int32_t decodeInt(document::ByteBuffer &in);
-
- /**
- * Convenience method to decode a 64-bit int from the given byte buffer.
- *
- * @param in The byte buffer to read from.
- * @return The decoded int.
- */
- static int64_t decodeLong(document::ByteBuffer &in);
-
- /**
- * Convenience method to decode a document id from the given byte buffer.
- *
- * @param in The byte buffer to read from.
- * @return The decoded document id.
- */
- static document::DocumentId decodeDocumentId(document::ByteBuffer &in);
-
- /**
- * Convenience method to encode a document id to the given byte buffer.
- *
- * @param id The document id to encode.
- * @param out The byte buffer to write to.
- */
- static void encodeDocumentId(const document::DocumentId &id,
- vespalib::GrowableByteBuffer &out);
-
- static void decodeTasCondition(DocumentMessage & docMsg, document::ByteBuffer & buf);
- static void encodeTasCondition(vespalib::GrowableByteBuffer & buf, const DocumentMessage & docMsg);
-};
-
-}