Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question: Libarary Theory of Operation #73

Open
mstovenour opened this issue Feb 25, 2021 · 3 comments
Open

Question: Libarary Theory of Operation #73

mstovenour opened this issue Feb 25, 2021 · 3 comments

Comments

@mstovenour
Copy link
Contributor

I'd jump right in and start debugging issue #72 for you but I'm intimidated by the completely revamped library. It took me about 2 months to trace and understand the startup, discovery, message sending, and message reception of python-insteonplm. I'm not looking forward to the same reverse engineering again. By any chance, did you happen to write up even an outline of these tasks in the new library?

@mstovenour
Copy link
Contributor Author

@teharris1 could you start by outlining the rational for the topics? I clearly see a pattern but I don't understand the intent except for the most basic, obvious uses

@teharris1
Copy link
Collaborator

Topics are used by the underlying pubsub module. The pubsub module allows for a publisher/subscriber model (albeit the implementation is really a loosely coupled callback model). I chose this approach because topics are easier to follow when debugging rather than trying to follow callback threads. If you log topics then you just need to find subscribers to those topics. I also felt this was an easier way to keep separation of the layers. Have a look at the architecture:

image

@mstovenour
Copy link
Contributor Author

Thanks for that diagram. It is a good start of some class documentation.

I totally get what topics represent generically and how pub/sub works. That's not what I'm asking. I'm asking if you could document the "purpose" of topics you've defined. What I think would help anyone trying to contribute is to have a list of topic hierarchies documented with their purpose. I mean I can create any topic I want right? for any purpose. But I suspect you'd reject a random pull request that seems inconsistent with the topic usage as you've already implemented. I think I'll eventually reverse engineer all the topics but that's a pretty high bar for most people that might try to contribute.

Also I'm myopically focused on topics because, as I've found, they are the foundation of debugging and tracing the code. The logging facility faithfully traces topic publications but it is hard to understand what all that means without many hours reviewing the code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

2 participants