xcode demo app UI updates
This commit is contained in:
@@ -10,27 +10,11 @@
|
|||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "Example_OSX_App/ViewController.swift"
|
filePath = "Example_OSX_App/ViewController.swift"
|
||||||
timestampString = "489623400.349295"
|
timestampString = "490574990.533534"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "78"
|
startingLineNumber = "174"
|
||||||
endingLineNumber = "78"
|
endingLineNumber = "174"
|
||||||
landmarkName = "UI_Connect(_:)"
|
|
||||||
landmarkType = "5">
|
|
||||||
</BreakpointContent>
|
|
||||||
</BreakpointProxy>
|
|
||||||
<BreakpointProxy
|
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
||||||
<BreakpointContent
|
|
||||||
shouldBeEnabled = "No"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "Example_OSX_App/ViewController.swift"
|
|
||||||
timestampString = "489623400.349295"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "155"
|
|
||||||
endingLineNumber = "155"
|
|
||||||
landmarkName = "UI_SendData(_:)"
|
landmarkName = "UI_SendData(_:)"
|
||||||
landmarkType = "5">
|
landmarkType = "5">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -42,43 +26,11 @@
|
|||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "Example_OSX_App/ViewController.swift"
|
filePath = "Example_OSX_App/ViewController.swift"
|
||||||
timestampString = "489623686.632265"
|
timestampString = "490574990.533534"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "137"
|
startingLineNumber = "194"
|
||||||
endingLineNumber = "137"
|
endingLineNumber = "194"
|
||||||
landmarkName = "UI_Bind(_:)"
|
|
||||||
landmarkType = "5">
|
|
||||||
</BreakpointContent>
|
|
||||||
</BreakpointProxy>
|
|
||||||
<BreakpointProxy
|
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
||||||
<BreakpointContent
|
|
||||||
shouldBeEnabled = "No"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "Example_OSX_App/ViewController.swift"
|
|
||||||
timestampString = "489623690.124704"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "139"
|
|
||||||
endingLineNumber = "139"
|
|
||||||
landmarkName = "UI_Bind(_:)"
|
|
||||||
landmarkType = "5">
|
|
||||||
</BreakpointContent>
|
|
||||||
</BreakpointProxy>
|
|
||||||
<BreakpointProxy
|
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
||||||
<BreakpointContent
|
|
||||||
shouldBeEnabled = "No"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "Example_OSX_App/ViewController.swift"
|
|
||||||
timestampString = "490569637.32756"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "179"
|
|
||||||
endingLineNumber = "179"
|
|
||||||
landmarkName = "UI_ReadData(_:)"
|
landmarkName = "UI_ReadData(_:)"
|
||||||
landmarkType = "5">
|
landmarkType = "5">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -94,9 +46,7 @@
|
|||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "50"
|
startingLineNumber = "50"
|
||||||
endingLineNumber = "50"
|
endingLineNumber = "50">
|
||||||
landmarkName = "zts_socket(SOCKET_SIG)"
|
|
||||||
landmarkType = "7">
|
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
@@ -106,11 +56,11 @@
|
|||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "Example_OSX_App/ViewController.swift"
|
filePath = "Example_OSX_App/ViewController.swift"
|
||||||
timestampString = "490569637.32756"
|
timestampString = "490574990.533534"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "178"
|
startingLineNumber = "193"
|
||||||
endingLineNumber = "178"
|
endingLineNumber = "193"
|
||||||
landmarkName = "UI_ReadData(_:)"
|
landmarkName = "UI_ReadData(_:)"
|
||||||
landmarkType = "5">
|
landmarkType = "5">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10116"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
|
||||||
<capability name="box content view" minToolsVersion="7.0"/>
|
<capability name="box content view" minToolsVersion="7.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
|
|||||||
@@ -71,9 +71,10 @@ class ViewController: NSViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connect to remote host on ZeroTier virtual network
|
// CONNECT
|
||||||
@IBAction func UI_Connect(sender: AnyObject) {
|
var connect_thread : NSThread!
|
||||||
|
func attempt_connect()
|
||||||
|
{
|
||||||
// TCP
|
// TCP
|
||||||
if(selectedProtocol == SOCK_STREAM)
|
if(selectedProtocol == SOCK_STREAM)
|
||||||
{
|
{
|
||||||
@@ -103,8 +104,18 @@ class ViewController: NSViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bind a ZeroTier socket
|
// Connect to remote host on ZeroTier virtual network
|
||||||
@IBAction func UI_Bind(sender: AnyObject) {
|
@IBAction func UI_Connect(sender: AnyObject) {
|
||||||
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
|
||||||
|
self.connect_thread = NSThread(target:self, selector:"attempt_connect", object:nil)
|
||||||
|
self.connect_thread.start()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// BIND
|
||||||
|
var bind_thread : NSThread!
|
||||||
|
func attempt_bind()
|
||||||
|
{
|
||||||
// TCP
|
// TCP
|
||||||
if(selectedProtocol == SOCK_STREAM)
|
if(selectedProtocol == SOCK_STREAM)
|
||||||
{
|
{
|
||||||
@@ -146,6 +157,14 @@ class ViewController: NSViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bind a ZeroTier socket
|
||||||
|
@IBAction func UI_Bind(sender: AnyObject) {
|
||||||
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
|
||||||
|
self.bind_thread = NSThread(target:self, selector:"attempt_bind", object:nil)
|
||||||
|
self.bind_thread.start()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// TX
|
// TX
|
||||||
@IBOutlet weak var btnSend: NSButton!
|
@IBOutlet weak var btnSend: NSButton!
|
||||||
@IBAction func UI_SendData(sender: AnyObject) {
|
@IBAction func UI_SendData(sender: AnyObject) {
|
||||||
@@ -170,10 +189,6 @@ class ViewController: NSViewController {
|
|||||||
if(selectedProtocol == SOCK_STREAM)
|
if(selectedProtocol == SOCK_STREAM)
|
||||||
{
|
{
|
||||||
var buffer = [UInt8](count: 100, repeatedValue: 0)
|
var buffer = [UInt8](count: 100, repeatedValue: 0)
|
||||||
let str = "GET / HTTP/1.0\r\n\r\n"
|
|
||||||
//let str = "Welcome to the machine"
|
|
||||||
print("strlen = %d\n", str.characters.count)
|
|
||||||
let encodedDataArray = [UInt8](str.utf8)
|
|
||||||
read(accepted_sock, &buffer, 1024);
|
read(accepted_sock, &buffer, 1024);
|
||||||
print(buffer)
|
print(buffer)
|
||||||
|
|
||||||
@@ -185,6 +200,39 @@ class ViewController: NSViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Watch for incoming data
|
||||||
|
var rx_thread : NSThread!
|
||||||
|
func update_rx() {
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
sleep(1)
|
||||||
|
// TCP
|
||||||
|
if(selectedProtocol == SOCK_STREAM)
|
||||||
|
{
|
||||||
|
var len = 32
|
||||||
|
var buffer = [UInt8](count: len, repeatedValue: 0)
|
||||||
|
let n = read(accepted_sock, &buffer, len);
|
||||||
|
if(n > 0)
|
||||||
|
{
|
||||||
|
if let str = String(data: NSData(bytes: &buffer, length: len), encoding: NSUTF8StringEncoding) {
|
||||||
|
dispatch_async(dispatch_get_main_queue()) {
|
||||||
|
self.txtRX.stringValue = str
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print("not a valid UTF-8 sequence")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// UDP
|
||||||
|
if(selectedProtocol == SOCK_DGRAM)
|
||||||
|
{
|
||||||
|
// recvfrom
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Built-in SOCKS5 Proxy Server Test
|
||||||
func test_client_proxy_nsstream()
|
func test_client_proxy_nsstream()
|
||||||
{
|
{
|
||||||
// For HTTP request
|
// For HTTP request
|
||||||
@@ -216,16 +264,15 @@ class ViewController: NSViewController {
|
|||||||
outputStream?.write(encodedDataArray, maxLength: encodedDataArray.count)
|
outputStream?.write(encodedDataArray, maxLength: encodedDataArray.count)
|
||||||
|
|
||||||
// RX
|
// RX
|
||||||
//sleep(5)
|
sleep(5)
|
||||||
//inputStream?.read(&buffer, maxLength: 100)
|
inputStream?.read(&buffer, maxLength: 100)
|
||||||
//print("buffer = \(buffer)\n")
|
print("buffer = \(buffer)\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
var service_thread : NSThread!
|
var service_thread : NSThread!
|
||||||
func ztnc_start_service() {
|
func ztnc_start_service() {
|
||||||
// If you plan on using SOCKS Proxy, you don't need to initialize the RPC
|
// If you plan on using SOCKS Proxy, you don't need to initialize the RPC
|
||||||
//start_service("/Users/Joseph/utest3")
|
//start_service("/Users/Joseph/utest3")
|
||||||
|
|
||||||
// If you plan on using direct calls via RPC
|
// If you plan on using direct calls via RPC
|
||||||
start_service_and_rpc("/Users/Joseph/utest3","565799d8f65063e5");
|
start_service_and_rpc("/Users/Joseph/utest3","565799d8f65063e5");
|
||||||
}
|
}
|
||||||
@@ -244,6 +291,12 @@ class ViewController: NSViewController {
|
|||||||
self.service_thread = NSThread(target:self, selector:"ztnc_start_service", object:nil)
|
self.service_thread = NSThread(target:self, selector:"ztnc_start_service", object:nil)
|
||||||
self.service_thread.start()
|
self.service_thread.start()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Update UI on RX of data
|
||||||
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
|
||||||
|
self.rx_thread = NSThread(target:self, selector:"update_rx", object:nil)
|
||||||
|
self.rx_thread.start()
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
override var representedObject: AnyObject? {
|
override var representedObject: AnyObject? {
|
||||||
|
|||||||
@@ -32,8 +32,7 @@
|
|||||||
<rect key="frame" x="183" y="352" width="31" height="30"/>
|
<rect key="frame" x="183" y="352" width="31" height="30"/>
|
||||||
<state key="normal" title="Bind"/>
|
<state key="normal" title="Bind"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="UI_Bind:" destination="BYZ-38-t0r" eventType="touchUpInside" id="03t-PZ-jaE"/>
|
<action selector="UI_Bind:" destination="BYZ-38-t0r" eventType="touchUpInside" id="DJq-47-7gO"/>
|
||||||
<action selector="btnBind:" destination="BYZ-38-t0r" eventType="touchUpInside" id="L5k-Rt-Lwm"/>
|
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="ip address" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="6id-4C-E8W">
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="ip address" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="6id-4C-E8W">
|
||||||
|
|||||||
@@ -18,12 +18,11 @@ class ViewController: UIViewController {
|
|||||||
|
|
||||||
@IBOutlet weak var txtAddr: UITextField!
|
@IBOutlet weak var txtAddr: UITextField!
|
||||||
@IBOutlet weak var txtPort: UITextField!
|
@IBOutlet weak var txtPort: UITextField!
|
||||||
|
|
||||||
@IBOutlet weak var txtTX: UITextField!
|
@IBOutlet weak var txtTX: UITextField!
|
||||||
@IBOutlet weak var txtRX: UITextField!
|
@IBOutlet weak var txtRX: UITextField!
|
||||||
|
|
||||||
@IBOutlet weak var btnTX: UIButton!
|
@IBOutlet weak var btnTX: UIButton!
|
||||||
|
@IBOutlet weak var btnConnect: UIButton!
|
||||||
|
@IBOutlet weak var btnBind: UIButton!
|
||||||
|
|
||||||
@IBOutlet weak var btnRX: UIButton!
|
@IBOutlet weak var btnRX: UIButton!
|
||||||
@IBAction func UI_RX(sender: AnyObject) {
|
@IBAction func UI_RX(sender: AnyObject) {
|
||||||
@@ -33,12 +32,6 @@ class ViewController: UIViewController {
|
|||||||
if(selectedProtocol == SOCK_STREAM)
|
if(selectedProtocol == SOCK_STREAM)
|
||||||
{
|
{
|
||||||
var buffer = [UInt8](count: 100, repeatedValue: 0)
|
var buffer = [UInt8](count: 100, repeatedValue: 0)
|
||||||
let str = "GET / HTTP/1.0\r\n\r\n"
|
|
||||||
//let str = "Welcome to the machine"
|
|
||||||
print("strlen = %d\n", str.characters.count)
|
|
||||||
let encodedDataArray = [UInt8](str.utf8)
|
|
||||||
|
|
||||||
// read(accepted_sock, UnsafeMutablePointer<Void>([txtTX.stringValue]), 128);
|
|
||||||
read(accepted_sock, &buffer, 100);
|
read(accepted_sock, &buffer, 100);
|
||||||
print(buffer)
|
print(buffer)
|
||||||
|
|
||||||
@@ -51,7 +44,6 @@ class ViewController: UIViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@IBAction func UI_TX(sender: AnyObject) {
|
@IBAction func UI_TX(sender: AnyObject) {
|
||||||
// Use ordinary read/write calls on ZeroTier socket
|
// Use ordinary read/write calls on ZeroTier socket
|
||||||
|
|
||||||
@@ -93,9 +85,12 @@ class ViewController: UIViewController {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@IBOutlet weak var btnConnect: UIButton!
|
|
||||||
@IBAction func UI_Connect(sender: AnyObject) {
|
// CONNECT
|
||||||
|
var connect_thread : NSThread!
|
||||||
|
func attempt_connect()
|
||||||
|
{
|
||||||
// TCP
|
// TCP
|
||||||
if(selectedProtocol == SOCK_STREAM)
|
if(selectedProtocol == SOCK_STREAM)
|
||||||
{
|
{
|
||||||
@@ -125,9 +120,18 @@ class ViewController: UIViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Connect to remote host on ZeroTier virtual network
|
||||||
|
@IBAction func UI_Connect(sender: AnyObject) {
|
||||||
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
|
||||||
|
self.connect_thread = NSThread(target:self, selector:"attempt_connect", object:nil)
|
||||||
|
self.connect_thread.start()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@IBOutlet weak var btnBind: UIButton!
|
// BIND
|
||||||
@IBAction func UI_Bind(sender: AnyObject) {
|
var bind_thread : NSThread!
|
||||||
|
func attempt_bind()
|
||||||
|
{
|
||||||
// TCP
|
// TCP
|
||||||
if(selectedProtocol == SOCK_STREAM)
|
if(selectedProtocol == SOCK_STREAM)
|
||||||
{
|
{
|
||||||
@@ -161,8 +165,52 @@ class ViewController: UIViewController {
|
|||||||
}
|
}
|
||||||
print("accepted connection")
|
print("accepted connection")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UDP
|
||||||
|
if(selectedProtocol == SOCK_DGRAM)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bind a ZeroTier socket
|
||||||
|
@IBAction func UI_Bind(sender: AnyObject) {
|
||||||
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
|
||||||
|
self.bind_thread = NSThread(target:self, selector:"attempt_bind", object:nil)
|
||||||
|
self.bind_thread.start()
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Watch for incoming data
|
||||||
|
var rx_thread : NSThread!
|
||||||
|
func update_rx() {
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
sleep(1)
|
||||||
|
// TCP
|
||||||
|
if(selectedProtocol == SOCK_STREAM)
|
||||||
|
{
|
||||||
|
var len = 32
|
||||||
|
var buffer = [UInt8](count: len, repeatedValue: 0)
|
||||||
|
let n = read(accepted_sock, &buffer, len);
|
||||||
|
if(n > 0)
|
||||||
|
{
|
||||||
|
if let str = String(data: NSData(bytes: &buffer, length: len), encoding: NSUTF8StringEncoding) {
|
||||||
|
dispatch_async(dispatch_get_main_queue()) {
|
||||||
|
self.txtRX.text = str
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print("not a valid UTF-8 sequence")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// UDP
|
||||||
|
if(selectedProtocol == SOCK_DGRAM)
|
||||||
|
{
|
||||||
|
// recvfrom
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ZeroTier service thread
|
// ZeroTier service thread
|
||||||
var service_thread : NSThread!
|
var service_thread : NSThread!
|
||||||
@@ -176,8 +224,11 @@ class ViewController: UIViewController {
|
|||||||
|
|
||||||
txtNWID.text = "565799d8f65063e5"
|
txtNWID.text = "565799d8f65063e5"
|
||||||
txtTX.text = "welcome to the machine"
|
txtTX.text = "welcome to the machine"
|
||||||
txtAddr.text = "10.9.9.203"
|
txtAddr.text = "0.0.0.0"
|
||||||
|
serverAddr = "0.0.0.0"
|
||||||
txtPort.text = "8080"
|
txtPort.text = "8080"
|
||||||
|
serverPort = 8080
|
||||||
|
|
||||||
selectedProtocol = SOCK_STREAM
|
selectedProtocol = SOCK_STREAM
|
||||||
|
|
||||||
// ZeroTier Service thread
|
// ZeroTier Service thread
|
||||||
@@ -185,7 +236,13 @@ class ViewController: UIViewController {
|
|||||||
self.service_thread = NSThread(target:self, selector:"ztnc_start_service", object:nil)
|
self.service_thread = NSThread(target:self, selector:"ztnc_start_service", object:nil)
|
||||||
self.service_thread.start()
|
self.service_thread.start()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// UI RX update
|
||||||
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
|
||||||
|
self.rx_thread = NSThread(target:self, selector:"update_rx", object:nil)
|
||||||
|
self.rx_thread.start()
|
||||||
|
});
|
||||||
|
|
||||||
// Do any additional setup after loading the view, typically from a nib.
|
// Do any additional setup after loading the view, typically from a nib.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -98,20 +98,20 @@ void dwr(int level, const char *fmt, ... )
|
|||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
pid_t tid = pthread_mach_thread_np(pthread_self());
|
pid_t tid = pthread_mach_thread_np(pthread_self());
|
||||||
#endif
|
#endif
|
||||||
//#if defined(SDK_DEBUG_LOG_TO_FILE)
|
#if defined(SDK_DEBUG_LOG_TO_FILE)
|
||||||
//if(!debug_logfile) { // Try to get logfile from env
|
if(!debug_logfile) { // Try to get logfile from env
|
||||||
// debug_logfile = getenv("ZT_SDK_LOGFILE");
|
debug_logfile = getenv("ZT_SDK_LOGFILE");
|
||||||
//}
|
}
|
||||||
|
|
||||||
//if(debug_logfile) {
|
if(debug_logfile) {
|
||||||
FILE *file = fopen("/Users/Joseph/code/unity.log","a");
|
FILE *file = fopen(debug_logfile,"a");
|
||||||
fprintf(file, "%s [tid=%7d] ", timestring, tid);
|
fprintf(file, "%s [tid=%7d] ", timestring, tid);
|
||||||
vfprintf(file, fmt, ap);
|
vfprintf(file, fmt, ap);
|
||||||
fclose(file);
|
fclose(file);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
//}
|
}
|
||||||
|
|
||||||
//#endif
|
#endif
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
fprintf(stderr, "%s [tid=%7d] ", timestring, tid);
|
fprintf(stderr, "%s [tid=%7d] ", timestring, tid);
|
||||||
vfprintf(stderr, fmt, ap);
|
vfprintf(stderr, fmt, ap);
|
||||||
|
|||||||
Reference in New Issue
Block a user