commit 07/10/2025
This commit is contained in:
@@ -60,25 +60,32 @@ class TCP_Android_Command_Server {
|
||||
Logger.info { "Start communicating with IPMT/IPM with IP $key" }
|
||||
val din = socket.getInputStream()
|
||||
val dout = socket.getOutputStream()
|
||||
while (isActive) {
|
||||
if (din.available() > 0) {
|
||||
val bb = ByteArray(din.available())
|
||||
din.read(bb)
|
||||
// B4A format, 4 bytes di depan adalah size
|
||||
val str = String(bb, 4, bb.size - 4)
|
||||
str.split("@").map { it.trim() }.filter { ValidString(it) }
|
||||
.forEach {
|
||||
process_command(key,it) { reply ->
|
||||
try {
|
||||
dout.write(String_to_Byte_Android(reply))
|
||||
} catch (e: Exception) {
|
||||
logcb.accept("Failed to send reply to $key, Message : $e")
|
||||
try{
|
||||
while (isActive) {
|
||||
if (din.available() > 0) {
|
||||
val bb = ByteArray(din.available())
|
||||
din.read(bb)
|
||||
// B4A format, 4 bytes di depan adalah size
|
||||
val str = String(bb, 4, bb.size - 4)
|
||||
println("Received command from $key : $str")
|
||||
str.split("@").map { it.trim() }.filter { ValidString(it) }
|
||||
.forEach {
|
||||
process_command(key,it) { reply ->
|
||||
try {
|
||||
dout.write(String_to_Byte_Android(reply))
|
||||
} catch (e: Exception) {
|
||||
logcb.accept("Failed to send reply to $key, Message : $e")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e : Exception){
|
||||
logcb.accept("Exception in communication with $key, Message : ${e.message}")
|
||||
}
|
||||
|
||||
logcb.accept("Finished communicatiing with $key")
|
||||
CloseSocket(socket)
|
||||
socketMap.remove(key)
|
||||
}
|
||||
|
||||
@@ -98,6 +105,14 @@ class TCP_Android_Command_Server {
|
||||
return false
|
||||
}
|
||||
|
||||
private fun CloseSocket(socket : Socket) {
|
||||
try {
|
||||
socket.close()
|
||||
} catch (e: Exception) {
|
||||
Logger.error { "Failed to close socket, Message : ${e.message}" }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a String to ByteArray in prefix AsyncStream format in B4X
|
||||
* @param str The input string
|
||||
@@ -184,33 +199,30 @@ class TCP_Android_Command_Server {
|
||||
val data = pj.GetData()
|
||||
pj.Close()
|
||||
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),
|
||||
"PAGING",
|
||||
"NORMAL",
|
||||
pj.filePath.absolutePathString(),
|
||||
pj.broadcastzones
|
||||
)
|
||||
if (db.queuepagingDB.Add(qp)){
|
||||
logcb.accept("Paging audio inserted to queue paging table from Android $key, file ${pj.filePath.absolutePathString()}")
|
||||
cb.accept(parts[0]+";OK@")
|
||||
} else {
|
||||
logcb.accept("Failed to insert paging audio to queue paging table from Android $key, file ${pj.filePath.absolutePathString()}")
|
||||
cb.accept(parts[0]+";NG@")
|
||||
}
|
||||
|
||||
val result = audioPlayer.WavWriter(data, pj.filePath.absolutePathString(), true)
|
||||
if (result.success){
|
||||
val qp = QueuePaging(
|
||||
0u,
|
||||
LocalDateTime.now().format(datetimeformat1),
|
||||
"PAGING",
|
||||
"NORMAL",
|
||||
pj.filePath.absolutePathString(),
|
||||
pj.broadcastzones
|
||||
)
|
||||
if (db.queuepagingDB.Add(qp)){
|
||||
logcb.accept("Paging audio inserted to queue paging table from Android $key, file ${pj.filePath.absolutePathString()}")
|
||||
cb.accept(parts[0]+";OK@")
|
||||
} else {
|
||||
logcb.accept("Failed to write paging audio to file ${pj.filePath.absolutePathString()}, Message : $message")
|
||||
logcb.accept("Failed to insert paging audio to queue paging table from Android $key, file ${pj.filePath.absolutePathString()}")
|
||||
cb.accept(parts[0]+";NG@")
|
||||
}
|
||||
} else {
|
||||
logcb.accept("Failed to write paging audio to file ${pj.filePath.absolutePathString()}, Message : ${result.message}")
|
||||
cb.accept(parts[0]+";NG@")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
logcb.accept("Paging stop from Android $key failed, no ongoing paging")
|
||||
cb.accept(parts[0]+";NG@")
|
||||
|
||||
Reference in New Issue
Block a user