- All Implemented Interfaces:
- Serializable
public class MasqueradeEvent
extends ManagerEvent
A Masquerade is used when a new channel is created to replace an existing
channel. The typical cause of this is an action such as a Redirect, Park etc.
During the Redirect a new channel will be created which has the same name as
the existing channel but with a Suffix attached such as ASYNCGOTO. The suffix
selected will depend on the actual action that cause the masquerade. As we
proxy all channels a key goal for us is for the existing proxy to end up
containing the new channel. The existing channel will eventually be renamed
with a suffix and then go on to become a zombie before it is hungup.
The masquerade event is associated a NewEvent, three renames and one hangup
event. The terminology used by asterisk is quite confusing. The 'original
channel' is the channel created as a result of the action (redirect, park
etc). The 'clone' channel is the pre-existing channel that was acted upon.
New Event: Original - the Original channel is currently holding the active
call due to the transfer/park.. event. - the Original name will be something
like ASYNCGOTO/SIP/101-0000002D:1351178863.121 Masquerade Event: Clone,
Original (e.g. SIP/101-0000002D:1351178863.121,
ASYNCGOTO/SIP/101-0000002D:1351178863.121) - swap the guts of the two
channels - for us this means that we swap the channels between the two parent
proxies. Some channel information is also copied from the clone to the
original channel (yes this terminology appears to be arse about. Remember the
'clone' is the pre-existing channel). Rename: Clone to Clone (e.g.
rename the pre-existing channel SIP/101-0000002D:1351178863.121 to
SIP/101-0000002D:1351178863.121 - start shutting down the clone
(pre-existing channel). Rename: Original to Clone's initial name Name (e.g
rename ASYNCGOTO/SIP/101-0000002D:1351178863.121,
SIP/101-0000002D:1351178863.121) Rename:Clone to Clone (e.g.
rename SIP/101-0000002D:1351178863.121 to
SIP/101-0000002D:1351178863.121 Hangup: Clone (e.g. hangup
SIP/101-0000002D:1351178863.121 Example sequence: RedirectAction:
chanel=(proxy=2) SIP/101-0000002F:1351181832.124 context=njr-operator
exten=njr-musiconhold priority=1 extraContext=null extraChannel=null
extraExten=null Dump of LiveChannels, cause:Add: (proxy=3)
ASYNCGOTO/SIP/101-0000002F:1351181837.125 ChannelProxy: (proxy=1)
SIP/110-0000002E:1351181832.123 ChannelProxy: (proxy=2)
SIP/101-0000002F:1351181832.124 ChannelProxy: (proxy=3)
ASYNCGOTO/SIP/101-0000002F:1351181837.125 dispatch=NewChannelEvent: channel:
(proxy=3) ASYNCGOTO/SIP/101-0000002F:1351181837.125 context=from-internal
exten=null state=Up dispatch=MasqueradeEvent: originalChannel:(proxy=3)
ASYNCGOTO/SIP/101-0000002F:1351181837.125 cloned from:(proxy=2)
SIP/101-0000002F:1351181832.124 Dump of LiveChannels, cause:Masquerade:
(proxy=2) ASYNCGOTO/SIP/101-0000002F:1351181837.125 ChannelProxy: (proxy=1)
SIP/110-0000002E:1351181832.123 ChannelProxy: (proxy=2)
ASYNCGOTO/SIP/101-0000002F:1351181837.125 ChannelProxy: (proxy=3)
SIP/101-0000002F:1351181832.124 RenameEvent: existing channel: (proxy=3)
SIP/101-0000002F:1351181832.124
newname=SIP/101-0000002frawExisting:SIP/101-0000002f
rawNewname:SIP/101-0000002frawUniquID:1351181832.124 Dump of
LiveChannels, cause:RenameEvent: (proxy=3)
SIP/101-0000002F:1351181832.124 ChannelProxy: (proxy=1)
SIP/110-0000002E:1351181832.123 ChannelProxy: (proxy=2)
ASYNCGOTO/SIP/101-0000002F:1351181837.125 ChannelProxy: (proxy=3)
SIP/101-0000002F:1351181832.124 dispatch=RenameEvent: existing channel:
(proxy=2) ASYNCGOTO/SIP/101-0000002F:1351181837.125
newname=SIP/101-0000002frawExisting:AsyncGoto/SIP/101-0000002f
rawNewname:SIP/101-0000002frawUniquID:1351181837.125 Dump of LiveChannels,
cause:RenameEvent: (proxy=2) SIP/101-0000002F:1351181837.125 ChannelProxy:
(proxy=1) SIP/110-0000002E:1351181832.123 ChannelProxy: (proxy=2)
SIP/101-0000002F:1351181837.125 ChannelProxy: (proxy=3)
SIP/101-0000002F:1351181832.124 dispatch=RenameEvent: existing channel:
(proxy=3) SIP/101-0000002F:1351181832.124
newname=AsyncGoto/SIP/101-0000002frawExisting:SIP/101-0000002f
rawNewname:AsyncGoto/SIP/101-0000002frawUniquID:1351181832.124 Dump
of LiveChannels, cause:RenameEvent: (proxy=3)
ASYNCGOTO/SIP/101-0000002F:1351181832.124 ChannelProxy: (proxy=1)
SIP/110-0000002E:1351181832.123 ChannelProxy: (proxy=2)
SIP/101-0000002F:1351181837.125 ChannelProxy: (proxy=3)
ASYNCGOTO/SIP/101-0000002F:1351181832.124 dispatch=BridgeEvent:
channel1:(proxy=1) SIP/110-0000002E:1351181832.123 channel2:(proxy=3)
ASYNCGOTO/SIP/101-0000002F:1351181832.124 bridgeState:Unlink
dispatch=HangupEvent: channel:(proxy=3)
ASYNCGOTO/SIP/101-0000002F:1351181832.124 cause:Normal Clearing Dump
of LiveChannels, cause:Removing: (proxy=3)
ASYNCGOTO/SIP/101-0000002F:1351181832.124 ChannelProxy: (proxy=1)
SIP/110-0000002E:1351181832.123 ChannelProxy: (proxy=2)
SIP/101-0000002F:1351181837.125 dispatch=HangupEvent: channel:(proxy=1)
SIP/110-0000002E:1351181832.123 cause:Normal Clearing Dump of LiveChannels,
cause:Removing: (proxy=1) SIP/110-0000002E:1351181832.123 ChannelProxy:
(proxy=2) SIP/101-0000002F:1351181837.125 The end result is that the original
(new) channel ends up with the clones (pre-existing) channel name. The
pre-existing proxy ends up holding the original channel with the pre-existing
channel's initial name. The masquerade event then is about ripping the guts
out of the clone (pre-existing channel) and swapping with the original (new)
channel. At the end of the swap the original (new) channel is left active (as
it has the clones guts) and the clone (pre-existing) is inactive so we can
hangup the clone as it is no longer needed.
- Author:
- bsutton
- See Also:
- Serialized Form