blob: 0f75e2b6bf8cb3cc8ee41161e2857d4322098e78 [file] [log] [blame]
using BaSys40.API.Agents;
using BaSys40.Models.Core.AssetAdministrationShell.Generics;
using BaSys40.Utils.ResultHandling;
using System.Collections.Generic;
namespace BaSys40.API.AssetAdministrationShell.Connectables
{
public class ConnectedOperation : IConnectableOperation
{
public IOperationDescription Operation { get; }
private IAssetAdministrationShell AssetAdministrationShell { get; }
private ISubModel SubModel { get; }
public event MethodCalledEventHandler OnCallMethod;
private readonly ISubModelAgent serviceImpl;
public ConnectedOperation(ISubModelAgent service, IAssetAdministrationShell aas, ISubModel subModel, IOperationDescription operationDescription)
{
AssetAdministrationShell = aas;
SubModel = subModel;
Operation = operationDescription;
serviceImpl = service;
}
public IResult InvokeLocal(List<IArgument> inputArguments, out List<IArgument> outputArguments, int timeout)
{
object result;
if (OnCallMethod != null)
result = OnCallMethod.Invoke(this, inputArguments, out outputArguments);
else
{
result = null;
outputArguments = null;
}
return new Result(result != null, result, result?.GetType());
}
public IResult InvokeRemote(List<IArgument> inputArguments, out List<IArgument> outputArguments, int timeout)
{
var result = serviceImpl.InvokeOperation(AssetAdministrationShell.Identification.Id, SubModel.Identification.Id, Operation.Identification.Id, inputArguments, out outputArguments, timeout);
return result;
}
}
}