Skip to content

Commit

Permalink
Merge pull request #3 from youngmonkeys/add-ping-config
Browse files Browse the repository at this point in the history
add ping config
  • Loading branch information
tvd12 authored Sep 9, 2021
2 parents bf2ba81 + 50be726 commit 42a6e54
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 4 deletions.
14 changes: 14 additions & 0 deletions config/EzyClientConfig.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ public class EzyClientConfig {
var clientName: String?
var zoneName: String?
var enableDebug: Bool?
var ping: EzyPingConfig = EzyPingConfig()
var reconnect: EzyReconnectConfig = EzyReconnectConfig()

func setClientName(clientName: String) -> EzyClientConfig {
self.clientName = clientName
Expand All @@ -34,6 +36,16 @@ public class EzyClientConfig {
return self
}

func setPing(ping: EzyPingConfig) -> EzyClientConfig {
self.ping = ping
return self
}

func setReconnect(reconnect: EzyReconnectConfig) -> EzyClientConfig {
self.reconnect = reconnect
return self
}

func getClientName() -> String {
if(clientName != nil) {
return clientName!
Expand All @@ -50,6 +62,8 @@ public class EzyClientConfig {
dict["zoneName"] = zoneName
dict["enableSSL"] = enableSSL
dict["enableDebug"] = enableDebug
dict["ping"] = ping.toDictionary()
dict["reconnect"] = reconnect.toDictionary()
return dict
}

Expand Down
32 changes: 32 additions & 0 deletions config/EzyPingConfig.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
//
// EzyPingConfig.swift
// freechat-swift
//
// Created by Dzung on 04/09/2021.
// Copyright © 2021 Young Monkeys. All rights reserved.
//

import Foundation

public class EzyPingConfig {

var pingPeriod: Int = 3000
var maxLostPingCount: Int = 5

func setPingPeriod(pingPeriod: Int) -> EzyPingConfig {
self.pingPeriod = pingPeriod
return self
}

func setMaxLostPingCount(maxLostPingCount: Int) -> EzyPingConfig {
self.maxLostPingCount = maxLostPingCount
return self
}

func toDictionary() -> NSDictionary {
let dict = NSMutableDictionary()
dict["pingPeriod"] = pingPeriod
dict["maxLostPingCount"] = maxLostPingCount
return dict
}
}
39 changes: 39 additions & 0 deletions config/EzyReconnectConfig.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
//
// EzyReconnectConfig.swift
// freechat-swift
//
// Created by Dzung on 04/09/2021.
// Copyright © 2021 Young Monkeys. All rights reserved.
//

import Foundation

public class EzyReconnectConfig {

var enable: Bool = true
var maxReconnectCount: Int = 5
var reconnectPeriod: Int = 3000

func setEnable(enable: Bool) -> EzyReconnectConfig {
self.enable = enable
return self
}

func setMaxReconnectCount(maxReconnectCount: Int) -> EzyReconnectConfig {
self.maxReconnectCount = maxReconnectCount
return self
}

func setReconnectPeriod(reconnectPeriod: Int) -> EzyReconnectConfig {
self.reconnectPeriod = reconnectPeriod
return self
}

func toDictionary() -> NSDictionary {
let dict = NSMutableDictionary()
dict["enable"] = enable
dict["maxReconnectCount"] = maxReconnectCount
dict["reconnectPeriod"] = reconnectPeriod
return dict
}
}
12 changes: 12 additions & 0 deletions proxy/EzyMethodProxy.mm
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,23 @@
EzyClientConfig* config = EzyClientConfig::create();
NSString* clientName = [params valueForKey:@"clientName"];
NSString* zoneName = [params valueForKey:@"zoneName"];
NSDictionary* ping = [params valueForKey:@"ping"];
NSDictionary* reconnect = [params valueForKey:@"reconnect"];
if(clientName)
config->setClientName([clientName UTF8String]);
if(zoneName)
config->setZoneName([zoneName UTF8String]);
if(ping) {
NSNumber* pingPeriod = [ping objectForKey:@"pingPeriod"];
NSNumber* maxLostPingCount = [ping objectForKey:@"maxLostPingCount"];
EzyPingConfig* pingConfig = config->getPing();
if(pingPeriod) {
pingConfig->setPingPeriod((int)[pingPeriod integerValue]);
}
if(maxLostPingCount) {
pingConfig->setMaxLostPingCount((int)[maxLostPingCount integerValue]);
}
}
if(reconnect) {
NSNumber* enable = [reconnect objectForKey:@"enable"];
NSNumber* reconnectPeriod = [reconnect objectForKey:@"reconnectPeriod"];
Expand Down
10 changes: 9 additions & 1 deletion serializer/EzyClientConfigSerializer.mm
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,20 @@ - (NSDictionary *)serialize:(void *)value {
NSDictionary* dict = [NSMutableDictionary dictionary];
[dict setValue:[EzyNativeStrings newNSString:config->getClientName().c_str()] forKey:@"clientName"];
[dict setValue:[EzyNativeStrings newNSString:config->getZoneName().c_str()] forKey:@"zoneName"];
NSDictionary* reconnectDict = [NSMutableDictionary dictionary];

EzyPingConfig* pingConfig = config->getPing();
NSDictionary* pingDict = [NSMutableDictionary dictionary];
[pingDict setValue:[NSNumber numberWithInt:pingConfig->getPingPeriod()] forKey:@"pingPeriod"];
[pingDict setValue:[NSNumber numberWithInt:pingConfig->getMaxLostPingCount()] forKey:@"maxLostPingCount"];
[dict setValue:pingDict forKey:@"ping"];

EzyReconnectConfig* reconnectConfig = config->getReconnect();
NSDictionary* reconnectDict = [NSMutableDictionary dictionary];
[reconnectDict setValue:[NSNumber numberWithInt:reconnectConfig->getMaxReconnectCount()] forKey:@"maxReconnectCount"];
[reconnectDict setValue:[NSNumber numberWithInt:reconnectConfig->getReconnectPeriod()] forKey:@"reconnectPeriod"];
[reconnectDict setValue:[NSNumber numberWithInt:reconnectConfig->isEnable()] forKey:@"enable"];
[dict setValue:reconnectDict forKey:@"reconnect"];

return dict;
}
@end
4 changes: 2 additions & 2 deletions serializer/EzyEventSerializer.mm
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,15 @@ -(NSDictionary*)serializeLostPingEvent: (EzyEvent*)event {
EzyLostPingEvent* mevent = (EzyLostPingEvent*)event;
NSDictionary* dict = [NSMutableDictionary dictionary];
int count = mevent->getCount();
[dict setValue:[NSNumber numberWithInt:count] forKey:@"reason"];
[dict setValue:[NSNumber numberWithInt:count] forKey:@"count"];
return dict;
}

-(NSDictionary*)serializeTryConnectEvent: (EzyEvent*)event {
EzyTryConnectEvent* mevent = (EzyTryConnectEvent*)event;
NSDictionary* dict = [NSMutableDictionary dictionary];
int count = mevent->getCount();
[dict setValue:[NSNumber numberWithInt:count] forKey:@"reason"];
[dict setValue:[NSNumber numberWithInt:count] forKey:@"count"];
return dict;
}

Expand Down

0 comments on commit 42a6e54

Please sign in to comment.