Changeset 427:0a7e413412e9 in finroc_core
- Timestamp:
- 14.05.2017 13:20:19 (7 years ago)
- Branch:
- 17.03
- Phase:
- public
- Location:
- port
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
port/tConnectOptions.h
r425 r427 60 60 //---------------------------------------------------------------------- 61 61 /*! 62 * Flags that can be set for connections/connectors 62 * Flags that can be set for connections/connectors. 63 * First 16 Bits are sent to Finstruct 63 64 */ 64 65 enum class tConnectionFlag … … 79 80 NON_PRIMARY_CONNECTOR, //!< Connector was created and is represented by higher-level connector (that still exists) (-> e.g. not necessary to transfer this connector to finstruct) 80 81 82 // unused flags for future use 83 UNUSED_8, UNUSED_9, UNUSED_10, UNUSED_11, UNUSED_12, UNUSED_13, UNUSED_14, 84 81 85 // these flags are automatically set 86 CONVERSION, //!< Connector has type conversion operations attached that must be applied on publishing values 87 NAMED_PARAMETERS, //!< Indicates whether connector options include named parameters (relevant mainly for uniform serialization of ConnectOptions and UriConnectorOptions (only the latter supports named parameters)) 82 88 PUBLISHED, //!< Only relevant for URI connectors: Has been published 83 89 DISCONNECTED, //!< Connector has been removed 84 CONVERSION //!< Connector has type conversion operations attached that must be applied on publishing values85 90 }; 86 91 … … 127 132 {} 128 133 134 /** 135 * Serialize URI connect options 136 * 137 * \param stream Stream to write to 138 * \param auto_set_flags Whether to auto-adjust flags 139 */ 140 void Serialize(rrlib::serialization::tOutputStream& stream, bool auto_set_flags) const; 141 142 /** 143 * \param conversion_operations New conversion operations 144 */ 129 145 void Set(const rrlib::rtti::conversion::tConversionOperationSequence& conversion_operations) 130 146 { 131 147 this->conversion_operations = conversion_operations; 132 148 } 149 /** 150 * \param conversion_operations New flags 151 */ 133 152 void Set(const tConnectionFlags& flags) 134 153 { 135 154 this->flags = flags; 136 155 } 156 157 /*! 158 * Unsets all flags that are automatically set by Finroc core. 159 * (Used for protection against misuse/undefined behavior) 160 * 161 * \param flags Flags to clear from auto-flags 162 * \return Flags with all auto-flags unset 163 */ 164 static tConnectionFlags UnsetAutoFlags(const tConnectionFlags& flags); 137 165 }; 138 166 … … 158 186 } 159 187 188 160 189 inline rrlib::serialization::tOutputStream& operator << (rrlib::serialization::tOutputStream& stream, const tConnectOptions& options) 161 190 { 162 stream << options.conversion_operations << options.flags.Raw();191 options.Serialize(stream, true); 163 192 return stream; 164 193 } 165 166 inline rrlib::serialization::tInputStream& operator >> (rrlib::serialization::tInputStream& stream, tConnectOptions& options) 167 { 168 stream >> options.conversion_operations; 169 options.flags = tConnectionFlags(stream.ReadInt()); 170 return stream; 171 } 172 194 rrlib::serialization::tInputStream& operator >> (rrlib::serialization::tInputStream& stream, tConnectOptions& options); 173 195 174 196 //---------------------------------------------------------------------- -
port/tConnector.cpp
r425 r427 117 117 source_port(source_port), 118 118 destination_port(destination_port), 119 flags( connect_options.flags| (&conversion_sequence_storage != &rrlib::rtti::conversion::tConversionOperationSequence::cNONE ? tFlags(tFlag::CONVERSION) : tFlags()))119 flags(tConnectOptions::UnsetAutoFlags(connect_options.flags) | (&conversion_sequence_storage != &rrlib::rtti::conversion::tConversionOperationSequence::cNONE ? tFlags(tFlag::CONVERSION) : tFlags())) 120 120 { 121 121 if (flags.Get(tFlag::CONVERSION)) -
port/tUriConnectOptions.h
r425 r427 75 75 /*! Additional parameters as key/value pairs */ 76 76 std::map<std::string, std::string> parameters; 77 77 78 }; 78 79 79 inline rrlib::serialization::tOutputStream& operator << (rrlib::serialization::tOutputStream& stream, const tUriConnectOptions& options) 80 { 81 stream << static_cast<const tConnectOptions&>(options); 82 stream << options.parameters; 83 return stream; 84 } 85 86 inline rrlib::serialization::tInputStream& operator >> (rrlib::serialization::tInputStream& stream, tUriConnectOptions& options) 87 { 88 stream >> static_cast<tConnectOptions&>(options); 89 stream >> options.parameters; 90 return stream; 91 } 80 // implemented in tConnectOptions.cpp (for locality of change - serialization of both classes is compatible) 81 rrlib::serialization::tOutputStream& operator << (rrlib::serialization::tOutputStream& stream, const tUriConnectOptions& options); 82 rrlib::serialization::tInputStream& operator >> (rrlib::serialization::tInputStream& stream, tUriConnectOptions& options); 92 83 93 84 //---------------------------------------------------------------------- -
port/tUriConnector.cpp
r425 r427 84 84 85 85 tUriConnector::tUriConnector(tOwner& owner, const tURI& uri, const tConnectOptions& connect_options, const tSchemeHandler& scheme_handler) : 86 flags( connect_options.flags),86 flags(tConnectOptions::UnsetAutoFlags(connect_options.flags) | (connect_options.conversion_operations.Size() ? tFlags(tFlag::CONVERSION) : tFlags())), 87 87 owner(owner), 88 88 conversion_operations(connect_options.conversion_operations),
Note: See TracChangeset
for help on using the changeset viewer.