That looks like a good approach to me. Alternative to a dict would just be a count of reported stocks tested against the total number of stocks, but if one stock reports twice before another reports at all, you'll get funny results. Your method is probably better, in the general case.
Cheers, Cliff On Fri, 2008-05-09 at 13:51 +0000, Alan Isaac wrote: > A question related to the observer pattern... > > Suppose I have a variant: there are stocks, mutual funds, and investors. Let > us say that funds are observers for multiple stocks, and investors are > observers for funds. Once a "month" all stocks notify their observing funds > of their end-of-month price, and *then* all fund to notify their observing > investors of their end-of-month investment value. > > What is a good way to enforce this timing? (I.e., a fund should not notify > an its investors until all stocks have reported.) > > Here is one way: > > - for each fund, create a ``reportreceived`` dict that maps stocks to > booleans (initially False) > - as each stock notifies its funds, the fund changes False to True and checks > ``all(reportreceived.values())`` to determine whether it is ok to notify > investors. > - When it is ok, the fund notifies investors and resets all the > ``reportreceived`` values. > > Is this sensible enough? What are standard and better ways? > > Thank you, > Alan Isaac > > PS I am drawing on the description of the observer pattern at > <URL:http://www.dofactory.com/Patterns/PatternObserver.aspx#_self1> > The real world aspects are just to add some concreteness. > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list