DOCSIS-Toolkit/Logger4/ConnectionLossOperation.swift

72 lines
2.9 KiB
Swift

//
// ConnectionLossOperation.swift
// Docsis Toolkit
//
// Created by Kilian Hofmann on 15.06.17.
// Copyright © 2017 Kilian Hofmann. All rights reserved.
//
import Cocoa
class ConnectionLossOperation: Operation {
var result1: Bool = false
var result2: Bool = false
override init() {
}
override func main() {
// Get date for folder structure
let time : Date = Date()
let start: Array<String> = (NSApp.delegate as! AppDelegate).justDate.string(from: time).components(separatedBy: ".")
// Line to write
let entry: String = String(format: "%@\n", (NSApp.delegate as! AppDelegate).justTime.string(from: time))
// File manager
let fileManager: FileManager = FileManager.default
// Path to file
let file: String = NSString(format: "~/KDLog/%@.docsisplist2/%@/%@/KDLog.txt", start[2], start[1], start[0]).expandingTildeInPath
// Make all relevant directories if not present
pthread_mutex_lock(&((NSApp.delegate as! AppDelegate).lock))
let dir: NSString = NSString(format: "~/KDLog/%@.docsisplist2/%@/%@", start[2], start[1], start[0])
do {
try fileManager.createDirectory(atPath: dir.expandingTildeInPath, withIntermediateDirectories: true, attributes: nil)
}
catch let error as NSError{
NSLog("ERROR ON SUBDIRECTORY CREATION: \(error.localizedDescription)")
}
pthread_mutex_unlock(&((NSApp.delegate as! AppDelegate).lock))
// Check connection requests
let request: URLRequest = URLRequest.init(url: URL.init(string: "http://checkip.dyndns.org")!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10)
let request2: URLRequest = URLRequest.init(url: URL.init(string: "http://www.google.de")!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10)
// Generate tasks
let task1: URLSessionDataTask = (NSApp.delegate as! AppDelegate).urlSession.dataTask(with: request) {
data, response, error in
if error != nil && data == nil && self.result2 {
log(entry, path: file)
self.result2 = false;
NSLog("Internet loss logged!")
}
else if error != nil && response == nil && data == nil {
self.result1 = true;
}
}
let task2: URLSessionDataTask = (NSApp.delegate as! AppDelegate).urlSession.dataTask(with: request2) {
data, response, error in
if error != nil && data == nil && self.result1 {
log(entry, path: file)
self.result1 = false;
NSLog("Internet loss logged!")
}
else if error != nil && response == nil && data == nil {
self.result2 = true;
}
}
// Start tasks
task1.resume()
task2.resume()
}
}