15 std::unique_ptr<buffers::IOSocketBuffer>
buffer;
18 template<web::utility::Fundamental T>
21 template<web::utility::Fundamental T>
34 template<std::derived_from<web::Network> T,
typename... Args>
37 template<std::derived_from<buffers::IOSocketBuffer> T,
typename... Args>
58 template<std::derived_from<web::Network> T = web::Network>
61 template<std::derived_from<web::Network> T = web::Network>
73 std::ostream&
operator << (
unsigned long long value);
88 std::istream&
operator >> (
unsigned long long& value);
98 template<web::utility::Container T>
105 template<web::utility::Container T>
111 template<web::utility::Fundamental T>
116 bool endOfStream =
false;
121 setstate(std::ios_base::eofbit);
124 return lastPacketSize;
128 setstate(std::ios_base::failbit);
134 template<web::utility::Fundamental T>
139 bool endOfStream =
false;
144 setstate(std::ios_base::eofbit);
147 return lastPacketSize;
151 setstate(std::ios_base::failbit);
157 template<std::derived_from<web::Network> T,
typename... Args>
160 return IOSocketStream(std::make_unique<T>(std::forward<Args>(args)...));
163 template<std::derived_from<buffers::IOSocketBuffer> T,
typename... Args>
166 return IOSocketStream(std::make_unique<T>(std::forward<Args>(args)...));
169 template<std::derived_from<web::Network> T>
174 return dynamic_cast<T&
>(*
buffer->getNetwork());
177 throw std::runtime_error(
"Network is nullptr");
179 return dynamic_cast<T&
>(*
buffer->getNetwork());
182 template<std::derived_from<web::Network> T>
187 return dynamic_cast<const T&
>(*
buffer->getNetwork());
190 throw std::runtime_error(
"Network is nullptr");
192 return dynamic_cast<const T&
>(*
buffer->getNetwork());
195 template<web::utility::Container T>
199 constexpr std::streamsize size = (std::numeric_limits<std::streamsize>::max)();
203 if (
buffer->sputn(
reinterpret_cast<const char*
>(&container), size) == buffers::IOSocketBuffer::traits_type::eof())
205 setstate(std::ios_base::eofbit);
210 setstate(std::ios_base::failbit);
218 template<web::utility::Container T>
222 constexpr std::streamsize size = (std::numeric_limits<std::streamsize>::max)();
226 if (
buffer->sgetn(
reinterpret_cast<char*
>(&container), size) == buffers::IOSocketBuffer::traits_type::eof())
228 setstate(std::ios_base::eofbit);
233 setstate(std::ios_base::failbit);
Base input/output socket stream.
Definition IOSocketStream.h:13
int receiveFundamental(T &value)
Definition IOSocketStream.h:135
T & getNetwork()
Definition IOSocketStream.h:170
virtual ~IOSocketStream()=default
std::ostream & operator<<(bool value)
Definition IOSocketStream.cpp:49
IOSocketStream(const IOSocketStream &)=delete
Deleted copy constructor.
int sendFundamental(T value)
Definition IOSocketStream.h:112
virtual int receiveFundamentalImplementation(char *value, int valueSize, bool &endOfStream)
Definition IOSocketStream.cpp:10
static IOSocketStream createStream(Args &&... args)
std::unique_ptr< buffers::IOSocketBuffer > buffer
Definition IOSocketStream.h:15
std::istream & operator>>(bool &value)
Definition IOSocketStream.cpp:133
static IOSocketStream createStream(Args &&... args)
Definition IOSocketStream.h:158
IOSocketStream & operator=(const IOSocketStream &)=delete
Deleted copy assignment operator.
virtual int sendFundamentalImplementation(const char *value, int valueSize, bool &endOfStream)
Definition IOSocketStream.cpp:5
Network exception.
Definition WebException.h:12
Wrap Container concept instance.
Definition ContainerWrapper.h:27
Definition IOSocketStream.cpp:4