To exchange information over the network between master and worker we need to use protocol.
buildbot.worker.protocols.base
provide interfaces to implement wrappers around protocol specific calls, so other classes which use them do not need to know about protocol calls or handle protocol specific exceptions.
Following classes are describing the worker -> master part of the protocol.
In order to support old workers, we must make sure we do not change the current pb protocol. This is why we implement a Impl vs Proxy
methods. All the objects that are referenced from the workers for remote calls have an Impl
and a Proxy
base classes in this module.
Impl
classes are subclassed by buildbot master, and implement the actual logic for the protocol api. Proxy
classes are implemented by the worker/master protocols, and implements the demux and de-serialization of protocol calls.
On worker sides, those proxy objects are replaced by a proxy object having a single method to call master side methods: