aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Services/ServiceExec.cs
diff options
context:
space:
mode:
authorBond-009 <bond.009@outlook.com>2019-09-02 08:19:29 +0200
committerAnthony Lavado <anthonylavado@users.noreply.github.com>2019-09-02 02:19:29 -0400
commitee637e8fecbcefe429babbbbd1325bce7c3fe991 (patch)
treee3d76fb8d753dd43d8d0cff16e199b706ba84980 /Emby.Server.Implementations/Services/ServiceExec.cs
parentcb393c215a2ea75f61d0e3e798c6a4a596d720c2 (diff)
Fix warnings, improve performance (#1665)
* Fix warnings, improve performance `QueryResult.Items` is now a `IReadOnlyList` so we don't need to allocate a new `Array` when we have a `List` (and `Items` shouldn't need to be mutable anyway) * Update Providers .csproj to latest C# * Remove extra newline from DtoService.cs * Remove extra newline from UserLibraryService.cs
Diffstat (limited to 'Emby.Server.Implementations/Services/ServiceExec.cs')
-rw-r--r--Emby.Server.Implementations/Services/ServiceExec.cs39
1 files changed, 17 insertions, 22 deletions
diff --git a/Emby.Server.Implementations/Services/ServiceExec.cs b/Emby.Server.Implementations/Services/ServiceExec.cs
index 9124b9c14..9f5f97028 100644
--- a/Emby.Server.Implementations/Services/ServiceExec.cs
+++ b/Emby.Server.Implementations/Services/ServiceExec.cs
@@ -87,8 +87,7 @@ namespace Emby.Server.Implementations.Services
var response = actionContext.ServiceAction(instance, requestDto);
- var taskResponse = response as Task;
- if (taskResponse != null)
+ if (response is Task taskResponse)
{
return GetTaskResult(taskResponse);
}
@@ -104,8 +103,7 @@ namespace Emby.Server.Implementations.Services
{
try
{
- var taskObject = task as Task<object>;
- if (taskObject != null)
+ if (task is Task<object> taskObject)
{
return await taskObject.ConfigureAwait(false);
}
@@ -136,7 +134,7 @@ namespace Emby.Server.Implementations.Services
}
catch (TypeAccessException)
{
- return null; //return null for void Task's
+ return null; // return null for void Task's
}
}
@@ -155,29 +153,22 @@ namespace Emby.Server.Implementations.Services
Id = ServiceMethod.Key(serviceType, actionName, requestType.GetMethodName())
};
- try
- {
- actionCtx.ServiceAction = CreateExecFn(serviceType, requestType, mi);
- }
- catch
- {
- //Potential problems with MONO, using reflection for fallback
- actionCtx.ServiceAction = (service, request) =>
- mi.Invoke(service, new[] { request });
- }
+ actionCtx.ServiceAction = CreateExecFn(serviceType, requestType, mi);
var reqFilters = new List<IHasRequestFilter>();
foreach (var attr in mi.GetCustomAttributes(true))
{
- var hasReqFilter = attr as IHasRequestFilter;
-
- if (hasReqFilter != null)
+ if (attr is IHasRequestFilter hasReqFilter)
+ {
reqFilters.Add(hasReqFilter);
+ }
}
if (reqFilters.Count > 0)
+ {
actionCtx.RequestFilters = reqFilters.OrderBy(i => i.Priority).ToArray();
+ }
actions.Add(actionCtx);
}
@@ -198,15 +189,19 @@ namespace Emby.Server.Implementations.Services
if (mi.ReturnType != typeof(void))
{
- var executeFunc = Expression.Lambda<ActionInvokerFn>
- (callExecute, serviceParam, requestDtoParam).Compile();
+ var executeFunc = Expression.Lambda<ActionInvokerFn>(
+ callExecute,
+ serviceParam,
+ requestDtoParam).Compile();
return executeFunc;
}
else
{
- var executeFunc = Expression.Lambda<VoidActionInvokerFn>
- (callExecute, serviceParam, requestDtoParam).Compile();
+ var executeFunc = Expression.Lambda<VoidActionInvokerFn>(
+ callExecute,
+ serviceParam,
+ requestDtoParam).Compile();
return (service, request) =>
{