Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
e216564f
Commit
e216564f
authored
May 02, 2017
by
yangxiaodong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor
parent
904a6933
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
90 deletions
+15
-90
ConsumerInvoker.cs
src/Cap.Consistency/Internal/ConsumerInvoker.cs
+15
-90
No files found.
src/Cap.Consistency/Internal/ConsumerInvoker.cs
View file @
e216564f
...
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
...
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
using
Cap.Consistency.Abstractions
;
using
Cap.Consistency.Abstractions
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.Logging
;
using
Microsoft.Extensions.Logging
;
using
Newtonsoft.Json
;
namespace
Cap.Consistency.Internal
namespace
Cap.Consistency.Internal
{
{
...
@@ -16,29 +17,15 @@ namespace Cap.Consistency.Internal
...
@@ -16,29 +17,15 @@ namespace Cap.Consistency.Internal
private
readonly
ObjectMethodExecutor
_executor
;
private
readonly
ObjectMethodExecutor
_executor
;
protected
readonly
ConsumerContext
_consumerContext
;
protected
readonly
ConsumerContext
_consumerContext
;
private
Dictionary
<
string
,
object
>
_arguments
;
public
ConsumerInvoker
(
ILogger
logger
,
public
ConsumerInvoker
(
ILogger
logger
,
IServiceProvider
serviceProvider
,
IServiceProvider
serviceProvider
,
ConsumerContext
consumerContext
,
ConsumerContext
consumerContext
)
{
ObjectMethodExecutor
objectMethodExecutor
)
{
if
(
logger
==
null
)
{
throw
new
ArgumentNullException
(
nameof
(
logger
));
}
if
(
consumerContext
==
null
)
{
throw
new
ArgumentNullException
(
nameof
(
consumerContext
));
}
if
(
objectMethodExecutor
==
null
)
{
throw
new
ArgumentNullException
(
nameof
(
objectMethodExecutor
));
}
_logger
=
logger
;
_logger
=
logger
??
throw
new
ArgumentNullException
(
nameof
(
logger
))
;
_serviceProvider
=
serviceProvider
;
_serviceProvider
=
serviceProvider
;
_consumerContext
=
consumerContext
;
_consumerContext
=
consumerContext
??
throw
new
ArgumentNullException
(
nameof
(
consumerContext
))
;
_executor
=
ObjectMethodExecutor
.
Create
(
_consumerContext
.
ConsumerDescriptor
.
MethodInfo
,
_executor
=
ObjectMethodExecutor
.
Create
(
_consumerContext
.
ConsumerDescriptor
.
MethodInfo
,
_consumerContext
.
ConsumerDescriptor
.
ImplType
.
GetTypeInfo
()
);
_consumerContext
.
ConsumerDescriptor
.
ImplType
Info
);
}
}
...
@@ -50,8 +37,16 @@ namespace Cap.Consistency.Internal
...
@@ -50,8 +37,16 @@ namespace Cap.Consistency.Internal
try
{
try
{
var
obj
=
ActivatorUtilities
.
GetServiceOrCreateInstance
(
_serviceProvider
,
_consumerContext
.
ConsumerDescriptor
.
ImplType
);
var
obj
=
ActivatorUtilities
.
GetServiceOrCreateInstance
(
_serviceProvider
,
_consumerContext
.
ConsumerDescriptor
.
ImplTypeInfo
.
AsType
());
_executor
.
Execute
(
obj
,
null
);
var
bodyString
=
Encoding
.
UTF8
.
GetString
(
_consumerContext
.
DeliverMessage
.
Body
);
var
firstParameter
=
_executor
.
MethodParameters
[
0
];
object
firstParameterObj
=
null
;
if
(
firstParameter
!=
null
)
{
firstParameterObj
=
JsonConvert
.
DeserializeObject
(
bodyString
,
firstParameter
.
ParameterType
);
}
_executor
.
Execute
(
obj
,
firstParameterObj
);
return
Task
.
CompletedTask
;
return
Task
.
CompletedTask
;
}
}
finally
{
finally
{
...
@@ -65,75 +60,5 @@ namespace Cap.Consistency.Internal
...
@@ -65,75 +60,5 @@ namespace Cap.Consistency.Internal
}
}
}
}
private
object
_controller
;
private
async
Task
InvokeConsumerMethodAsync
()
{
var
controllerContext
=
_consumerContext
;
var
executor
=
_executor
;
var
controller
=
_controller
;
var
arguments
=
_arguments
;
var
orderedArguments
=
ConsumerMethodExecutor
.
PrepareArguments
(
arguments
,
executor
);
var
logger
=
_logger
;
object
result
=
null
;
try
{
var
returnType
=
executor
.
MethodReturnType
;
if
(
returnType
==
typeof
(
void
))
{
executor
.
Execute
(
controller
,
orderedArguments
);
result
=
new
object
();
}
else
if
(
returnType
==
typeof
(
Task
))
{
await
(
Task
)
executor
.
Execute
(
controller
,
orderedArguments
);
result
=
new
object
();
}
//else if (executor.TaskGenericType == typeof(IActionResult)) {
// result = await (Task<IActionResult>)executor.Execute(controller, orderedArguments);
// if (result == null) {
// throw new InvalidOperationException(
// Resources.FormatActionResult_ActionReturnValueCannotBeNull(typeof(IActionResult)));
// }
//}
//else if (executor.IsTypeAssignableFromIActionResult) {
// if (_executor.IsMethodAsync) {
// result = (IActionResult)await _executor.ExecuteAsync(controller, orderedArguments);
// }
// else {
// result = (IActionResult)_executor.Execute(controller, orderedArguments);
// }
// if (result == null) {
// throw new InvalidOperationException(
// Resources.FormatActionResult_ActionReturnValueCannotBeNull(_executor.TaskGenericType ?? returnType));
// }
//}
//else if (!executor.IsMethodAsync) {
// var resultAsObject = executor.Execute(controller, orderedArguments);
// result = resultAsObject as IActionResult ?? new ObjectResult(resultAsObject) {
// DeclaredType = returnType,
// };
//}
//else if (executor.TaskGenericType != null) {
// var resultAsObject = await executor.ExecuteAsync(controller, orderedArguments);
// result = resultAsObject as IActionResult ?? new ObjectResult(resultAsObject) {
// DeclaredType = executor.TaskGenericType,
// };
//}
//else {
// // This will be the case for types which have derived from Task and Task<T> or non Task types.
// throw new InvalidOperationException(Resources.FormatActionExecutor_UnexpectedTaskInstance(
// executor.MethodInfo.Name,
// executor.MethodInfo.DeclaringType));
//}
//_result = result;
// logger.ActionMethodExecuted(controllerContext, result);
}
finally
{
}
}
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment