@ -2,7 +2,8 @@ import SessionUtilitiesKit
public final class MessageReceiveJob : NSObject , Job , NSCoding { // N S O b j e c t / N S C o d i n g c o n f o r m a n c e i s n e e d e d f o r Y a p D a t a b a s e c o m p a t i b i l i t y
public let data : Data
public let messageServerID : UInt64 ?
public let openGroupMessageServerID : UInt64 ?
public let openGroupID : String ?
public var delegate : JobDelegate ?
public var id : String ?
public var failureCount : UInt = 0
@ -12,9 +13,14 @@ public final class MessageReceiveJob : NSObject, Job, NSCoding { // NSObject/NSC
public static let maxFailureCount : UInt = 10
// MARK: I n i t i a l i z a t i o n
public init ( data : Data , messageServerID: UInt64 ? = nil ) {
public init ( data : Data , openGroupMessageServerID: UInt64 ? = nil , openGroupID : String ? = nil ) {
self . data = data
self . messageServerID = messageServerID
self . openGroupMessageServerID = openGroupMessageServerID
self . openGroupID = openGroupID
#if DEBUG
if openGroupMessageServerID != nil { assert ( openGroupID != nil ) }
if openGroupID != nil { assert ( openGroupMessageServerID != nil ) }
#endif
}
// MARK: C o d i n g
@ -22,14 +28,16 @@ public final class MessageReceiveJob : NSObject, Job, NSCoding { // NSObject/NSC
guard let data = coder . decodeObject ( forKey : " data " ) as ! Data ? ,
let id = coder . decodeObject ( forKey : " id " ) as ! String ? else { return nil }
self . data = data
self . messageServerID = coder . decodeObject ( forKey : " messageServerUD " ) as ! UInt64 ?
self . openGroupMessageServerID = coder . decodeObject ( forKey : " openGroupMessageServerID " ) as ! UInt64 ?
self . openGroupID = coder . decodeObject ( forKey : " openGroupID " ) as ! String ?
self . id = id
self . failureCount = coder . decodeObject ( forKey : " failureCount " ) as ! UInt ? ? ? 0
}
public func encode ( with coder : NSCoder ) {
coder . encode ( data , forKey : " data " )
coder . encode ( messageServerID , forKey : " messageServerID " )
coder . encode ( openGroupMessageServerID , forKey : " openGroupMessageServerID " )
coder . encode ( openGroupID , forKey : " openGroupID " )
coder . encode ( id , forKey : " id " )
coder . encode ( failureCount , forKey : " failureCount " )
}
@ -38,11 +46,11 @@ public final class MessageReceiveJob : NSObject, Job, NSCoding { // NSObject/NSC
public func execute ( ) {
Configuration . shared . storage . withAsync ( { transaction in // I n t e n t i o n a l l y c a p t u r e s e l f
do {
let ( message , proto ) = try MessageReceiver . parse ( self . data , messageServerID: self . m essageServerID, using : transaction )
try MessageReceiver . handle ( message , associatedWithProto : proto , using: transaction )
let ( message , proto ) = try MessageReceiver . parse ( self . data , openGroupMessageServerID: self . openGroupM essageServerID, using : transaction )
try MessageReceiver . handle ( message , associatedWithProto : proto , openGroupID: self . openGroupID , using: transaction )
self . handleSuccess ( )
} catch {
SNLog ( " Couldn't pars e message due to error: \( error ) . " )
SNLog ( " Couldn't receiv e message due to error: \( error ) . " )
if let error = error as ? MessageReceiver . Error , ! error . isRetryable {
self . handlePermanentFailure ( error : error )
} else {