receiveAllPipedTransports function
- ReceiveAllPipedTransportsOptions options
Receives all piped transports for a specific room and member by requesting piped producers at different levels.
This function sends a createReceiveAllTransportsPiped
event to the server, which checks if piped producers exist for the given room and member.
If producers are found, it calls the getPipedProducersAlt function to retrieve piped transports for levels 0, 1, and 2.
Parameters:
nsock
(io.Socket
): The socket instance used for communication.community
(String
): To connect to community edition.parameters
(ReceiveAllPipedTransportsParameters
): The parameters required to receive piped transports.roomName
(String
): The name of the room to receive piped transports.member
(String
): The name of the member to receive piped transports.- getPipedProducersAlt (
GetPipedProducersAltType
): The function to retrieve piped producers at different levels.
Example usage:
receiveAllPipedTransports(
ReceiveAllPipedTransportsOptions(
nsock: socket,
community: true,
parameters: ReceiveAllPipedTransportsParameters(
roomName: 'roomA',
member: 'userB',
getPipedProducersAlt: getPipedProducersAlt,
),
),
);
Implementation
Future<void> receiveAllPipedTransports(
ReceiveAllPipedTransportsOptions options) async {
final nsock = options.nsock;
final parameters = options.parameters;
final completer = Completer<void>();
final community = options.community;
try {
final options = ['0', '1', '2'];
String emitName = 'createReceiveAllTransportsPiped';
Map<String, dynamic> details = {
'roomName': parameters.roomName,
'member': parameters.member
};
if (community == true) {
emitName = 'createReceiveAllTransports';
details = {
'islevel': '0',
};
}
nsock.emitWithAck(
emitName,
details,
ack: (response) async {
if (response['producersExist'] == true) {
// Retrieve piped producers for each level if producers exist
for (final islevel in options) {
final optionsGetPipedProducersAlt = GetPipedProducersAltOptions(
community: community,
nsock: nsock,
islevel: islevel,
parameters: parameters,
);
await parameters.getPipedProducersAlt(
optionsGetPipedProducersAlt,
);
}
}
completer.complete();
},
);
} catch (error) {
if (kDebugMode) {
print('Error in receiveAllPipedTransports: $error');
}
completer.completeError(error);
}
return completer.future;
}