session-ios/Signal/src/audio/incall_audio/AudioSocket.m

37 lines
1.3 KiB
Objective-C

#import "AudioSocket.h"
@implementation AudioSocket
+(AudioSocket*) audioSocketOver:(SrtpSocket*)srtpSocket {
require(srtpSocket != nil);
AudioSocket* p = [AudioSocket new];
p->srtpSocket = srtpSocket;
return p;
}
-(void) startWithHandler:(PacketHandler*)handler untilCancelled:(TOCCancelToken*)untilCancelledToken {
require(handler != nil);
requireState(!started);
started = true;
PacketHandlerBlock valueHandler = ^(RtpPacket* rtpPacket) {
require(rtpPacket != nil);
require([rtpPacket isKindOfClass:[RtpPacket class]]);
[handler handlePacket:[EncodedAudioPacket encodedAudioPacketWithAudioData:[rtpPacket payload]
andSequenceNumber:[rtpPacket sequenceNumber]]];
};
[srtpSocket startWithHandler:[PacketHandler packetHandler:valueHandler
withErrorHandler:[handler errorHandler]]
untilCancelled:untilCancelledToken];
}
-(void) send:(EncodedAudioPacket*)audioPacket {
require(audioPacket != nil);
RtpPacket* rtpPacket = [RtpPacket rtpPacketWithDefaultsAndSequenceNumber:[audioPacket sequenceNumber]
andPayload:[audioPacket audioData]];
[srtpSocket secureAndSendRtpPacket:rtpPacket];
}
@end