- Not deleting closed sockets in sokcet map
This commit is contained in:
Linloir 2022-10-22 20:53:49 +08:00
parent 9825802e06
commit 3e575110a9
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366
3 changed files with 23 additions and 14 deletions

View File

@ -1,7 +1,7 @@
/* /*
* @Author : Linloir * @Author : Linloir
* @Date : 2022-10-06 15:44:16 * @Date : 2022-10-06 15:44:16
* @LastEditTime : 2022-10-22 17:56:35 * @LastEditTime : 2022-10-22 20:35:50
* @Description : * @Description :
*/ */
@ -42,7 +42,13 @@ void main(List<String> arguments) async {
var token = controllerMap[controller]; var token = controllerMap[controller];
controllerMap.remove(controller); controllerMap.remove(controller);
tokenMap[token]?.remove(controller); tokenMap[token]?.remove(controller);
} },
onDone: () {
var token = controllerMap[controller];
controllerMap.remove(controller);
tokenMap[token]?.remove(controller);
},
cancelOnError: true
); );
controller.requestStreamBroadcast.listen( controller.requestStreamBroadcast.listen(
(request) async { (request) async {
@ -140,11 +146,11 @@ void main(List<String> arguments) async {
continue; continue;
} }
} }
//Update Fetch Histories // //Update Fetch Histories
await DataBaseHelper().setFetchHistoryFor( // await DataBaseHelper().setFetchHistoryFor(
tokenID: device, // tokenID: device,
newTimeStamp: message.timestamp // newTimeStamp: message.timestamp
); // );
} }
var targetUserID = message.receiverID; var targetUserID = message.receiverID;
var targetDevices = await DataBaseHelper().fetchTokenIDsViaUserID(userID: targetUserID); var targetDevices = await DataBaseHelper().fetchTokenIDsViaUserID(userID: targetUserID);
@ -170,11 +176,11 @@ void main(List<String> arguments) async {
continue; continue;
} }
} }
//Update Fetch Histories // //Update Fetch Histories
await DataBaseHelper().setFetchHistoryFor( // await DataBaseHelper().setFetchHistoryFor(
tokenID: device, // tokenID: device,
newTimeStamp: message.timestamp // newTimeStamp: message.timestamp
); // );
} }
var response = await onSendMessage(request, socket); var response = await onSendMessage(request, socket);
controller.outStream.add(response); controller.outStream.add(response);

View File

@ -1,7 +1,7 @@
/* /*
* @Author : Linloir * @Author : Linloir
* @Date : 2022-10-08 15:10:04 * @Date : 2022-10-08 15:10:04
* @LastEditTime : 2022-10-20 20:20:00 * @LastEditTime : 2022-10-22 20:30:36
* @Description : * @Description :
*/ */
@ -66,9 +66,11 @@ class TCPController {
print('[L] [CLOSED ]-----------------------'); print('[L] [CLOSED ]-----------------------');
print('[L] Connection closed: ${socket.address}:${socket.port}<-${socket.remoteAddress}:${socket.remotePort}'); print('[L] Connection closed: ${socket.address}:${socket.port}<-${socket.remoteAddress}:${socket.remotePort}');
_requestStreamController.close(); _requestStreamController.close();
_responseStreamController.close();
}).onError((error, stackTrace) { }).onError((error, stackTrace) {
print(error); print(error);
_requestStreamController.addError(error ?? Error()); _requestStreamController.addError(error ?? Error());
_responseStreamController.addError(error ?? Error());
},); },);
// socket.listen( // socket.listen(
// _pullRequest, // _pullRequest,

View File

@ -1,7 +1,7 @@
/* /*
* @Author : Linloir * @Author : Linloir
* @Date : 2022-10-08 15:14:26 * @Date : 2022-10-08 15:14:26
* @LastEditTime : 2022-10-20 16:33:16 * @LastEditTime : 2022-10-22 20:21:10
* @Description : * @Description :
*/ */
import 'dart:convert'; import 'dart:convert';
@ -16,6 +16,7 @@ enum RequestType {
modifyPassword('MODIFYPASSWD'), //Modify user password modifyPassword('MODIFYPASSWD'), //Modify user password
modifyProfile ('MODIFYPROFILE'), //Modify user profile modifyProfile ('MODIFYPROFILE'), //Modify user profile
sendMessage ('SENDMSG'), //Send message sendMessage ('SENDMSG'), //Send message
ackMessage ('ACKMSG'), //Ack forwarded messages, update fetch history
fetchMessage ('FETCHMSG'), //Fetch message fetchMessage ('FETCHMSG'), //Fetch message
findFile ('FINDFILE'), //Find file by md5 before transmitting the file findFile ('FINDFILE'), //Find file by md5 before transmitting the file
fetchFile ('FETCHFILE'), //Fetch file and file md5 by message md5 fetchFile ('FETCHFILE'), //Fetch file and file md5 by message md5