To exchange information over the network between master and worker, we need to use a 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.
The following classes describe 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
method. All the objects that are referenced from the workers for remote calls have an Impl
and a Proxy
base class 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 implement 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: