Skip to content

Commit e77db2b

Browse files
committed
update all
1 parent 179205c commit e77db2b

File tree

11 files changed

+85
-14
lines changed

11 files changed

+85
-14
lines changed

android/app/src/main/java/com/tvd12/ezyfoxserver/client/EzyClientProxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public static EzyClientProxy getInstance() {
4343
public void register(BinaryMessenger messenger) {
4444
if(registered.compareAndSet(false, true)) {
4545
doRegister(messenger);
46-
mainEventsLoop.start();
4746
}
4847
}
4948

@@ -56,6 +55,7 @@ private void doRegister(BinaryMessenger messenger) {
5655
run(call.method, (Map)call.arguments, result);
5756
});
5857
this.addDefaultMethods();
58+
this.mainEventsLoop.start();
5959
}
6060

6161
public void run(String method, Map params, MethodChannel.Result callback) {

android/app/src/main/java/com/tvd12/ezyfoxserver/client/proxy/EzyCreateClientMethod.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public void handle(EzyEvent event) {
103103
params.put("clientName", client.getName());
104104
params.put("eventType", eventTypeName);
105105
params.put("data", eventData);
106-
methodChannel.invokeMethod("onSocketEvent", params);
106+
methodChannel.invokeMethod("ezy.event", params);
107107
}
108108
}
109109

@@ -128,6 +128,6 @@ public void handle(EzyArray data) {
128128
params.put("clientName", client.getName());
129129
params.put("command", commandName);
130130
params.put("data", commandData);
131-
methodChannel.invokeMethod("onSocketData", params);
131+
methodChannel.invokeMethod("ezy.data", params);
132132
}
133133
}

ios/Runner.xcodeproj/project.pbxproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,11 @@
11321132
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
11331133
ENABLE_BITCODE = NO;
11341134
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
1135+
GCC_PREPROCESSOR_DEFINITIONS = (
1136+
"DEBUG=1",
1137+
"$(inherited)",
1138+
"EZY_DEBUG=1",
1139+
);
11351140
HEADER_SEARCH_PATHS = "$(inherited)";
11361141
INFOPLIST_FILE = Runner/Info.plist;
11371142
LD_RUNPATH_SEARCH_PATHS = (

ios/Runner/AppDelegate.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import Flutter
88
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
99
) -> Bool {
1010
GeneratedPluginRegistrant.register(with: self)
11+
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
12+
EzyClientProxy.getInstance().registration(controller.binaryMessenger)
1113
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
1214
}
1315
}

ios/client/EzyClientProxy.mm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ -(void)registration:(NSObject<FlutterBinaryMessenger>*)messager {
4343
if (_registed) {
4444
return;
4545
}
46+
_registed = true;
4647
_methodChannel = [FlutterMethodChannel
4748
methodChannelWithName:@"com.tvd12.ezyfoxserver.client"
4849
binaryMessenger:messager];

ios/client/proxy/EzyMethodProxy.mm

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ void handle(EzyEvent* event) {
142142
[params setValue:[EzyNativeStrings newNSString:mClient->getName().c_str()] forKey:@"clientName"];
143143
[params setValue:[EzyNativeStrings newNSString:eventTypeName.c_str()] forKey:@"eventType"];
144144
[params setValue:eventData forKey:@"data"];
145-
[mMethodChannel invokeMethod:@"onSocketEvent" arguments:params];
145+
[mMethodChannel invokeMethod:@"ezy.event" arguments:params];
146146
}
147147
};
148148

@@ -171,7 +171,7 @@ void handle(entity::EzyArray* data) {
171171
[params setValue:[EzyNativeStrings newNSString:mClient->getName().c_str()] forKey:@"clientName"];
172172
[params setValue:[EzyNativeStrings newNSString:commandName.c_str()] forKey:@"command"];
173173
[params setValue:commandData forKey:@"data"];
174-
[mMethodChannel invokeMethod:@"onSocketData" arguments:params];
174+
[mMethodChannel invokeMethod:@"ezy.data" arguments:params];
175175
}
176176
};
177177

@@ -273,7 +273,7 @@ @implementation EzyDisconnectMethod
273273

274274
- (NSObject *)invoke:(NSDictionary *)params {
275275
EzyClient* client = getClient(params);
276-
int reason = 0;
276+
int reason = constant::Close;
277277
if([params valueForKey:@"reason"])
278278
reason = [[params valueForKey:@"reason"] intValue];
279279
client->disconnect(reason);

ios/client/serializer/EzyNativeDataDeserializer.mm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ - (void)deserializeToArray:(EzyArray*)output value:(NSObject*)value {
5151
EzyObject* fobject = (EzyObject*)[self fromReadableMap:dict];
5252
output->addObject(fobject);
5353
}
54+
else if([value isKindOfClass:[NSNull class]]) {
55+
output->addNull();
56+
}
5457
else {
5558
@throw [NSException exceptionWithName:@"NSInvalidArgumentException"
5659
reason: [NSString stringWithFormat:@"has no deserializer for value: %@", value]

lib/ezyclient/ezy_client.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class EzyClient {
1717
late String name;
1818
late EzyZone? zone;
1919
late EzyUser? me;
20-
late EzySetup? setup;
20+
late EzySetup setup;
2121
late EzyHandlerManager handlerManager;
2222
late String? privateKey;
2323
late int sessionId;

lib/ezyclient/ezy_clients.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import 'ezy_logger.dart';
77
class EzyClients {
88
late String defaultClientName;
99
late Map<String, EzyClient> clients;
10-
static EzyClients _INSTANCE = EzyClients();
10+
static final EzyClients _INSTANCE = EzyClients._();
1111

12-
EzyClients() {
12+
EzyClients._() {
1313
this.defaultClientName = "";
1414
this.clients = Map();
1515
}

lib/ezyclient/ezy_proxy.dart

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,58 @@
11
import 'package:flutter/services.dart';
2+
import 'package:hello_flutter/ezyclient/ezy_clients.dart';
3+
import 'package:hello_flutter/ezyclient/ezy_logger.dart';
4+
5+
import 'ezy_client.dart';
26

37
class EzyProxy {
4-
static const MethodChannel _methodChannel = const MethodChannel('com.tvd12.ezyfoxserver.client');
8+
late MethodChannel _methodChannel;
9+
10+
static final EzyProxy _INSTANCE = EzyProxy._();
11+
12+
EzyProxy._() {
13+
this._methodChannel = const MethodChannel('com.tvd12.ezyfoxserver.client');
14+
this._methodChannel.setMethodCallHandler(this._handleSocketEventDatas);
15+
}
516

6-
EzyProxy._();
17+
static EzyProxy getInstance() {
18+
return _INSTANCE;
19+
}
20+
21+
Future<void> _handleSocketEventDatas(MethodCall call) async {
22+
// type inference will work here avoiding an explicit cast
23+
switch(call.method) {
24+
case "ezy.event":
25+
_onSocketEvent(call.arguments);
26+
break;
27+
case "ezy.data":
28+
_onSocketData(call.arguments);
29+
break;
30+
default:
31+
EzyLogger.warn("there is no handler for method: ${call.method}, ignore it");
32+
}
33+
}
34+
35+
void _onSocketEvent(Map arguments) {
36+
String clientName = arguments["clientName"];
37+
String eventType = arguments["eventType"];
38+
dynamic data = arguments["data"];
39+
EzyClient client = _getClient(clientName);
40+
client.handleEvent(eventType, data);
41+
}
42+
43+
void _onSocketData(Map arguments) {
44+
String clientName = arguments["clientName"];
45+
String command = arguments["command"];
46+
dynamic data = arguments["data"];
47+
EzyClient client = _getClient(clientName);
48+
client.handleData(command, data);
49+
}
750

851
static Future<T?> run<T>(String method, Map params) {
9-
return _methodChannel.invokeMethod(method, params);
52+
return EzyProxy.getInstance()._methodChannel.invokeMethod(method, params);
53+
}
54+
55+
EzyClient _getClient(String clientName) {
56+
return EzyClients.getInstance().getClient(clientName);
1057
}
1158
}

0 commit comments

Comments
 (0)