feat:Android and iOS monitor use DoricContext as parameter
This commit is contained in:
@@ -33,14 +33,14 @@ - (instancetype)initWithScript:(NSString *)script source:(NSString *)source extr
|
||||
if (self = [super init]) {
|
||||
_driver = [DoricNativeDriver instance];
|
||||
_pluginInstanceMap = [NSMutableDictionary new];
|
||||
[[DoricContextManager instance] createContext:self script:script source:source];
|
||||
_headNodes = [NSMutableDictionary new];
|
||||
DoricRootNode *rootNode = [[DoricRootNode alloc] initWithContext:self];
|
||||
_rootNode = rootNode;
|
||||
_script = script;
|
||||
_source = source;
|
||||
_initialParams = [@{@"width": @(0), @"height": @(0)} mutableCopy];
|
||||
_extra = extra;
|
||||
[[DoricContextManager instance] createContext:self script:script source:source];
|
||||
_headNodes = [NSMutableDictionary new];
|
||||
DoricRootNode *rootNode = [[DoricRootNode alloc] initWithContext:self];
|
||||
_rootNode = rootNode;
|
||||
[self callEntity:DORIC_ENTITY_CREATE, nil];
|
||||
}
|
||||
return self;
|
||||
|
@@ -21,7 +21,6 @@
|
||||
//
|
||||
|
||||
#import "DoricContextManager.h"
|
||||
#import "DoricContext.h"
|
||||
|
||||
@interface DoricContextManager ()
|
||||
|
||||
@@ -52,11 +51,11 @@ + (instancetype)instance {
|
||||
|
||||
- (void)createContext:(DoricContext *)context script:(NSString *)script source:(NSString *)source {
|
||||
context.contextId = [NSString stringWithFormat:@"%ld", (long) ++self.counter];
|
||||
[context.driver createContext:context.contextId script:script source:source];
|
||||
dispatch_sync(self.mapQueue, ^() {
|
||||
NSValue *value = [NSValue valueWithNonretainedObject:context];
|
||||
self.doricContextMap[context.contextId] = value;
|
||||
});
|
||||
[context.driver createContext:context.contextId script:script source:source];
|
||||
}
|
||||
|
||||
- (DoricContext *)getContext:(NSString *)contextId {
|
||||
|
@@ -42,6 +42,4 @@
|
||||
|
||||
- (void)ensureSyncInMainQueue:(dispatch_block_t)block;
|
||||
|
||||
- (NSString *)aliasWithContextId:(NSString *)contextId;
|
||||
|
||||
@end
|
||||
|
@@ -9,6 +9,7 @@ typedef NS_ENUM(NSInteger, DoricLogType) {
|
||||
DoricLogTypeWarning = 1,
|
||||
DoricLogTypeError = 2,
|
||||
};
|
||||
@class DoricContext;
|
||||
|
||||
@protocol DoricMonitorProtocol <NSObject>
|
||||
/**
|
||||
@@ -17,7 +18,7 @@ typedef NS_ENUM(NSInteger, DoricLogType) {
|
||||
* @param source Which source file
|
||||
* @param e exception which is thrown within doric sdk
|
||||
*/
|
||||
- (void)onException:(NSException *)exception source:(NSString *)source;
|
||||
- (void)onException:(NSException *)exception inContext:(DoricContext *)context;
|
||||
|
||||
/**
|
||||
* @param type The priority/type of this log message.
|
||||
|
@@ -61,10 +61,6 @@ + (instancetype)instance {
|
||||
return ret;
|
||||
}
|
||||
|
||||
- (NSString *)aliasWithContextId:(NSString *)contextId {
|
||||
return [[DoricContextManager instance] getContext:contextId].source;
|
||||
}
|
||||
|
||||
- (DoricAsyncResult<JSValue *> *)invokeDoricMethod:(NSString *)method arguments:(va_list)args {
|
||||
DoricAsyncResult *ret = [[DoricAsyncResult alloc] init];
|
||||
NSMutableArray *array = [[NSMutableArray alloc] init];
|
||||
@@ -113,7 +109,7 @@ - (DoricAsyncResult *)invokeContextEntity:(NSString *)contextId method:(NSString
|
||||
[ret setupResult:jsValue];
|
||||
} @catch (NSException *exception) {
|
||||
[ret setupError:exception];
|
||||
[self.jsExecutor.registry onException:exception source:[self aliasWithContextId:contextId]];
|
||||
[self.jsExecutor.registry onException:exception inContext:[[DoricContextManager instance] getContext:contextId]];
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
@@ -136,7 +132,7 @@ - (DoricAsyncResult *)invokeContextEntity:(NSString *)contextId method:(NSString
|
||||
[ret setupResult:jsValue];
|
||||
} @catch (NSException *exception) {
|
||||
[ret setupError:exception];
|
||||
[self.jsExecutor.registry onException:exception source:[self aliasWithContextId:contextId]];
|
||||
[self.jsExecutor.registry onException:exception inContext:[[DoricContextManager instance] getContext:contextId]];
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
@@ -153,7 +149,7 @@ - (DoricAsyncResult *)createContext:(NSString *)contextId script:(NSString *)scr
|
||||
[ret setupResult:@YES];
|
||||
} @catch (NSException *exception) {
|
||||
[ret setupError:exception];
|
||||
[self.jsExecutor.registry onException:exception source:source];
|
||||
[self.registry onException:exception inContext:[[DoricContextManager instance] getContext:contextId]];
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
@@ -170,7 +166,7 @@ - (DoricAsyncResult *)destroyContext:(NSString *)contextId {
|
||||
[ret setupResult:@YES];
|
||||
} @catch (NSException *exception) {
|
||||
[ret setupError:exception];
|
||||
[self.jsExecutor.registry onException:exception source:[self aliasWithContextId:contextId]];
|
||||
[self.jsExecutor.registry onException:exception inContext:[[DoricContextManager instance] getContext:contextId]];
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
|
@@ -80,8 +80,8 @@ @interface DoricDefaultMonitor : NSObject <DoricMonitorProtocol>
|
||||
@end
|
||||
|
||||
@implementation DoricDefaultMonitor
|
||||
- (void)onException:(NSException *)exception source:(NSString *)source {
|
||||
DoricLog(@"DefaultMonitor - source: %@- onException - %@", source, exception.reason);
|
||||
- (void)onException:(NSException *)exception inContext:(DoricContext *)context {
|
||||
DoricLog(@"DefaultMonitor - source: %@- onException - %@", context.source, exception.reason);
|
||||
}
|
||||
|
||||
- (void)onLog:(DoricLogType)type message:(NSString *)message {
|
||||
@@ -187,9 +187,9 @@ - (void)registerMonitor:(id <DoricMonitorProtocol>)monitor {
|
||||
[self.monitors addObject:monitor];
|
||||
}
|
||||
|
||||
- (void)onException:(NSException *)exception source:(NSString *)source {
|
||||
- (void)onException:(NSException *)exception inContext:(DoricContext *)context {
|
||||
for (id <DoricMonitorProtocol> monitor in self.monitors) {
|
||||
[monitor onException:exception source:source];
|
||||
[monitor onException:exception inContext:context];
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -62,7 +62,7 @@ - (instancetype)init {
|
||||
- (void)initJSEngine {
|
||||
self.jsExecutor = [DoricJSCoreExecutor new];
|
||||
}
|
||||
|
||||
|
||||
- (void)initJSExecutor {
|
||||
__weak typeof(self) _self = self;
|
||||
NSMutableDictionary *envDic = [self.innerEnvironmentDictionary mutableCopy];
|
||||
@@ -140,7 +140,7 @@ - (void)initDoricEnvironment {
|
||||
[self.jsExecutor loadJSScript:[self packageModuleScript:DORIC_MODULE_LIB content:jsContent]
|
||||
source:[@"Module://" stringByAppendingString:DORIC_MODULE_LIB]];
|
||||
} @catch (NSException *exception) {
|
||||
[self.registry onException:exception source:@"InitEnvironment"];
|
||||
[self.registry onException:exception inContext:nil];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ - (void)callbackTimer:(NSTimer *)timer {
|
||||
@try {
|
||||
[self invokeDoricMethod:DORIC_TIMER_CALLBACK, timerId, nil];
|
||||
} @catch (NSException *exception) {
|
||||
[self.registry onException:exception source:@"Timer"];
|
||||
[self.registry onException:exception inContext:nil];
|
||||
[self.registry onLog:DoricLogTypeError
|
||||
message:[NSString stringWithFormat:@"Timer Callback error:%@", exception.reason]];
|
||||
}
|
||||
|
@@ -87,7 +87,7 @@ - (id)findClass:(Class)clz target:(id)target context:(DoricContext *)context met
|
||||
[invocation invoke];
|
||||
} @catch (NSException *exception) {
|
||||
DoricLog(@"CallNative Error:%@", exception.reason);
|
||||
[context.driver.registry onException:exception source:context.source];
|
||||
[context.driver.registry onException:exception inContext:context];
|
||||
}
|
||||
};
|
||||
|
||||
|
@@ -44,7 +44,7 @@ - (void)resolve:(id)result {
|
||||
setExceptionCallback:^(NSException *e) {
|
||||
[self.context.driver.registry
|
||||
onException:e
|
||||
source:self.context.source];
|
||||
inContext:self.context];
|
||||
}];
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ - (void)reject:(id)result {
|
||||
setExceptionCallback:^(NSException *e) {
|
||||
[self.context.driver.registry
|
||||
onException:e
|
||||
source:self.context.source];
|
||||
inContext:self.context];
|
||||
}];
|
||||
}
|
||||
@end
|
||||
|
@@ -108,7 +108,7 @@ - (id)findClass:(Class)clz target:(id)target method:(NSString *)name promise:(Do
|
||||
[invocation invoke];
|
||||
} @catch (NSException *exception) {
|
||||
DoricLog(@"CallNative Error:%@", exception.reason);
|
||||
[self.doricContext.driver.registry onException:exception source:self.doricContext.source];
|
||||
[self.doricContext.driver.registry onException:exception inContext:self.doricContext];
|
||||
}
|
||||
};
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
|
Reference in New Issue
Block a user