diff --git a/bin/tcp_server.dart b/bin/tcp_server.dart index 7293436..cf7d126 100644 --- a/bin/tcp_server.dart +++ b/bin/tcp_server.dart @@ -1,7 +1,7 @@ /* * @Author : Linloir * @Date : 2022-10-06 15:44:16 - * @LastEditTime : 2022-10-22 17:56:35 + * @LastEditTime : 2022-10-22 20:35:50 * @Description : */ @@ -42,7 +42,13 @@ void main(List arguments) async { var token = controllerMap[controller]; controllerMap.remove(controller); tokenMap[token]?.remove(controller); - } + }, + onDone: () { + var token = controllerMap[controller]; + controllerMap.remove(controller); + tokenMap[token]?.remove(controller); + }, + cancelOnError: true ); controller.requestStreamBroadcast.listen( (request) async { @@ -140,11 +146,11 @@ void main(List arguments) async { continue; } } - //Update Fetch Histories - await DataBaseHelper().setFetchHistoryFor( - tokenID: device, - newTimeStamp: message.timestamp - ); + // //Update Fetch Histories + // await DataBaseHelper().setFetchHistoryFor( + // tokenID: device, + // newTimeStamp: message.timestamp + // ); } var targetUserID = message.receiverID; var targetDevices = await DataBaseHelper().fetchTokenIDsViaUserID(userID: targetUserID); @@ -170,11 +176,11 @@ void main(List arguments) async { continue; } } - //Update Fetch Histories - await DataBaseHelper().setFetchHistoryFor( - tokenID: device, - newTimeStamp: message.timestamp - ); + // //Update Fetch Histories + // await DataBaseHelper().setFetchHistoryFor( + // tokenID: device, + // newTimeStamp: message.timestamp + // ); } var response = await onSendMessage(request, socket); controller.outStream.add(response); diff --git a/lib/tcpcontroller/controller.dart b/lib/tcpcontroller/controller.dart index 41c0cb7..4018458 100644 --- a/lib/tcpcontroller/controller.dart +++ b/lib/tcpcontroller/controller.dart @@ -1,7 +1,7 @@ /* * @Author : Linloir * @Date : 2022-10-08 15:10:04 - * @LastEditTime : 2022-10-20 20:20:00 + * @LastEditTime : 2022-10-22 20:30:36 * @Description : */ @@ -66,9 +66,11 @@ class TCPController { print('[L] [CLOSED ]-----------------------'); print('[L] Connection closed: ${socket.address}:${socket.port}<-${socket.remoteAddress}:${socket.remotePort}'); _requestStreamController.close(); + _responseStreamController.close(); }).onError((error, stackTrace) { print(error); _requestStreamController.addError(error ?? Error()); + _responseStreamController.addError(error ?? Error()); },); // socket.listen( // _pullRequest, diff --git a/lib/tcpcontroller/request.dart b/lib/tcpcontroller/request.dart index dcef501..d6f0270 100644 --- a/lib/tcpcontroller/request.dart +++ b/lib/tcpcontroller/request.dart @@ -1,7 +1,7 @@ /* * @Author : Linloir * @Date : 2022-10-08 15:14:26 - * @LastEditTime : 2022-10-20 16:33:16 + * @LastEditTime : 2022-10-22 20:21:10 * @Description : */ import 'dart:convert'; @@ -16,6 +16,7 @@ enum RequestType { modifyPassword('MODIFYPASSWD'), //Modify user password modifyProfile ('MODIFYPROFILE'), //Modify user profile sendMessage ('SENDMSG'), //Send message + ackMessage ('ACKMSG'), //Ack forwarded messages, update fetch history fetchMessage ('FETCHMSG'), //Fetch message findFile ('FINDFILE'), //Find file by md5 before transmitting the file fetchFile ('FETCHFILE'), //Fetch file and file md5 by message md5