<< Klicken Sie hier um das Inhaltsverzeichnis anzuzeigen >> Navigation: Anleitungen > UdpDevice Plugin konfigurieren > IScriptingHost |
using System;
using System.Net;
using System.Net.Sockets;
namespace Sohard.Dabis.Plugins.UdpDevice
{
/// <summary>
/// Definiert Eigenschaften und Methoden die dem Scripting zur Verfügung gestellt werden.
/// </summary>
public interface IScriptingHost
{
/// Liefert einen Script-Paramter der im Plugin konfiguriert werden kann. Es wird nicht
/// zwischen Gross- und Kleinschreibung unterschieden.
/// </summary>
/// <param name="name">Der Name des Parameters.</param>
/// <param name="value">Der Wert des Parameters. Existiert der Parameter nicht,
/// wird der übergebene Weert nicht verändert.</param>
/// <returns>true falls der Parameter existiert, sonst false.</returns>
bool GetParameter(string name, ref string value);
/// Der verwendete UdpClient. Er kann für spezielle Anwendungen im Script direkt verwendet
/// werden, im Normalfall sollten aber die nachfolgenden Methoden ausreichen.
/// </summary>
UdpClient UdpClient { get; }
/// Startet den asynchronen Empfang eines UDP-Datagrammes (siehe UdpClient.BeginReceive).
/// </summary>
/// <param name="receiveCallback">Callback der aufgerufen wird sobald ein Datagramm empfangen wurde.</param>
void BeginReceive(AsyncCallback receiveCallback);
/// Beendet den asynchronen Empfang eines UDP-Datagrammes (siehe UdpClient.EndReceive).
/// </summary>
/// <param name="asyncResult">Ein IAsyncResult Objekt das von BeginReceive zurück gegeben wurde.</param>
/// <param name="remoteEP">Der Remote Endpoint der die Daten gesendet hat.</param>
/// <returns>Die empfangenen Bytes, im Fehlerfall 0.</returns>
byte[] EndReceive(IAsyncResult asyncResult, ref IPEndPoint remoteEP);
/// Beendet den asynchronen Empfang eines UDP-Datagrammes und wandelt die empfangenen
/// Daten in einen String um (siehe auch EndReceive).
/// </summary>
/// <param name="asyncResult">Ein IAsyncResult Objekt das von BeginReceive zurück gegeben wurde.</param>
/// <param name="remoteEP">Der Remote Endpoint der die Daten gesendet hat.</param>
/// <returns>Die empfangenen Bytes als ASCII-String.</returns>
string AsciiEndReceive(IAsyncResult asyncResult, ref IPEndPoint remoteEP);
/// Sendet ein Datagramm via UDP. Das Versenden erfolgt nicht direkt, sondern über eine
/// Queue, dadurch kann die Methode von mehreren Threads gleichzeitig aufgerufen werden.
/// </summary>
/// <param name="datagram">Das zu sendende Datagramm.</param>
/// <param name="delay">Verzögerung in Millisekunden; bei 0 wird das Senden nicht verzögert.</param>
/// <param name="group">Optionale Gruppe zu der das Datagramm gehört. Wird ein verzögertes
/// Datagramm nach Ablauf seiner Verzögerung versendet, werden alle Datagramme der gleichen
/// Gruppe, die vor dem versendeten Datagramm in die Queue gestellt wurden, verworfen. Damit
/// kann z.B. erreicht werden, dass aus zwei überlappenden Pulsen ein längerer Puls wird.</param>
void SendDatagram(byte[] datagram, ushort delay = 0, string group = null);
/// Sendet einen String via UDP (siehe auch SendDatagram). Das Versenden erfolgt nicht
/// direkt, sondern über eine Queue, dadurch kann die Methode von mehreren Threads
/// gleichzeitig aufgerufen werden.
/// </summary>
/// <param name="datagram">Der zu versendende String.</param>
/// <param name="delay">Verzögerung in Millisekunden; bei 0 wird das Senden nicht verzögert.</param>
/// <param name="group">Optionale Gruppe zu der das Datagramm gehört. Wird ein verzögertes
/// Datagramm nach Ablauf seiner Verzögerung versendet, werden alle Datagramme der gleichen
/// Gruppe, die vor dem versendeten Datagramm in die Queue gestellt wurden, verworfen. Damit
/// kann z.B. erreicht werden, dass aus zwei überlappenden Pulsen ein längerer Puls wird.</param>
void AsciiSendDatagram(string datagram, ushort delay = 0, string group = null);
/// Timer-Event der im Script für periodische Aufgaben verwendet werden kann (das
/// Intervall kann im Plugin konfiguriert werden).
/// </summary>
event System.Action TimerElapsed;
}
}