IScriptingHost

<< 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

   {

      /// <summary>

      /// 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);

 

      /// <summary>

      /// 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; }

 

      /// <summary>

      /// 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);

 

      /// <summary>

      /// 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);

 

      /// <summary>

      /// 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);

 

      /// <summary>

      /// 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);

 

      /// <summary>

      /// 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);

 

      /// <summary>

      /// Timer-Event der im Script für periodische Aufgaben verwendet werden kann (das

      /// Intervall kann im Plugin konfiguriert werden).

      /// </summary>

      event System.Action TimerElapsed;

   }

}