33#if defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
44#include < ossia/detail/variant.hpp>
55#include < ossia/network/sockets/configuration.hpp>
6+ #include < ossia/network/sockets/cobs_framing.hpp>
7+ #include < ossia/network/sockets/fixed_length_framing.hpp>
68#include < ossia/network/sockets/line_framing.hpp>
79#include < ossia/network/sockets/no_framing.hpp>
810#include < ossia/network/sockets/size_prefix_framing.hpp>
911#include < ossia/network/sockets/slip_framing.hpp>
12+ #include < ossia/network/sockets/stx_etx_framing.hpp>
1013#include < ossia/network/sockets/unix_socket.hpp>
14+ #include < ossia/network/sockets/var_size_prefix_framing.hpp>
1115
1216#include < ossia-qt/protocols/utils.hpp>
1317
@@ -129,7 +133,14 @@ class qml_unix_stream_connection
129133 ossia::net::no_framing::decoder<socket_t >,
130134 ossia::net::slip_decoder<socket_t >,
131135 ossia::net::size_prefix_decoder<socket_t >,
132- ossia::net::line_framing_decoder<socket_t >>;
136+ ossia::net::line_framing_decoder<socket_t >,
137+ ossia::net::cobs_decoder<socket_t >,
138+ ossia::net::stx_etx_framing::decoder<socket_t >,
139+ ossia::net::size_prefix_1byte_framing::decoder<socket_t >,
140+ ossia::net::size_prefix_2byte_be_framing::decoder<socket_t >,
141+ ossia::net::size_prefix_2byte_le_framing::decoder<socket_t >,
142+ ossia::net::size_prefix_4byte_le_framing::decoder<socket_t >,
143+ ossia::net::fixed_length_decoder<socket_t >>;
133144
134145 struct state
135146 {
@@ -172,6 +183,29 @@ class qml_unix_stream_connection
172183 std::copy_n (line_delimiter, 8 , dec.delimiter );
173184 }
174185 break ;
186+ case ossia::net::framing::cobs:
187+ decoder.template emplace <4 >(listener.m_socket );
188+ break ;
189+ case ossia::net::framing::stx_etx:
190+ decoder.template emplace <5 >(listener.m_socket );
191+ break ;
192+ case ossia::net::framing::size_prefix_1byte:
193+ decoder.template emplace <6 >(listener.m_socket );
194+ break ;
195+ case ossia::net::framing::size_prefix_2byte_be:
196+ decoder.template emplace <7 >(listener.m_socket );
197+ break ;
198+ case ossia::net::framing::size_prefix_2byte_le:
199+ decoder.template emplace <8 >(listener.m_socket );
200+ break ;
201+ case ossia::net::framing::size_prefix_4byte_le:
202+ decoder.template emplace <9 >(listener.m_socket );
203+ break ;
204+ case ossia::net::framing::fixed_length:
205+ decoder.template emplace <10 >(listener.m_socket );
206+ if (!delim.empty ())
207+ ossia::get<10 >(decoder).frame_size = std::stoul (delim);
208+ break ;
175209 }
176210 }
177211
@@ -183,22 +217,44 @@ class qml_unix_stream_connection
183217 case ossia::net::framing::none:
184218 listener.write (boost::asio::const_buffer (data, sz));
185219 break ;
186- case ossia::net::framing::slip: {
187- ossia::net::slip_encoder<socket_t > enc{listener.m_socket };
188- enc.write (data, sz);
220+ case ossia::net::framing::slip:
221+ ossia::net::slip_encoder<socket_t >{listener.m_socket }.write (data, sz);
189222 break ;
190- }
191- case ossia::net::framing::size_prefix: {
192- ossia::net::size_prefix_encoder<socket_t > enc{listener.m_socket };
193- enc.write (data, sz);
223+ case ossia::net::framing::size_prefix:
224+ ossia::net::size_prefix_encoder<socket_t >{listener.m_socket }.write (data, sz);
194225 break ;
195- }
196226 case ossia::net::framing::line_delimiter: {
197227 ossia::net::line_framing_encoder<socket_t > enc{listener.m_socket };
198228 std::copy_n (line_delimiter, 8 , enc.delimiter );
199229 enc.write (data, sz);
200230 break ;
201231 }
232+ case ossia::net::framing::cobs:
233+ ossia::net::cobs_encoder<socket_t >{listener.m_socket }.write (data, sz);
234+ break ;
235+ case ossia::net::framing::stx_etx:
236+ ossia::net::stx_etx_framing::encoder<socket_t >{listener.m_socket }.write (
237+ data, sz);
238+ break ;
239+ case ossia::net::framing::size_prefix_1byte:
240+ ossia::net::size_prefix_1byte_framing::encoder<socket_t >{listener.m_socket }
241+ .write (data, sz);
242+ break ;
243+ case ossia::net::framing::size_prefix_2byte_be:
244+ ossia::net::size_prefix_2byte_be_framing::encoder<socket_t >{listener.m_socket }
245+ .write (data, sz);
246+ break ;
247+ case ossia::net::framing::size_prefix_2byte_le:
248+ ossia::net::size_prefix_2byte_le_framing::encoder<socket_t >{listener.m_socket }
249+ .write (data, sz);
250+ break ;
251+ case ossia::net::framing::size_prefix_4byte_le:
252+ ossia::net::size_prefix_4byte_le_framing::encoder<socket_t >{listener.m_socket }
253+ .write (data, sz);
254+ break ;
255+ case ossia::net::framing::fixed_length:
256+ ossia::net::fixed_length_encoder<socket_t >{listener.m_socket }.write (data, sz);
257+ break ;
202258 }
203259 }
204260 };
@@ -262,7 +318,7 @@ class qml_unix_stream_connection
262318 if (!m_state)
263319 return ;
264320 auto st = m_state;
265- boost::asio::dispatch (st->context , [st, buffer] {
321+ boost::asio::dispatch (st->context , [st, buffer = std::move (buffer) ] {
266322 if (st->alive )
267323 st->write_encoded (buffer.data (), buffer.size ());
268324 });
0 commit comments