[ library(notify_ports) | Reference Manual | Alphabetic Index ]

open_tagged_receiver(+Tag, +SendPort, ?ReceivePort)

Create a receiver for one or more tagging senders
an arbitrary term
a tagged-send-port structure
a tagged-receive-port structure or a variable


This predicate either creates a new receive port and connects it to an existing tagged-send port, or connects an existing receive port to an additional existing tagged-send port. The new receive port will receive all messages that are sent via the send port after the receiver has been opened. Any messages that were sent before the receiver was opened will not be received by this receiver.

Messages that arrive on ReceivePort from SendPort will get tagged with Tag, i.e. the received message will be a structure of the form

    	Tag : Message
If several senders are connected to ReceivePort, the tag can thus be used to identify the origin of the message.

Modes and Determinism


    ?-	open_tagging_sender(S1),
	open_tagged_receiver(r1s1, S1, R1),
	open_tagged_receiver(r1s2, S2, R1),
	open_tagged_receiver(r2s1, S1, R2),
	open_tagged_receiver(r2s2, S2, R2),

	send_notification(S1, m1),
	send_notification(S1, m2),
	send_notification(S2, m3),
	send_notification(S1, m4),
	send_notification(S2, m5),

	receive_notifications(R1, R1M1, _),
	receive_notifications(R2, R2M1, _).

    R1M1 = [r1s1 : m1, r1s1 : m2, r1s2 : m3, r1s1 : m4, r1s2 : m5]
    R2M1 = [r2s1 : m1, r2s1 : m2, r2s2 : m3, r2s1 : m4, r2s2 : m5]
    Yes (0.00s cpu)

See Also

open_tagging_sender / 1, send_notification / 2, receive_notifications / 3, foreachnotification / 6