Skip to content

Commit

Permalink
Merge branch 'main' into std-byte
Browse files Browse the repository at this point in the history
  • Loading branch information
externl authored Mar 7, 2024
2 parents 47b3a25 + ba75c74 commit fb0e7ba
Show file tree
Hide file tree
Showing 29 changed files with 559 additions and 567 deletions.
3 changes: 2 additions & 1 deletion cpp/include/Ice/ProxyFunctions.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ namespace Ice
{

/**
* Verifies that a proxy received from the client is not null.
* Verifies that a proxy received from the client is not null, and throws a MarshalException if it is.
* @param prx The proxy to check.
* @param current The Current object for the invocation.
* @throw MarshalException If the proxy is null.
* */
template<typename Prx, std::enable_if_t<std::is_base_of<ObjectPrx, Prx>::value, bool> = true>
void checkNotNull(std::optional<Prx> prx, const Current& current)
Expand Down
23 changes: 13 additions & 10 deletions cpp/src/IceStorm/Admin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,13 +118,13 @@ run(const shared_ptr<Ice::Communicator>& communicator, const Ice::StringSeq& arg
debug = opts.isSet("debug");

// The complete set of Ice::Identity -> manager proxies.
map<Ice::Identity, IceStorm::TopicManagerPrxPtr> managers;
map<Ice::Identity, IceStorm::TopicManagerPrx> managers;
auto properties = communicator->getProperties();
IceStorm::TopicManagerPrxPtr defaultManager;
optional<IceStorm::TopicManagerPrx> defaultManager;

auto props = communicator->getProperties()->getPropertiesForPrefix("IceStormAdmin.TopicManager.");
{
for(const auto& p : props)
for (const auto& p : props)
{
//
// Ignore proxy property settings. eg IceStormAdmin.TopicManager.*.LocatorCacheTimeout
Expand All @@ -133,8 +133,10 @@ run(const shared_ptr<Ice::Communicator>& communicator, const Ice::StringSeq& arg
{
try
{

auto manager = communicator->propertyToProxy<IceStorm::TopicManagerPrx>(p.first);
managers.insert({manager->ice_getIdentity(), manager});
assert(manager);
managers.insert({manager->ice_getIdentity(), *manager});
}
catch(const Ice::ProxyParseException&)
{
Expand All @@ -145,17 +147,17 @@ run(const shared_ptr<Ice::Communicator>& communicator, const Ice::StringSeq& arg
}

string managerProxy = properties->getProperty("IceStormAdmin.TopicManager.Default");
if(!managerProxy.empty())
if (!managerProxy.empty())
{
defaultManager = Ice::uncheckedCast<IceStorm::TopicManagerPrx>(communicator->stringToProxy(managerProxy));
defaultManager = IceStorm::TopicManagerPrx(communicator, managerProxy);
}
else if(!managers.empty())
else if (!managers.empty())
{
defaultManager = managers.begin()->second;
}
}

if(!defaultManager)
if (!defaultManager)
{
string host = properties->getProperty("IceStormAdmin.Host");
string port = properties->getProperty("IceStormAdmin.Port");
Expand All @@ -165,6 +167,7 @@ run(const shared_ptr<Ice::Communicator>& communicator, const Ice::StringSeq& arg
os << "IceStorm/Finder";
os << ":tcp" << (host.empty() ? "" : (" -h \"" + host + "\"")) << " -p " << port << " -t " << timeout;
os << ":ssl" << (host.empty() ? "" : (" -h \"" + host + "\"")) << " -p " << port << " -t " << timeout;

IceStorm::FinderPrx finder{communicator, os.str()};
try
{
Expand All @@ -176,13 +179,13 @@ run(const shared_ptr<Ice::Communicator>& communicator, const Ice::StringSeq& arg
}
}

if(!defaultManager)
if (!defaultManager)
{
consoleErr << args[0] << ": no manager proxies configured" << endl;
return 1;
}

IceStorm::Parser p(communicator, defaultManager, managers);
IceStorm::Parser p(communicator, *defaultManager, managers);
int status = 0;

if(!commands.empty()) // Commands were given
Expand Down
18 changes: 9 additions & 9 deletions cpp/src/IceStorm/Instance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Instance::Instance(const string& instanceName,
shared_ptr<Ice::ObjectAdapter> publishAdapter,
shared_ptr<Ice::ObjectAdapter> topicAdapter,
shared_ptr<Ice::ObjectAdapter> nodeAdapter,
NodePrxPtr nodeProxy) :
optional<NodePrx> nodeProxy) :
_instanceName(instanceName),
_serviceName(name),
_communicator(std::move(communicator)),
Expand Down Expand Up @@ -74,14 +74,14 @@ Instance::Instance(const string& instanceName,
string p = properties->getProperty(name + ".ReplicatedTopicManagerEndpoints");
if(!p.empty())
{
const_cast<Ice::ObjectPrxPtr&>(_topicReplicaProxy) =
_communicator->stringToProxy("dummy:" + p);
const_cast<optional<Ice::ObjectPrx>&>(_topicReplicaProxy) =
Ice::ObjectPrx{_communicator, "dummy:" + p};
}
p = properties->getProperty(name + ".ReplicatedPublishEndpoints");
if(!p.empty())
{
const_cast<Ice::ObjectPrxPtr&>(_publisherReplicaProxy) =
_communicator->stringToProxy("dummy:" + p);
const_cast<optional<Ice::ObjectPrx>&>(_publisherReplicaProxy) =
Ice::ObjectPrx{_communicator, "dummy:" + p};
}
}

Expand Down Expand Up @@ -184,7 +184,7 @@ Instance::node() const
return _node;
}

NodePrxPtr
optional<NodePrx>
Instance::nodeProxy() const
{
return _nodeProxy;
Expand All @@ -202,13 +202,13 @@ Instance::timer() const
return _timer;
}

Ice::ObjectPrxPtr
optional<Ice::ObjectPrx>
Instance::topicReplicaProxy() const
{
return _topicReplicaProxy;
}

Ice::ObjectPrxPtr
optional<Ice::ObjectPrx>
Instance::publisherReplicaProxy() const
{
return _publisherReplicaProxy;
Expand Down Expand Up @@ -296,7 +296,7 @@ PersistentInstance::PersistentInstance(const string& instanceName,
shared_ptr<Ice::ObjectAdapter> publishAdapter,
shared_ptr<Ice::ObjectAdapter> topicAdapter,
shared_ptr<Ice::ObjectAdapter> nodeAdapter,
NodePrxPtr nodeProxy) :
optional<NodePrx> nodeProxy) :
Instance(
instanceName,
name,
Expand Down
16 changes: 8 additions & 8 deletions cpp/src/IceStorm/Instance.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class Instance
Instance(const std::string&, const std::string&, std::shared_ptr<Ice::Communicator>,
std::shared_ptr<Ice::ObjectAdapter>, std::shared_ptr<Ice::ObjectAdapter>,
std::shared_ptr<Ice::ObjectAdapter> = nullptr,
IceStormElection::NodePrxPtr = std::nullopt);
std::optional<IceStormElection::NodePrx> = std::nullopt);

virtual ~Instance();

Expand All @@ -67,11 +67,11 @@ class Instance
std::shared_ptr<Ice::ObjectAdapter> nodeAdapter() const;
std::shared_ptr<IceStormElection::Observers> observers() const;
std::shared_ptr<IceStormElection::NodeI> node() const;
IceStormElection::NodePrxPtr nodeProxy() const;
std::optional<IceStormElection::NodePrx> nodeProxy() const;
std::shared_ptr<TraceLevels> traceLevels() const;
IceUtil::TimerPtr timer() const;
Ice::ObjectPrxPtr topicReplicaProxy() const;
Ice::ObjectPrxPtr publisherReplicaProxy() const;
std::optional<Ice::ObjectPrx> topicReplicaProxy() const;
std::optional<Ice::ObjectPrx> publisherReplicaProxy() const;
std::shared_ptr<IceStorm::Instrumentation::TopicManagerObserver> observer() const;
std::shared_ptr<TopicReaper> topicReaper() const;

Expand All @@ -92,15 +92,15 @@ class Instance
const std::shared_ptr<Ice::ObjectAdapter> _publishAdapter;
const std::shared_ptr<Ice::ObjectAdapter> _topicAdapter;
const std::shared_ptr<Ice::ObjectAdapter> _nodeAdapter;
const IceStormElection::NodePrxPtr _nodeProxy;
const std::optional<IceStormElection::NodePrx> _nodeProxy;
const std::shared_ptr<TraceLevels> _traceLevels;
const std::chrono::seconds _discardInterval;
const std::chrono::milliseconds _flushInterval;
const std::chrono::milliseconds _sendTimeout;
const int _sendQueueSizeMax;
const SendQueueSizeMaxPolicy _sendQueueSizeMaxPolicy;
const Ice::ObjectPrxPtr _topicReplicaProxy;
const Ice::ObjectPrxPtr _publisherReplicaProxy;
const std::optional<Ice::ObjectPrx> _topicReplicaProxy;
const std::optional<Ice::ObjectPrx> _publisherReplicaProxy;
const std::shared_ptr<TopicReaper> _topicReaper;
std::shared_ptr<IceStormElection::NodeI> _node;
std::shared_ptr<IceStormElection::Observers> _observers;
Expand All @@ -120,7 +120,7 @@ class PersistentInstance final : public Instance
PersistentInstance(const std::string&, const std::string&, std::shared_ptr<Ice::Communicator>,
std::shared_ptr<Ice::ObjectAdapter>, std::shared_ptr<Ice::ObjectAdapter>,
std::shared_ptr<Ice::ObjectAdapter> = nullptr,
IceStormElection::NodePrxPtr = std::nullopt);
std::optional<IceStormElection::NodePrx> = std::nullopt);

const IceDB::Env& dbEnv() const { return _dbEnv; }
LLUMap lluMap() const { return _lluMap; }
Expand Down
14 changes: 12 additions & 2 deletions cpp/src/IceStorm/Instrumentation.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,15 +153,25 @@ class TopicManagerObserver
* @param name The topic name.
* @param old The previous observer, only set when updating an existing observer.
*/
virtual ::std::shared_ptr<::IceStorm::Instrumentation::TopicObserver> getTopicObserver(const ::std::string& svc, const ::std::string& name, const ::std::shared_ptr<TopicObserver>& old) = 0;
virtual std::shared_ptr<IceStorm::Instrumentation::TopicObserver> getTopicObserver(
const std::string& svc,
const std::string& name,
const std::shared_ptr<TopicObserver>& old) = 0;

/**
* This method should return an observer for the given subscriber.
* @param topic The name of the topic subscribed.
* @param link The proxy of the linked topic if this subscriber forwards events to a linked topic.
* @param old The previous observer, only set when updating an existing observer.
*/
virtual ::std::shared_ptr<::IceStorm::Instrumentation::SubscriberObserver> getSubscriberObserver(const ::std::string& svc, const ::std::string& topic, const ::Ice::ObjectPrxPtr& prx, const ::IceStorm::QoS& q, const ::IceStorm::TopicPrxPtr& link, SubscriberState s, const ::std::shared_ptr<SubscriberObserver>& old) = 0;
virtual ::std::shared_ptr<::IceStorm::Instrumentation::SubscriberObserver> getSubscriberObserver(
const std::string& svc,
const std::string& topic,
const Ice::ObjectPrx& prx,
const IceStorm::QoS& q,
const std::optional<IceStorm::TopicPrx>& link,
SubscriberState s,
const std::shared_ptr<SubscriberObserver>& old) = 0;

/**
* IceStorm calls this method on initialization. The add-in implementing this interface can use this object to
Expand Down
25 changes: 13 additions & 12 deletions cpp/src/IceStorm/InstrumentationI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ class SubscriberHelper : public MetricsHelperT<SubscriberMetrics>
};
static Attributes attributes;

SubscriberHelper(const string& svc, const string& topic, const Ice::ObjectPrxPtr& proxy,
const IceStorm::QoS& qos, IceStorm::TopicPrxPtr link, SubscriberState state) :
SubscriberHelper(const string& svc, const string& topic, const Ice::ObjectPrx& proxy,
const IceStorm::QoS& qos, optional<IceStorm::TopicPrx> link, SubscriberState state) :
_service(svc), _topic(topic), _proxy(proxy), _qos(qos), _link(std::move(link)), _state(state)
{
}
Expand Down Expand Up @@ -176,7 +176,7 @@ class SubscriberHelper : public MetricsHelperT<SubscriberMetrics>
return _id;
}

const Ice::ObjectPrxPtr&
const Ice::ObjectPrx&
getProxy() const
{
return _proxy;
Expand Down Expand Up @@ -209,9 +209,9 @@ class SubscriberHelper : public MetricsHelperT<SubscriberMetrics>

const string& _service;
const string& _topic;
const Ice::ObjectPrxPtr& _proxy;
const Ice::ObjectPrx& _proxy;
const IceStorm::QoS& _qos;
const IceStorm::TopicPrxPtr _link;
const optional<IceStorm::TopicPrx> _link;
const SubscriberState _state;
mutable string _id;
};
Expand Down Expand Up @@ -347,13 +347,14 @@ TopicManagerObserverI::getTopicObserver(const string& service, const string& top
}

shared_ptr<SubscriberObserver>
TopicManagerObserverI::getSubscriberObserver(const string& svc,
const string& topic,
const Ice::ObjectPrxPtr& proxy,
const IceStorm::QoS& qos,
const IceStorm::TopicPrxPtr& link,
SubscriberState state,
const shared_ptr<SubscriberObserver>& old)
TopicManagerObserverI::getSubscriberObserver(
const string& svc,
const string& topic,
const Ice::ObjectPrx& proxy,
const IceStorm::QoS& qos,
const optional<IceStorm::TopicPrx>& link,
SubscriberState state,
const shared_ptr<SubscriberObserver>& old)
{
if(_subscribers.isEnabled())
{
Expand Down
10 changes: 5 additions & 5 deletions cpp/src/IceStorm/InstrumentationI.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,11 @@ class TopicManagerObserverI final : public IceStorm::Instrumentation::TopicManag
const std::shared_ptr<IceStorm::Instrumentation::TopicObserver>&) override;

std::shared_ptr<IceStorm::Instrumentation::SubscriberObserver>
getSubscriberObserver(const std::string &,
const std::string &,
const Ice::ObjectPrxPtr &,
const IceStorm::QoS &,
const IceStorm::TopicPrxPtr &,
getSubscriberObserver(const std::string&,
const std::string&,
const Ice::ObjectPrx&,
const IceStorm::QoS&,
const std::optional<IceStorm::TopicPrx>&,
IceStorm::Instrumentation::SubscriberState,
const std::shared_ptr<IceStorm::Instrumentation::SubscriberObserver>&) override;

Expand Down
Loading

0 comments on commit fb0e7ba

Please sign in to comment.