Merge pull request #6856 from sfc-gh-tclinkenbeard/make-class-uncopyable
Make FlowReceiver NonCopyable
This commit is contained in:
commit
d8eb4e9efe
|
@ -239,7 +239,7 @@ public:
|
|||
// Sets endpoint to be a new local endpoint which delivers messages to the given receiver
|
||||
void addEndpoint(Endpoint& endpoint, NetworkMessageReceiver*, TaskPriority taskID);
|
||||
|
||||
void addEndpoints(std::vector<std::pair<struct FlowReceiver*, TaskPriority>> const& streams);
|
||||
void addEndpoints(std::vector<std::pair<class FlowReceiver*, TaskPriority>> const& streams);
|
||||
|
||||
// The given local endpoint no longer delivers messages to the given receiver or uses resources
|
||||
void removeEndpoint(const Endpoint&, NetworkMessageReceiver*);
|
||||
|
|
|
@ -28,9 +28,14 @@
|
|||
#include "fdbrpc/FailureMonitor.h"
|
||||
#include "fdbrpc/networksender.actor.h"
|
||||
|
||||
struct FlowReceiver : public NetworkMessageReceiver {
|
||||
// Common endpoint code for NetSAV<> and NetNotifiedQueue<>
|
||||
// Common endpoint code for NetSAV<> and NetNotifiedQueue<>
|
||||
class FlowReceiver : public NetworkMessageReceiver, public NonCopyable {
|
||||
Optional<PeerCompatibilityPolicy> peerCompatibilityPolicy_;
|
||||
Endpoint endpoint;
|
||||
bool m_isLocalEndpoint;
|
||||
bool m_stream;
|
||||
|
||||
protected:
|
||||
FlowReceiver() : m_isLocalEndpoint(false), m_stream(false) {}
|
||||
|
||||
FlowReceiver(Endpoint const& remoteEndpoint, bool stream)
|
||||
|
@ -46,8 +51,17 @@ struct FlowReceiver : public NetworkMessageReceiver {
|
|||
}
|
||||
}
|
||||
|
||||
bool isLocalEndpoint() { return m_isLocalEndpoint; }
|
||||
bool isRemoteEndpoint() { return endpoint.isValid() && !m_isLocalEndpoint; }
|
||||
public:
|
||||
bool isLocalEndpoint() const { return m_isLocalEndpoint; }
|
||||
bool isRemoteEndpoint() const { return endpoint.isValid() && !m_isLocalEndpoint; }
|
||||
|
||||
void setRemoteEndpoint(Endpoint const& remoteEndpoint, bool stream) {
|
||||
ASSERT(!m_isLocalEndpoint);
|
||||
ASSERT(!endpoint.isValid());
|
||||
endpoint = remoteEndpoint;
|
||||
m_stream = stream;
|
||||
FlowTransport::transport().addPeerReference(endpoint, m_stream);
|
||||
}
|
||||
|
||||
// If already a remote endpoint, returns that. Otherwise makes this
|
||||
// a local endpoint and returns that.
|
||||
|
@ -80,12 +94,6 @@ struct FlowReceiver : public NetworkMessageReceiver {
|
|||
}
|
||||
|
||||
const Endpoint& getRawEndpoint() { return endpoint; }
|
||||
|
||||
private:
|
||||
Optional<PeerCompatibilityPolicy> peerCompatibilityPolicy_;
|
||||
Endpoint endpoint;
|
||||
bool m_isLocalEndpoint;
|
||||
bool m_stream;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
|
@ -363,8 +371,9 @@ struct NetNotifiedQueueWithAcknowledgements final : NotifiedQueue<T>,
|
|||
this->sendError(message.getError());
|
||||
} else {
|
||||
if (message.get().asUnderlyingType().acknowledgeToken.present()) {
|
||||
acknowledgements = AcknowledgementReceiver(
|
||||
FlowTransport::transport().loadedEndpoint(message.get().asUnderlyingType().acknowledgeToken.get()));
|
||||
acknowledgements.setRemoteEndpoint(
|
||||
FlowTransport::transport().loadedEndpoint(message.get().asUnderlyingType().acknowledgeToken.get()),
|
||||
false);
|
||||
if (onConnect.isValid() && onConnect.canBeSet()) {
|
||||
onConnect.send(Void());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue