Apache Qpid - AMQP Messaging for Java JMS, C++, Python, Ruby, and .NET | Apache Qpid Documentation |
00001 #ifndef QPID_FRAMING_UUID_H 00002 #define QPID_FRAMING_UUID_H 00003 00004 /* 00005 * 00006 * Copyright (c) 2006 The Apache Software Foundation 00007 * 00008 * Licensed under the Apache License, Version 2.0 (the "License"); 00009 * you may not use this file except in compliance with the License. 00010 * You may obtain a copy of the License at 00011 * 00012 * http://www.apache.org/licenses/LICENSE-2.0 00013 * 00014 * Unless required by applicable law or agreed to in writing, software 00015 * distributed under the License is distributed on an "AS IS" BASIS, 00016 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00017 * See the License for the specific language governing permissions and 00018 * limitations under the License. 00019 * 00020 */ 00021 00022 #include "qpid/CommonImportExport.h" 00023 #include "qpid/sys/IntegerTypes.h" 00024 00025 #include <boost/array.hpp> 00026 00027 #include <ostream> 00028 #include <istream> 00029 00030 namespace qpid { 00031 namespace framing { 00032 00033 class Buffer; 00034 00044 struct Uuid : public boost::array<uint8_t, 16> { 00046 QPID_COMMON_EXTERN Uuid(bool unique=false); 00047 00049 QPID_COMMON_EXTERN Uuid(const uint8_t* data); 00050 00051 // Default op= and copy ctor are fine. 00052 // boost::array gives us ==, < etc. 00053 00055 void assign(const uint8_t* data); 00056 00058 QPID_COMMON_EXTERN void generate(); 00059 00061 void clear(); 00062 00064 QPID_COMMON_EXTERN bool isNull() const; 00065 operator bool() const { return !isNull(); } 00066 bool operator!() const { return isNull(); } 00067 00068 QPID_COMMON_EXTERN void encode(framing::Buffer& buf) const; 00069 QPID_COMMON_EXTERN void decode(framing::Buffer& buf); 00070 QPID_COMMON_EXTERN uint32_t encodedSize() const { return size(); } 00071 00073 QPID_COMMON_EXTERN std::string str() const; 00074 00075 template <class S> void serialize(S& s) { 00076 s.raw(begin(), size()); 00077 } 00078 }; 00079 00081 QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream&, Uuid); 00082 00084 QPID_COMMON_EXTERN std::istream& operator>>(std::istream&, Uuid&); 00085 00086 }} // namespace qpid::framing 00087 00088 00089 00090 #endif