changed dynamic cast to static. added nullptr return to tls datagram
parent
4e29918740
commit
8c37b329dc
|
@ -212,16 +212,15 @@ Conveyor<Own<IoStream>> UnixNetworkAddress::connect() {
|
||||||
return Conveyor<Own<IoStream>>{std::move(io_stream)};
|
return Conveyor<Own<IoStream>>{std::move(io_stream)};
|
||||||
}
|
}
|
||||||
|
|
||||||
Own<Datagram> UnixNetworkAddress::datagram(){
|
Own<Datagram> UnixNetworkAddress::datagram() {
|
||||||
SAW_ASSERT(addresses.size() > 0){
|
SAW_ASSERT(addresses.size() > 0) { return nullptr; }
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
int fd = addresses.front().socket(SOCK_DGRAM);
|
int fd = addresses.front().socket(SOCK_DGRAM);
|
||||||
|
|
||||||
int optval = 1;
|
int optval = 1;
|
||||||
int rc = ::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
|
int rc =
|
||||||
SAW_ASSERT(rc == 0){
|
::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
|
||||||
|
SAW_ASSERT(rc == 0) {
|
||||||
::close(fd);
|
::close(fd);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,11 +91,11 @@ public:
|
||||||
virtual ~ErrorOrValue() = default;
|
virtual ~ErrorOrValue() = default;
|
||||||
|
|
||||||
template <typename T> ErrorOr<UnfixVoid<T>> &as() {
|
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 {
|
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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -92,18 +92,20 @@ public:
|
||||||
virtual Conveyor<Own<IoStream>> accept() = 0;
|
virtual Conveyor<Own<IoStream>> accept() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class NetworkAddress;
|
||||||
/**
|
/**
|
||||||
* Datagram class. Bound to a local address it is able to receive inbound datagram messages
|
* Datagram class. Bound to a local address it is able to receive inbound
|
||||||
* and send them as well as long as an address is provided as well
|
* datagram messages and send them as well as long as an address is provided as
|
||||||
|
* well
|
||||||
*/
|
*/
|
||||||
class Datagram {
|
class Datagram {
|
||||||
public:
|
public:
|
||||||
virtual ~Datagram() = default;
|
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 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;
|
virtual Conveyor<size_t> readDone() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,11 @@ Conveyor<Own<IoStream>> TlsNetworkAddress::connect() {
|
||||||
return caf.conveyor.attach(std::move(helper));
|
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,
|
static ssize_t forst_tls_push_func(gnutls_transport_ptr_t p, const void *data,
|
||||||
size_t size) {
|
size_t size) {
|
||||||
IoStream *stream = reinterpret_cast<IoStream *>(p);
|
IoStream *stream = reinterpret_cast<IoStream *>(p);
|
||||||
|
|
|
@ -46,6 +46,8 @@ public:
|
||||||
|
|
||||||
Conveyor<Own<IoStream>> connect() override;
|
Conveyor<Own<IoStream>> connect() override;
|
||||||
|
|
||||||
|
Own<Datagram> datagram() override;
|
||||||
|
|
||||||
std::string toString() const override;
|
std::string toString() const override;
|
||||||
|
|
||||||
const std::string &address() const override;
|
const std::string &address() const override;
|
||||||
|
|
Loading…
Reference in New Issue