August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
A simple component for transmitting and receiving multicast packets.
Remember that multicast is an unreliable connection - packets may be lost, duplicated or reordered.
Send a file to, and receive data from multicast group address 1.2.3.4 port 1000:
Pipeline( RateControlledFileReader("myfile", rate=100000),
Multicast_transceiver("0.0.0.0", 0, "1.2.3.4", 1000),
).activate()
Pipeline( Multicast_transceiver("0.0.0.0", 1000, "1.2.3.4", 0)
ConsoleEchoer()
).activate()
Or:
Pipeline( RateControlledFileReader("myfile", rate=100000),
Multicast_transceiver("0.0.0.0", 1000, "1.2.3.4", 1000),
ConsoleEchoer()
).activate()
The data emitted by Multicast_transciever (and displayed by ConsoleEchoer) is of the form (source_address, data).
Data sent to the component's "inbox" inbox is sent to the multicast group.
Data received from the multicast group is emitted as a tuple: (source_addr, data) where data is a string of the received data.
This component ignores anything received on its "control" inbox. It is not yet possible to ask it to shut down. It does not terminate.
Multicast groups do not 'shut down', so this component never emits any signals on its "signal" outbox.
Listens for packets in the given multicast group. Any data received is sent to the receiver's outbox. The logic here is likely to be not quite ideal. When complete though, this will be preferable over the sender and receiver components since it models what multicast really is rather than what people tend to think it is.
Multicast_transciever(local_addr, local_port, remote_addr, remote_port) -> component that send and receives data to/from a multicast group.
Creates a component that sends data received on its "inbox" inbox to the specified multicast group; and sends to its "outbox" outbox tuples of the form (src_addr, data) containing data received.
Keyword arguments:
Warning!
You should be using the inbox/outbox interface, not these methods (except construction). This documentation is designed as a roadmap as to their functionalilty for maintainers and new component developers.
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
Main loop
Got a problem with the documentation? Something unclear that could be clearer? Want to help improve it? Constructive criticism is very welcome - especially if you can suggest a better rewording!
Please leave you feedback here in reply to the documentation thread in the Kamaelia blog.
-- Automatic documentation generator, 05 Jun 2009 at 03:01:38 UTC/GMT