mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-21 12:02:31 +01:00
rustg for UDP shipping (#7897)
The C++ UDP logging library has been swapped out with a rustg implementation. The rustg library uses non-blocking IO mode, and hopefully has less trouble than the C++ one. Though we'll have to see. It should error when the call is supposed to block. The old library has been removed.
This commit is contained in:
@@ -24,72 +24,67 @@
|
||||
| |
|
||||
@===================================@
|
||||
|
||||
You can easily send UDP Data via the UDPSHipper.dll
|
||||
The prerequisite for using this is rustg compiled with the udp_shipper feature.
|
||||
|
||||
Simply use the call() function to call the udp shipper DLL and enter your details!
|
||||
|
||||
The first bit of code needed will always be the same, You will never have to touch this, Copy-pasta all you like:
|
||||
|
||||
call("UDPShipper.dll", "send_udp_data")
|
||||
|
||||
Well thats the first part, the harder part is to input the details into DLL. Lets do that now! The syntax to add arguments to the post request is:
|
||||
|
||||
call("UDPShipper.dll", "send_udp_data")(DestinationIP, DestinationPort, Data)
|
||||
|
||||
DLL Written by Arrow768
|
||||
Rustg's rustg_udp_shipper_send function is used to send data.
|
||||
*/
|
||||
|
||||
/*
|
||||
* A generic proc for sending udp request with the aforementioned .DLL files.
|
||||
* Expected arg structure:
|
||||
* 1st arg - the destination ip
|
||||
* 2nd arg - the destination port
|
||||
* 3rd arg - The Data to send
|
||||
*
|
||||
* @return int - Error code
|
||||
* -1 indicates proc or library failure.
|
||||
/**
|
||||
* Sends data via UDP.
|
||||
*
|
||||
* addr must be formatted as "ip:port".
|
||||
* data must be a string to be sent.
|
||||
*/
|
||||
/proc/send_udp_data()
|
||||
if (args.len < 3)
|
||||
return -1
|
||||
/proc/send_udp_data(addr, data)
|
||||
#ifdef RUST_G
|
||||
# ifndef rustg_udp_shipper_send
|
||||
# error rustg_udp_shipper_send macro is not defined for rustg.
|
||||
# endif // rustg_udp_shipper_send
|
||||
|
||||
var/result = call("UDPShipper.dll", "send_udp_data")(arglist(args))
|
||||
if (!addr || !data)
|
||||
return "Not enough args."
|
||||
|
||||
return result
|
||||
. = rustg_udp_shipper_send(addr, data)
|
||||
|
||||
if (.)
|
||||
error("UDP Shipper error: [.]")
|
||||
|
||||
#else
|
||||
return
|
||||
#endif // RUST_G
|
||||
|
||||
/proc/send_gelf_log(short_message="", long_message="", level = 5, category="", additional_data=list())
|
||||
if (!config)
|
||||
return 100
|
||||
if (!config.log_gelf_enabled)
|
||||
return 101
|
||||
var/list/log_data = list()
|
||||
log_data["version"] = "1.1"
|
||||
log_data["host"] = world.name
|
||||
log_data["short_message"] = html_encode(short_message)
|
||||
log_data["long_message"] = html_encode(long_message)
|
||||
log_data["level"] = level
|
||||
log_data["_category"] = category
|
||||
log_data["_game_id"] = game_id
|
||||
if (!config)
|
||||
return "Configuration not loaded."
|
||||
if (!config.log_gelf_enabled)
|
||||
return "Gelf logging not enabled."
|
||||
var/list/log_data = list()
|
||||
log_data["version"] = "1.1"
|
||||
log_data["host"] = world.name
|
||||
log_data["short_message"] = html_encode(short_message)
|
||||
log_data["long_message"] = html_encode(long_message)
|
||||
log_data["level"] = level
|
||||
log_data["_category"] = category
|
||||
log_data["_game_id"] = game_id
|
||||
|
||||
log_data.Add(additional_data)
|
||||
var/gelf_log = json_encode(log_data)
|
||||
return send_udp_data(config.log_gelf_ip,config.log_gelf_port,gelf_log)
|
||||
log_data.Add(additional_data)
|
||||
var/gelf_log = json_encode(log_data)
|
||||
return send_udp_data(config.log_gelf_addr, gelf_log)
|
||||
|
||||
/obj/item/device/udp_debugger
|
||||
name = "udp_debugger"
|
||||
desc = "Used to debug UDP Data sent to the log server."
|
||||
icon = 'icons/obj/hacktool.dmi'
|
||||
icon_state = "hacktool-g"
|
||||
force = 5.0
|
||||
w_class = 2.0
|
||||
throwforce = 5.0
|
||||
throw_range = 15
|
||||
throw_speed = 3
|
||||
desc = "You can use this to debug sending udp logs to the log server"
|
||||
name = "udp_debugger"
|
||||
desc = "Used to debug UDP Data sent to the log server."
|
||||
icon = 'icons/obj/hacktool.dmi'
|
||||
icon_state = "hacktool-g"
|
||||
force = 5.0
|
||||
w_class = 2.0
|
||||
throwforce = 5.0
|
||||
throw_range = 15
|
||||
throw_speed = 3
|
||||
desc = "You can use this to debug sending udp logs to the log server"
|
||||
|
||||
/obj/item/device/udp_debugger/proc/raw(ip=config.log_gelf_ip,port=config.log_gelf_port,data="RAW Test String")
|
||||
return send_udp_data(ip,port,data)
|
||||
/obj/item/device/udp_debugger/proc/raw(addr=config.log_gelf_addr, data="RAW Test String")
|
||||
return send_udp_data(addr,data)
|
||||
|
||||
/obj/item/device/udp_debugger/proc/gelf(short_message="", long_message="", level = 1)
|
||||
return send_gelf_log(short_message, long_message, level)
|
||||
return send_gelf_log(short_message, long_message, level)
|
||||
|
||||
Reference in New Issue
Block a user