commit 07/10/2025
This commit is contained in:
@@ -13,7 +13,7 @@ import java.time.LocalDateTime
|
||||
* @param broadcastzones The zones to which the paging is broadcasted, is a semicolon-separated string.
|
||||
*/
|
||||
class PagingJob(val fromIP: String, val broadcastzones: String) {
|
||||
val filePath : Path = PagingResult_directory.resolve(LocalDateTime.now().format(filenameformat)+"_RAW.wav")
|
||||
val filePath : Path = PagingResult_directory.resolve("PAGING_"+fromIP+"_"+LocalDateTime.now().format(filenameformat)+".wav")
|
||||
private val bos : ByteArrayOutputStream = ByteArrayOutputStream()
|
||||
var totalBytesReceived = 0; private set
|
||||
var isRunning = true; private set
|
||||
@@ -25,7 +25,6 @@ class PagingJob(val fromIP: String, val broadcastzones: String) {
|
||||
* @param length The number of bytes to write from the data array.
|
||||
*/
|
||||
fun addData(data: ByteArray, length: Int) {
|
||||
Logger.info{"PagingJob from $fromIP, zones: $broadcastzones, received $length bytes"}
|
||||
bos.write(data, 0, length)
|
||||
totalBytesReceived += length
|
||||
}
|
||||
|
||||
@@ -66,12 +66,10 @@ class TCP_Android_Command_Server {
|
||||
din.read(bb)
|
||||
// B4A format, 4 bytes di depan adalah size
|
||||
val str = String(bb, 4, bb.size - 4)
|
||||
println("Received from $key : $str")
|
||||
str.split("@").map { it.trim() }.filter { ValidString(it) }
|
||||
.forEach {
|
||||
process_command(key,it) { reply ->
|
||||
try {
|
||||
println("Reply to $key : ${reply.length} bytes")
|
||||
dout.write(String_to_Byte_Android(reply))
|
||||
} catch (e: Exception) {
|
||||
logcb.accept("Failed to send reply to $key, Message : $e")
|
||||
@@ -155,12 +153,13 @@ class TCP_Android_Command_Server {
|
||||
}
|
||||
|
||||
"PCMFILE_START","STARTPAGINGAND" -> {
|
||||
val zones = parts.getOrElse(3) { "" }.replace(",",";")
|
||||
val zones = parts.getOrElse(1) { "" }.replace(",",";")
|
||||
if (ValidString(zones)){
|
||||
// create pagingjob
|
||||
val pj = PagingJob(key, zones)
|
||||
// masukin ke list
|
||||
listOnGoingPaging[key] = pj
|
||||
Logger.info{"PagingJob created for Android $key, zones: $zones, file: ${pj.filePath.absolutePathString()}"}
|
||||
|
||||
// start minta data dari udpreceiver
|
||||
udpreceiver.RequestDataFrom(key){
|
||||
@@ -184,10 +183,12 @@ class TCP_Android_Command_Server {
|
||||
// get remaining data
|
||||
val data = pj.GetData()
|
||||
pj.Close()
|
||||
audioPlayer.WavWriter(data, pj.filePath.absolutePathString()){
|
||||
Logger.info{"Paging job closed from Android $key, total bytes received ${data.size}, writing to file ${pj.filePath.absolutePathString()}"}
|
||||
audioPlayer.WavWriter(data, pj.filePath.absolutePathString(), true){
|
||||
success, message ->
|
||||
if (success){
|
||||
// insert to paging queue
|
||||
|
||||
val qp = QueuePaging(
|
||||
0u,
|
||||
LocalDateTime.now().format(datetimeformat1),
|
||||
@@ -235,14 +236,10 @@ class TCP_Android_Command_Server {
|
||||
// pengiriman variabel ke Android
|
||||
val username = parts.getOrElse(1) { "" }
|
||||
if (ValidString(username)){
|
||||
println("Initialize request from $key with username $username")
|
||||
val userlogin = listUserLogin.find { it.username == username }
|
||||
if (userlogin != null){
|
||||
println("User $username found in listUserLogin")
|
||||
val userdb = db.userDB.List.find { it.username == username }
|
||||
if (userdb != null){
|
||||
println("User $username found in userDB")
|
||||
println(userdb)
|
||||
val result = StringBuilder()
|
||||
result.append("ZONE")
|
||||
userdb.broadcastzones.split(";").map { it.trim() }.filter { it.isNotBlank() }.forEach {
|
||||
@@ -322,8 +319,6 @@ class TCP_Android_Command_Server {
|
||||
// send to sender
|
||||
cb.accept(result.toString())
|
||||
|
||||
println("Result so far: $result")
|
||||
println("Result size: ${result.length} bytes")
|
||||
result.clear()
|
||||
|
||||
//Append MSG, for Android only Indonesia and English
|
||||
@@ -365,11 +360,8 @@ class TCP_Android_Command_Server {
|
||||
result.append("VARPROCEDURE;").append(index).append(";").append(soundbank.TAG).append(";").append(soundbank.Description).append("@")
|
||||
}
|
||||
// send to sender
|
||||
println("Final Result: $result")
|
||||
println("Final Result size: ${result.length} bytes")
|
||||
cb.accept(result.toString())
|
||||
logcb.accept("All variables sent to $key with username $username")
|
||||
|
||||
return
|
||||
} else logcb.accept("STARTINITIALIZE failed from $key with username $username not found in userDB")
|
||||
} else logcb.accept("STARTINITIALIZE failed from $key with unregistered username $username")
|
||||
|
||||
Reference in New Issue
Block a user