emit method
void
emit(
- dynamic data
Implementation
void emit(data) {
//print(data);
switch (data['type']) {
case "StasisStart":
Channel channel;
// if (data['channel']['name'].contains('UnicastRTP')) {
// // print('Channel ${channel.name} has entered our application');
// // print(channel.handlers);
// // dialed = true;
// if (statisChannels[data['channel']['id']] == null) {
// throw "Channel should be in stasis channels";
// } else {
// print("Channel already in stsais Channels");
// if (statisChannels[data['channel']['id']]!.handlers.isEmpty) {
// throw "channel event handlers should not be empty";
// }
// }
// }
StasisStart stasisStart = StasisStart.fromJson(data);
channel = Channel.fromJson(data['channel']);
if (statisChannels[data['channel']['id']] != null) {
// if (stasisStart.args.length > 0) {
// throw "This channel should be in statisChannels";
// }
if (statisChannels[data['channel']['id']]!.handlers.isNotEmpty) {
channel.handlers = statisChannels[data['channel']['id']]!.handlers;
statisChannels[data['channel']['id']] = channel;
}
} else {
statisChannels[data['channel']['id']] = channel;
}
if (handlers[data['type']] != null) {
handlers[data['type']]!(stasisStart, channel);
}
//print("Channel event handlers: ${channel.handlers}");
// if (channel.handlers.isEmpty) {
// throw "Channel event handlers cannot be empty";
// }
if (channel.handlers[data['type']] != null) {
//print("Event ${data['type']} fired from channel in stasis");
channel.handlers[data['type']]!(stasisStart, channel);
}
case 'StasisEnd':
Channel channel;
StasisEnd stasisEnd = StasisEnd.fromJson(data);
channel = Channel.fromJson(data['channel']);
if (statisChannels[data['channel']['id']] != null) {
// if (stasisStart.args.length > 0) {
// throw "This channel should be in statisChannels";
// }
if (statisChannels[data['channel']['id']]!.handlers.isNotEmpty) {
channel.handlers = statisChannels[data['channel']['id']]!.handlers;
statisChannels[data['channel']['id']] = channel;
}
} else {
statisChannels[data['channel']['id']] = channel;
}
if (handlers[data['type']] != null) {
handlers[data['type']]!(stasisEnd, stasisEnd.channel);
}
if (channel.handlers[data['type']] != null) {
//print("Event ${data['type']} fired from channel in stasis");
channel.handlers[data['type']]!(stasisEnd, stasisEnd.channel);
}
statisChannels.remove(channel.id);
case 'ChannelDestroyed':
ChannelDestroyed channelDestroyed = ChannelDestroyed.fromJson(data);
Channel channel = Channel.fromJson(data['channel']);
if (statisChannels[data['channel']['id']] != null) {
// if (stasisStart.args.length > 0) {
// throw "This channel should be in statisChannels";
// }
if (statisChannels[data['channel']['id']]!.handlers.isNotEmpty) {
channel.handlers = statisChannels[data['channel']['id']]!.handlers;
statisChannels[data['channel']['id']] = channel;
}
} else {
statisChannels[data['channel']['id']] = channel;
}
if (handlers[data['type']] != null) {
//print(data['type']);
// Channel channel = Channel.fromJson(data['channel']);
// if (statisChannels[channel.id] == null) {
// statisChannels[channel.id] = channel;
// }
handlers[data['type']]!(channelDestroyed, channel);
}
if (statisChannels[data['channel']['id']] != null) {
//Channel channel = statisChannels[data['channel']['id']]!;
if (channel.handlers[data['type']] != null) {
//print("Event fired from existing channel");
channel.handlers[data['type']]!(channelDestroyed, channel);
}
}
case 'ChannelStateChange':
ChannelStateChange channelStateChange =
ChannelStateChange.fromJson(data);
Channel channel = Channel.fromJson(data['channel']);
if (statisChannels[data['channel']['id']] != null) {
// if (stasisStart.args.length > 0) {
// throw "This channel should be in statisChannels";
// }
if (statisChannels[data['channel']['id']]!.handlers.isNotEmpty) {
channel.handlers = statisChannels[data['channel']['id']]!.handlers;
statisChannels[data['channel']['id']] = channel;
}
} else {
statisChannels[data['channel']['id']] = channel;
}
if (handlers[data['type']] != null) {
handlers[data['type']]!(channelStateChange, channel);
}
if (statisChannels[data['channel']['id']] != null) {
if (channel.handlers[data['type']] != null) {
//print("Event fired from existing channel");
channel.handlers[data['type']]!(channelStateChange, channel);
}
}
case 'ChannelDtmfReceived':
ChannelDtmfReceived channelDtmfReceived =
ChannelDtmfReceived.fromJson(data);
Channel channel = Channel.fromJson(data['channel']);
if (statisChannels[data['channel']['id']] != null) {
// if (stasisStart.args.length > 0) {
// throw "This channel should be in statisChannels";
// }
if (statisChannels[data['channel']['id']]!.handlers.isNotEmpty) {
channel.handlers = statisChannels[data['channel']['id']]!.handlers;
statisChannels[data['channel']['id']] = channel;
}
} else {
statisChannels[data['channel']['id']] = channel;
}
if (handlers[data['type']] != null) {
handlers[data['type']]!(channelDtmfReceived, channel);
}
if (statisChannels[data['channel']['id']] != null) {
if (channel.handlers[data['type']] != null) {
//print("Event fired from existing channel");
channel.handlers[data['type']]!(channelDtmfReceived, channel);
}
}
case 'PlaybackFinished':
print(data);
PlaybackFinished playbackFinished = PlaybackFinished.fromJson(data);
Playback playback = Playback.fromJson(data['playback']);
print(statisPlaybacks[data['playback']['id']]);
if (statisPlaybacks[data['playback']['id']] != null) {
// if (stasisStart.args.length > 0) {
// throw "This channel should be in statisChannels";
// }
if (statisPlaybacks[data['playback']['id']]!.handlers.isNotEmpty) {
playback.handlers =
statisPlaybacks[data['playback']['id']]!.handlers;
statisPlaybacks[data['playback']['id']] = playback;
}
} else {
statisPlaybacks[data['playback']['id']] = playback;
}
// if (handlers[data['type']] != null) {
// handlers[data['type']]!(playbackFinished, playback);
// }
if (statisPlaybacks[data['playback']['id']] != null) {
if (playback.handlers[data['type']] != null) {
//print("Event fired from existing channel");
playback.handlers[data['type']]!(playbackFinished, playback);
}
}
//handlers[data['type']]!(data);
}
}