dev
dart 67 lines 1.47 KB
Raw
1 import 'package:cw_core/utils/print_verbose.dart';
2 import 'package:cw_core/utils/proxy_socket/abstract.dart';
3 import 'dart:async';
4 import 'dart:typed_data';
5 import 'dart:io';
6
7 class ProxySocketInsecure implements ProxySocket {
8 final Socket socket;
9
10 ProxySocketInsecure(this.socket);
11
12 bool isClosed = false;
13
14 ProxyAddress get address =>
15 ProxyAddress(host: socket.remoteAddress.host, port: socket.remotePort);
16
17 @override
18 Future<void> close() async {
19 try {
20 if (isClosed) return;
21 isClosed = true;
22 return socket.close();
23 } catch (e) {
24 printV("ProxySocketInsecure: close: $e");
25 return;
26 }
27 }
28
29 @override
30 void destroy() async {
31 try {
32 if (isClosed) return;
33 isClosed = true;
34 socket.destroy();
35 } catch (e) {
36 printV("ProxySocketInsecure: destroy: $e");
37 return;
38 }
39 }
40
41 @override
42 void write(String data) {
43 try {
44 if (isClosed) {
45 printV("ProxySocketInsecure: write: socket is closed");
46 return;
47 }
48 socket.write(data);
49 } catch (e) {
50 printV("ProxySocketInsecure: write: $e");
51 return;
52 }
53 }
54
55 @override
56 StreamSubscription<List<int>> listen(Function(Uint8List event) onData,
57 {Function(Object error)? onError, Function()? onDone, bool cancelOnError = true}) {
58 return socket.listen(
59 (data) {
60 onData(Uint8List.fromList(data));
61 },
62 onError: onError,
63 onDone: onDone,
64 cancelOnError: cancelOnError,
65 );
66 }
67 }