summaryrefslogtreecommitdiff
path: root/qpid/cpp/include/qpid/messaging
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/include/qpid/messaging')
-rw-r--r--qpid/cpp/include/qpid/messaging/ListContent.h90
-rw-r--r--qpid/cpp/include/qpid/messaging/ListView.h67
-rw-r--r--qpid/cpp/include/qpid/messaging/MapContent.h90
-rw-r--r--qpid/cpp/include/qpid/messaging/MapView.h70
-rw-r--r--qpid/cpp/include/qpid/messaging/Message.h22
-rw-r--r--qpid/cpp/include/qpid/messaging/MessageContent.h90
6 files changed, 322 insertions, 107 deletions
diff --git a/qpid/cpp/include/qpid/messaging/ListContent.h b/qpid/cpp/include/qpid/messaging/ListContent.h
new file mode 100644
index 0000000000..1c4e13716d
--- /dev/null
+++ b/qpid/cpp/include/qpid/messaging/ListContent.h
@@ -0,0 +1,90 @@
+#ifndef QPID_MESSAGING_LISTCONTENT_H
+#define QPID_MESSAGING_LISTCONTENT_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/client/ClientImportExport.h"
+#include "Variant.h"
+
+namespace qpid {
+namespace messaging {
+
+class ListContentImpl;
+class Message;
+
+/**
+ * Allows message content to be manipulated as a list.
+ */
+class ListContent
+{
+ public:
+ typedef Variant::List::iterator iterator;
+ typedef Variant::List::reverse_iterator reverse_iterator;
+ typedef Variant::List::const_iterator const_iterator;
+ typedef Variant::List::const_reverse_iterator const_reverse_iterator;
+
+ QPID_CLIENT_EXTERN ListContent(Message&);
+ QPID_CLIENT_EXTERN ~ListContent();
+
+ QPID_CLIENT_EXTERN const_iterator begin() const;
+ QPID_CLIENT_EXTERN iterator begin();
+ QPID_CLIENT_EXTERN const_iterator end() const;
+ QPID_CLIENT_EXTERN iterator end();
+ QPID_CLIENT_EXTERN const_reverse_iterator rbegin() const;
+ QPID_CLIENT_EXTERN reverse_iterator rbegin();
+ QPID_CLIENT_EXTERN const_reverse_iterator rend() const;
+ QPID_CLIENT_EXTERN reverse_iterator rend();
+
+ QPID_CLIENT_EXTERN bool empty() const;
+ QPID_CLIENT_EXTERN size_t size() const;
+
+ QPID_CLIENT_EXTERN const Variant& front() const;
+ QPID_CLIENT_EXTERN Variant& front();
+ QPID_CLIENT_EXTERN const Variant& back() const;
+ QPID_CLIENT_EXTERN Variant& back();
+
+ QPID_CLIENT_EXTERN void push_front(const Variant&);
+ QPID_CLIENT_EXTERN void push_back(const Variant&);
+
+ QPID_CLIENT_EXTERN void pop_front();
+ QPID_CLIENT_EXTERN void pop_back();
+
+ QPID_CLIENT_EXTERN iterator insert(iterator position, const Variant&);
+ QPID_CLIENT_EXTERN void insert(iterator position, size_t n, const Variant&);
+ QPID_CLIENT_EXTERN iterator erase(iterator position);
+ QPID_CLIENT_EXTERN iterator erase(iterator first, iterator last);
+ QPID_CLIENT_EXTERN void clear();
+
+ QPID_CLIENT_EXTERN void encode();
+
+ QPID_CLIENT_EXTERN const Variant::List& asList() const;
+ QPID_CLIENT_EXTERN Variant::List& asList();
+ private:
+ ListContentImpl* impl;
+
+ QPID_CLIENT_EXTERN ListContent& operator=(const ListContent&);
+};
+
+QPID_CLIENT_EXTERN std::ostream& operator<<(std::ostream& out, const ListContent& m);
+
+}} // namespace qpid::messaging
+
+#endif /*!QPID_MESSAGING_LISTCONTENT_H*/
diff --git a/qpid/cpp/include/qpid/messaging/ListView.h b/qpid/cpp/include/qpid/messaging/ListView.h
new file mode 100644
index 0000000000..4970a20072
--- /dev/null
+++ b/qpid/cpp/include/qpid/messaging/ListView.h
@@ -0,0 +1,67 @@
+#ifndef QPID_MESSAGING_LISTVIEW_H
+#define QPID_MESSAGING_LISTVIEW_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/client/ClientImportExport.h"
+#include "Variant.h"
+
+namespace qpid {
+namespace messaging {
+
+class ListViewImpl;
+class Message;
+
+/**
+ * Provides a view of message content as a list
+ */
+class ListView
+{
+ public:
+ typedef Variant::List::const_iterator const_iterator;
+ typedef Variant::List::const_reverse_iterator const_reverse_iterator;
+
+ QPID_CLIENT_EXTERN ListView(const Message&);
+ QPID_CLIENT_EXTERN ~ListView();
+ QPID_CLIENT_EXTERN ListView& operator=(const ListView&);
+
+ QPID_CLIENT_EXTERN const_iterator begin() const;
+ QPID_CLIENT_EXTERN const_iterator end() const;
+ QPID_CLIENT_EXTERN const_reverse_iterator rbegin() const;
+ QPID_CLIENT_EXTERN const_reverse_iterator rend() const;
+
+ QPID_CLIENT_EXTERN bool empty() const;
+ QPID_CLIENT_EXTERN size_t size() const;
+
+ QPID_CLIENT_EXTERN const Variant& front() const;
+ QPID_CLIENT_EXTERN const Variant& back() const;
+
+ QPID_CLIENT_EXTERN const Variant::List& asList() const;
+ private:
+ ListViewImpl* impl;
+};
+
+QPID_CLIENT_EXTERN std::ostream& operator<<(std::ostream& out, const ListView& m);
+
+}} // namespace qpid::messaging
+
+#endif /*!QPID_MESSAGING_LISTVIEW_H*/
diff --git a/qpid/cpp/include/qpid/messaging/MapContent.h b/qpid/cpp/include/qpid/messaging/MapContent.h
new file mode 100644
index 0000000000..b05cb31295
--- /dev/null
+++ b/qpid/cpp/include/qpid/messaging/MapContent.h
@@ -0,0 +1,90 @@
+#ifndef QPID_MESSAGING_MAPCONTENT_H
+#define QPID_MESSAGING_MAPCONTENT_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/client/ClientImportExport.h"
+#include "Variant.h"
+#include <map>
+#include <string>
+
+namespace qpid {
+namespace messaging {
+
+class MapContentImpl;
+class Message;
+
+/**
+ * Allows message content to be manipulated as a map
+ */
+class MapContent
+{
+ public:
+ typedef std::string key_type;
+ typedef std::pair<std::string, Variant> value_type;
+ typedef std::map<key_type, Variant>::const_iterator const_iterator;
+ typedef std::map<key_type, Variant>::iterator iterator;
+ typedef std::map<key_type, Variant>::const_reverse_iterator const_reverse_iterator;
+ typedef std::map<key_type, Variant>::reverse_iterator reverse_iterator;
+
+ QPID_CLIENT_EXTERN MapContent(Message&);
+ QPID_CLIENT_EXTERN ~MapContent();
+
+ QPID_CLIENT_EXTERN const_iterator begin() const;
+ QPID_CLIENT_EXTERN const_iterator end() const;
+ QPID_CLIENT_EXTERN const_reverse_iterator rbegin() const;
+ QPID_CLIENT_EXTERN const_reverse_iterator rend() const;
+ QPID_CLIENT_EXTERN iterator begin();
+ QPID_CLIENT_EXTERN iterator end();
+ QPID_CLIENT_EXTERN reverse_iterator rbegin();
+ QPID_CLIENT_EXTERN reverse_iterator rend();
+
+ QPID_CLIENT_EXTERN bool empty() const;
+ QPID_CLIENT_EXTERN size_t size() const;
+
+ QPID_CLIENT_EXTERN const_iterator find(const key_type&) const;
+ QPID_CLIENT_EXTERN iterator find(const key_type&);
+ QPID_CLIENT_EXTERN const Variant& operator[](const key_type&) const;
+ QPID_CLIENT_EXTERN Variant& operator[](const key_type&);
+
+ QPID_CLIENT_EXTERN std::pair<iterator,bool> insert(const value_type&);
+ QPID_CLIENT_EXTERN iterator insert(iterator position, const value_type&);
+ QPID_CLIENT_EXTERN void erase(iterator position);
+ QPID_CLIENT_EXTERN void erase(iterator first, iterator last);
+ QPID_CLIENT_EXTERN size_t erase(const key_type&);
+ QPID_CLIENT_EXTERN void clear();
+
+ QPID_CLIENT_EXTERN void encode();
+
+ QPID_CLIENT_EXTERN const std::map<key_type, Variant>& asMap() const;
+ QPID_CLIENT_EXTERN std::map<key_type, Variant>& asMap();
+ private:
+ MapContentImpl* impl;
+
+ QPID_CLIENT_EXTERN MapContent& operator=(const MapContent&);
+};
+
+QPID_CLIENT_EXTERN std::ostream& operator<<(std::ostream& out, const MapContent& m);
+
+}} // namespace qpid::messaging
+
+#endif /*!QPID_MESSAGING_MAPCONTENT_H*/
diff --git a/qpid/cpp/include/qpid/messaging/MapView.h b/qpid/cpp/include/qpid/messaging/MapView.h
new file mode 100644
index 0000000000..910dfca5c2
--- /dev/null
+++ b/qpid/cpp/include/qpid/messaging/MapView.h
@@ -0,0 +1,70 @@
+#ifndef QPID_MESSAGING_MAPVIEW_H
+#define QPID_MESSAGING_MAPVIEW_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/client/ClientImportExport.h"
+#include "Variant.h"
+#include <map>
+#include <string>
+
+namespace qpid {
+namespace messaging {
+
+class MapViewImpl;
+class Message;
+
+/**
+ * Provides a view of message content as a list
+ */
+class MapView
+{
+ public:
+ typedef std::string key_type;
+ typedef std::pair<key_type, Variant> value_type;
+ typedef std::map<key_type, Variant>::const_iterator const_iterator;
+ typedef std::map<key_type, Variant>::const_reverse_iterator const_reverse_iterator;
+
+ QPID_CLIENT_EXTERN MapView(const Message&);
+ QPID_CLIENT_EXTERN ~MapView();
+ QPID_CLIENT_EXTERN MapView& operator=(const MapView&);
+
+ QPID_CLIENT_EXTERN const_iterator begin() const;
+ QPID_CLIENT_EXTERN const_iterator end() const;
+ QPID_CLIENT_EXTERN const_reverse_iterator rbegin() const;
+ QPID_CLIENT_EXTERN const_reverse_iterator rend() const;
+
+ QPID_CLIENT_EXTERN bool empty() const;
+ QPID_CLIENT_EXTERN size_t size() const;
+
+ QPID_CLIENT_EXTERN const_iterator find(const key_type&) const;
+ QPID_CLIENT_EXTERN const Variant& operator[](const key_type&) const;
+
+ QPID_CLIENT_EXTERN const std::map<key_type, Variant>& asMap() const;
+ private:
+ MapViewImpl* impl;
+};
+
+QPID_CLIENT_EXTERN std::ostream& operator<<(std::ostream& out, const MapView& m);
+
+}} // namespace qpid::messaging
+
+#endif /*!QPID_MESSAGING_MAPVIEW_H*/
diff --git a/qpid/cpp/include/qpid/messaging/Message.h b/qpid/cpp/include/qpid/messaging/Message.h
index e68d8a1141..4477d5a2e9 100644
--- a/qpid/cpp/include/qpid/messaging/Message.h
+++ b/qpid/cpp/include/qpid/messaging/Message.h
@@ -24,7 +24,6 @@
#include <string>
#include "qpid/messaging/Variant.h"
-#include "qpid/messaging/MessageContent.h"
#include "qpid/client/ClientImportExport.h"
namespace qpid {
@@ -62,22 +61,11 @@ class Message
QPID_CLIENT_EXTERN const VariantMap& getHeaders() const;
QPID_CLIENT_EXTERN VariantMap& getHeaders();
- QPID_CLIENT_EXTERN const std::string& getBytes() const;
- QPID_CLIENT_EXTERN std::string& getBytes();
- QPID_CLIENT_EXTERN void setBytes(const std::string&);
- QPID_CLIENT_EXTERN void setBytes(const char* chars, size_t count);
- QPID_CLIENT_EXTERN const char* getRawContent() const;
- QPID_CLIENT_EXTERN size_t getContentSize() const;
-
-
- QPID_CLIENT_EXTERN MessageContent& getContent();
- QPID_CLIENT_EXTERN const MessageContent& getContent() const;
- QPID_CLIENT_EXTERN void setContent(const std::string& s);
- QPID_CLIENT_EXTERN void setContent(const Variant::Map&);
- QPID_CLIENT_EXTERN void setContent(const Variant::List&);
-
- QPID_CLIENT_EXTERN void encode(Codec&);
- QPID_CLIENT_EXTERN void decode(Codec&);
+ QPID_CLIENT_EXTERN const std::string& getContent() const;
+ QPID_CLIENT_EXTERN std::string& getContent();
+ QPID_CLIENT_EXTERN void setContent(const std::string&);
+ QPID_CLIENT_EXTERN void setContent(const char* chars, size_t count);
+ QPID_CLIENT_EXTERN void getContent(std::pair<const char*, size_t>& content) const;
private:
MessageImpl* impl;
diff --git a/qpid/cpp/include/qpid/messaging/MessageContent.h b/qpid/cpp/include/qpid/messaging/MessageContent.h
deleted file mode 100644
index 7c3a636c07..0000000000
--- a/qpid/cpp/include/qpid/messaging/MessageContent.h
+++ /dev/null
@@ -1,90 +0,0 @@
-#ifndef QPID_MESSAGING_MESSAGECONTENT_H
-#define QPID_MESSAGING_MESSAGECONTENT_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/messaging/Variant.h"
-#include <string>
-#include "qpid/client/ClientImportExport.h"
-
-namespace qpid {
-namespace messaging {
-
-/**
- *
- */
-class MessageContent
-{
- public:
- QPID_CLIENT_EXTERN virtual ~MessageContent() {}
-
- virtual const std::string& asString() const = 0;
- virtual std::string& asString() = 0;
-
- virtual const char* asChars() const = 0;
- virtual size_t size() const = 0;
-
- virtual const Variant::Map& asMap() const = 0;
- virtual Variant::Map& asMap() = 0;
- virtual bool isMap() const = 0;
-
- virtual const Variant::List& asList() const = 0;
- virtual Variant::List& asList() = 0;
- virtual bool isList() const = 0;
-
- virtual void clear() = 0;
-
- virtual Variant& operator[](const std::string&) = 0;
-
-
- virtual std::ostream& print(std::ostream& out) const = 0;
-
-
- //operator<< for variety of types... (is this a good idea?)
- virtual MessageContent& operator<<(const std::string&) = 0;
- virtual MessageContent& operator<<(const char*) = 0;
- virtual MessageContent& operator<<(bool) = 0;
- virtual MessageContent& operator<<(int8_t) = 0;
- virtual MessageContent& operator<<(int16_t) = 0;
- virtual MessageContent& operator<<(int32_t) = 0;
- virtual MessageContent& operator<<(int64_t) = 0;
- virtual MessageContent& operator<<(uint8_t) = 0;
- virtual MessageContent& operator<<(uint16_t) = 0;
- virtual MessageContent& operator<<(uint32_t) = 0;
- virtual MessageContent& operator<<(uint64_t) = 0;
- virtual MessageContent& operator<<(double) = 0;
- virtual MessageContent& operator<<(float) = 0;
-
- //assignment from string, map and list
- virtual MessageContent& operator=(const std::string&) = 0;
- virtual MessageContent& operator=(const char*) = 0;
- virtual MessageContent& operator=(const Variant::Map&) = 0;
- virtual MessageContent& operator=(const Variant::List&) = 0;
-
- private:
-};
-
-QPID_CLIENT_EXTERN std::ostream& operator<<(std::ostream& out, const MessageContent& content);
-
-}} // namespace qpid::messaging
-
-#endif /*!QPID_MESSAGING_MESSAGECONTENT_H*/