changed dynamic cast to static. added nullptr return to tls datagram

fb-udp
Claudius Holeksa 2022-01-07 13:18:56 +01:00
parent 4e29918740
commit 8c37b329dc
5 changed files with 20 additions and 12 deletions

View File

@ -212,16 +212,15 @@ Conveyor<Own<IoStream>> UnixNetworkAddress::connect() {
return Conveyor<Own<IoStream>>{std::move(io_stream)};
}
Own<Datagram> UnixNetworkAddress::datagram(){
SAW_ASSERT(addresses.size() > 0){
return nullptr;
}
Own<Datagram> UnixNetworkAddress::datagram() {
SAW_ASSERT(addresses.size() > 0) { return nullptr; }
int fd = addresses.front().socket(SOCK_DGRAM);
int optval = 1;
int rc = ::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
SAW_ASSERT(rc == 0){
int rc =
::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
SAW_ASSERT(rc == 0) {
::close(fd);
return nullptr;
}

View File

@ -91,11 +91,11 @@ public:
virtual ~ErrorOrValue() = default;
template <typename T> ErrorOr<UnfixVoid<T>> &as() {
return dynamic_cast<ErrorOr<UnfixVoid<T>> &>(*this);
return static_cast<ErrorOr<UnfixVoid<T>> &>(*this);
}
template <typename T> const ErrorOr<UnfixVoid<T>> &as() const {
return dynamic_cast<const ErrorOr<UnfixVoid<T>> &>(*this);
return static_cast<const ErrorOr<UnfixVoid<T>> &>(*this);
}
};

View File

@ -92,18 +92,20 @@ public:
virtual Conveyor<Own<IoStream>> accept() = 0;
};
class NetworkAddress;
/**
* Datagram class. Bound to a local address it is able to receive inbound datagram messages
* and send them as well as long as an address is provided as well
* Datagram class. Bound to a local address it is able to receive inbound
* datagram messages and send them as well as long as an address is provided as
* well
*/
class Datagram {
public:
virtual ~Datagram() = default;
virtual void write(void* buffer, size_t length, NetworkAddress& dest) = 0;
virtual void write(void *buffer, size_t length, NetworkAddress &dest) = 0;
virtual Conveyor<size_t> writeDone() = 0;
virtual void read(void* buffer, size_t min_length, size_t max_length) = 0;
virtual void read(void *buffer, size_t min_length, size_t max_length) = 0;
virtual Conveyor<size_t> readDone() = 0;
};

View File

@ -209,6 +209,11 @@ Conveyor<Own<IoStream>> TlsNetworkAddress::connect() {
return caf.conveyor.attach(std::move(helper));
}
Own<Datagram> TlsNetworkAddress::datagram(){
///@unimplemented
return nullptr;
}
static ssize_t forst_tls_push_func(gnutls_transport_ptr_t p, const void *data,
size_t size) {
IoStream *stream = reinterpret_cast<IoStream *>(p);

View File

@ -46,6 +46,8 @@ public:
Conveyor<Own<IoStream>> connect() override;
Own<Datagram> datagram() override;
std::string toString() const override;
const std::string &address() const override;