blob: 37aaf56b893bf8bc83eb7c5818ceab7017011c5e [file] [log] [blame]
using BaSys40.Utils.Client;
using BaSys40.Models.Core.AssetAdministrationShell.Generics;
using BaSys40.Models.Core.AssetAdministrationShell.Implementations;
using BaSys40.Utils.ResultHandling;
using System.Collections.Generic;
using System;
using BaSys40.API.AssetAdministrationShell;
namespace BaSys40.API.ServiceProvider
{
public interface ISubmodelServiceProvider : IServiceProvider<ISubmodel>
{
ISubmodel Submodel { get; }
#region Operation - CRUD-Operations
IResult<IOperation> CreateOperation(IOperation operation);
IResult<ElementContainer<IOperation>> RetrieveOperations();
IResult<IOperation> RetrieveOperation(string operationId);
IResult DeleteOperation(string operationId);
IResult InvokeOperation(string operationId, List<IArgument> inputArguments, List<IArgument> outputArguments, int timeout);
#endregion
#region DataElement - CRUD-Operations
IResult<IDataElement> CreateDataElement(IDataElement dataElement);
IResult<ElementContainer<IDataElement>> RetrieveDataElements();
IResult<IDataElement> RetrieveDataElement(string dataElementId);
IResult<IValue> RetrieveDataElementValue(string dataElementId);
IResult UpdateDataElementValue(string dataElementId, IValue value);
IResult DeleteDataElement(string dataElementId);
void SubscribeUpdates(string dataElementId, Action<IValue> updateFunction);
void PublishUpdate(string dataElementId, IValue value);
#endregion
#region Event - CRUD-Operations
IResult<IEvent> CreateEvent(IEvent eventable);
IResult<ElementContainer<IEvent>> RetrieveEvents();
IResult<IEvent> RetrieveEvent(string eventId);
IResult ThrowEvent(IPublishableEvent publishableEvent, string topic, Action<IMessagePublishedEventArgs> MessagePublished, byte qosLevel);
IResult DeleteEvent(string eventId);
#endregion
DataElementHandler RetrieveDataElementHandler(string dataElementId);
void RegisterDataElementHandler(string dataElementId, DataElementHandler handler);
Delegate RetrieveMethodDelegate(string operationId);
void RegisterMethodCalledHandler(string operationId, Delegate handler);
void ConfigureEventHandler(IMessageClient messageClient);
}
}