Hi ZeroC,
1. Are there any design or performance issues for IceStorm supporting only one level of topic linking? I can't see any and would like to be able to use n-level linking to support geographical IceStorm "distributors" without the need to unmarshall/remarshall the event in some propagating stub code.
From a (quick) review of LinkSubscriber.cpp I would change line 83 from :
toCode:if(event->forwarded || (_cost > 0 && event->cost > _cost))
I'd need to be aware of potential for cyclic subscriptions, etcCode:if(_cost > 0 && event->cost > _cost)
2. Do you think a pool of publisher threads would perform any faster than a serial loop iteration when dealing with slow subscribers. ie, assign n threads to dispatch on every (iterator+n) subscribers. The case I'm thinking of is serving to a public internet audience, 10-20% of whom may still be on 56K distributed anywhere on the globe, downloading MP3s at the same time. In the case of large or high-volume messages, wouldn't these subscribers penalise the rest if the publish is done in serial?.. I'm no networking expert, so the real cost may be negligible...
TopicI.cpp line 228
If you think this is a reasonable improvement, I'm happy to take a stab at the code changes, maybe also including COW for Event or coverting Event references to EventPtr references to save data copying also... (your notes in Event.h).Code:for(SubscriberList::iterator p = copy.begin(); p != copy.end(); ++p) { (*p)->publish(event); }
Thanks.

Reply With Quote
