Initial Android commit
This commit is contained in:
commit
1e2b80c13d
8521 changed files with 231475 additions and 0 deletions
161
addons/godot-twicil/helpers/irc_client_scure.gd
Normal file
161
addons/godot-twicil/helpers/irc_client_scure.gd
Normal file
|
@ -0,0 +1,161 @@
|
|||
extends Node
|
||||
class_name IrcClientSecure
|
||||
|
||||
signal response_recieved(response)
|
||||
signal http_response_recieved(type, response)
|
||||
signal http_response_failed(error_code)
|
||||
|
||||
signal ConnectedToTwitch;
|
||||
signal DisconnectedFromTwitch;
|
||||
|
||||
|
||||
export (float) var CONNECT_WAIT_TIMEOUT = 2.0
|
||||
export (float) var COMMAND_WAIT_TIMEOUT = 0.3
|
||||
|
||||
onready var __websocket_client = WebSocketClient.new();
|
||||
onready var command_queue: = Array()
|
||||
|
||||
|
||||
var http_request_queue:HttpRequestQueue
|
||||
var __websocket_peer:WebSocketPeer
|
||||
|
||||
var processing = false
|
||||
|
||||
var _host:String
|
||||
var _port:int
|
||||
|
||||
var __time_passed: = 0.0
|
||||
var __last_command_time: = 0.0
|
||||
var connection_status:int = - 1
|
||||
|
||||
var __log: = false
|
||||
|
||||
var isConnected: = false;
|
||||
|
||||
|
||||
func set_logging(state:bool)->void :
|
||||
__log = state
|
||||
|
||||
func connect_to_host(host:String, port:int)->bool:
|
||||
_host = host
|
||||
_port = port
|
||||
|
||||
|
||||
|
||||
var result:int = __websocket_client.connect_to_url(str(_host, ":", _port))
|
||||
|
||||
__websocket_peer = __websocket_client.get_peer(1)
|
||||
|
||||
set_process(true)
|
||||
__websocket_peer.set_write_mode(WebSocketPeer.WRITE_MODE_TEXT)
|
||||
|
||||
return result == OK
|
||||
|
||||
func send_command(command:String)->void :
|
||||
command_queue.append(command)
|
||||
|
||||
func Disconnect():
|
||||
__websocket_client.disconnect_from_host();
|
||||
__websocket_peer.close();
|
||||
|
||||
func IsConnected()->bool:
|
||||
return isConnected;
|
||||
|
||||
|
||||
func _log(text:String)->void :
|
||||
if __log:
|
||||
prints("[%s] %s" % [__get_time_str(), text])
|
||||
|
||||
func __get_time_str()->String:
|
||||
var time = OS.get_time()
|
||||
return str(time.hour, ":", time.minute, ":", time.second)
|
||||
|
||||
func __send_command(command:String)->int:
|
||||
var result:int = __websocket_peer.put_packet(command.to_utf8())
|
||||
|
||||
return result
|
||||
|
||||
func __process_commands()->void :
|
||||
var next_command_time:bool = __time_passed - __last_command_time >= COMMAND_WAIT_TIMEOUT
|
||||
|
||||
if command_queue.empty() or not next_command_time:
|
||||
return
|
||||
|
||||
__send_command(command_queue.pop_front() as String)
|
||||
|
||||
__last_command_time = __time_passed
|
||||
|
||||
func __process_incoming_data()->void :
|
||||
var available_packets_count: = __websocket_peer.get_available_packet_count()
|
||||
|
||||
var recieved_string:String = ""
|
||||
while available_packets_count > 0:
|
||||
var packet = __websocket_peer.get_packet()
|
||||
recieved_string += packet.get_string_from_utf8()
|
||||
|
||||
available_packets_count -= 1
|
||||
|
||||
if recieved_string:
|
||||
_log(">> %s" % recieved_string)
|
||||
|
||||
emit_signal("response_recieved", recieved_string)
|
||||
|
||||
func __parse_server_message(data):
|
||||
pass
|
||||
|
||||
func __initialize_http_request_queue()->void :
|
||||
http_request_queue = HttpRequestQueue.new()
|
||||
add_child(http_request_queue)
|
||||
|
||||
|
||||
|
||||
func _ready()->void :
|
||||
set_process(false)
|
||||
|
||||
__initialize_http_request_queue()
|
||||
|
||||
func _process(delta:float)->void :
|
||||
__time_passed += delta
|
||||
|
||||
if __websocket_client.get_connection_status() != connection_status:
|
||||
connection_status = __websocket_client.get_connection_status()
|
||||
|
||||
if connection_status == WebSocketClient.CONNECTION_CONNECTING:
|
||||
_log("Connecting to server...")
|
||||
|
||||
if connection_status == WebSocketClient.CONNECTION_CONNECTED:
|
||||
isConnected = true;
|
||||
emit_signal("ConnectedToTwitch");
|
||||
_log("Connected.")
|
||||
print("connected")
|
||||
|
||||
if connection_status == WebSocketClient.CONNECTION_DISCONNECTED:
|
||||
isConnected = false;
|
||||
emit_signal("DisconnectedFromTwitch");
|
||||
_log("Disconnected.")
|
||||
print("disconnected")
|
||||
__websocket_client = null;
|
||||
__websocket_client = WebSocketClient.new();
|
||||
__websocket_client.set_verify_ssl_enabled(false)
|
||||
|
||||
|
||||
var is_connecting:bool = connection_status == WebSocketClient.CONNECTION_CONNECTING
|
||||
var is_connected:bool = connection_status == WebSocketClient.CONNECTION_CONNECTED
|
||||
|
||||
if is_connecting or is_connected:
|
||||
__websocket_client.poll()
|
||||
|
||||
var is_peer_connected:bool = __websocket_peer.is_connected_to_host()
|
||||
|
||||
if is_peer_connected and __time_passed > CONNECT_WAIT_TIMEOUT:
|
||||
__process_commands()
|
||||
|
||||
__process_incoming_data()
|
||||
|
||||
|
||||
|
||||
func _on_http_response_recieved(content_type:String, data:PoolByteArray)->void :
|
||||
emit_signal("http_response_recieved", content_type, data)
|
||||
|
||||
func _on_http_response_failed(error_code:int)->void :
|
||||
emit_signal("http_response_failed", error_code)
|
Loading…
Add table
Add a link
Reference in a new issue