/* public Telegram (String keyword, String type, string key) { // Standard-Konstruktor this._key = key; this._keyword = keyword; this._type = type; this._parameters = new List<string>(); } */ public Telegram(Telegram t, string key) { // Dieser Konstruktor erzeugt anhand von t ein Empfangs-Bestätigungs-Telegram this._key = key; //this._keyword = "ACKNOWLEDGE"; this._type = Telegram.ACKNOWLEDGE; //this._parameters = new List<string>(); //this._parameters.Add(t.key); this.acknowledgeKey = key; }
public void SendTelegram(Telegram t) { // TODO Gesendete Telegramme müssen in einer Tabelle zwischengespeichert werden // damit bei Bedarf das Telegram erneut gesendet wird. Erst wenn das Telegram // vom Server bestätigt worden ist wird das Telegramm aus der Tabelle entfernt. // Das Telegramm wird solange erneut gesendet bis die Bestätigung beim Client // verarbeitet wurde // Sollte ein Telegram just in dem Augenblick erneut zum Server gesendet werden // wenn die Bestätigung ankommt muss der Server entsprechend reagieren (Telegramm Ignorieren oder so ähnlich) string tmp = t.ToString(); if(!t.keyWord.Equals("ACKNOWLEDGE")) this._telegramtable.addRow(t.key, DateTime.Now, "skey", tmp); this.SendPreparedTelegram(tmp, t.key); }
public static Telegram getResponse(string key, string req_id, params string[] parameters) { Telegram t = new Telegram(); t._type = Telegram.RESPONSE; t._key = key; t._requestKey = req_id; t._acknowledgeKey = null; t._connectorkey = null; t._connectorcommand = null; for(int i=0; i<=parameters.Length-1; i++) { t.addParameter(parameters[i]); } return t; }
public static Telegram getResponse(string key, string req_id) { Telegram t = new Telegram(); t._type = Telegram.RESPONSE; t._key = key; t._requestKey = req_id; t._acknowledgeKey = null; t._connectorkey = null; t._connectorcommand = null; return t; }
public static Telegram getRequest(string key, string keyword, params string[] parameters) { Telegram t = new Telegram(); t._type = Telegram.REQUEST; t._key = key; t._keyword = keyword; t._requestKey = null; t._acknowledgeKey = null; t._connectorkey = null; t._connectorcommand = null; // TODO geht das auch iwie effizienter? for(int i=0; i<=parameters.Length-1; i++) { //t._parameters.Add(parameters[i]); t.addParameter(parameters[i]); } return t; }
public static Telegram getRequest(string key, string keyword) { Telegram t = new Telegram(); t._type = Telegram.REQUEST; t._key = key; t._keyword = keyword; t._requestKey = null; t._acknowledgeKey = null; t._connectorkey = null; t._connectorcommand = null; return t; }
public static Telegram getConnector(string key, ulong conid, string cmd) { Telegram t = new Telegram(); t._type = Telegram.CONNECTOR; t._keyword = "CONNECTOR"; t._key = key; t._requestKey = null; t._acknowledgeKey = null; t._connectorkey = conid.ToString(); t._connectorcommand = cmd; return t; }
public static Telegram getConnector(string key, ulong conid, string cmd, params string[] parameters) { Telegram t = new Telegram(); t._type = Telegram.CONNECTOR; t._keyword = "CONNECTOR"; t._key = key; t._requestKey = null; t._acknowledgeKey = null; t._connectorkey = conid.ToString(); t._connectorcommand = cmd; for (int i=0; i<=parameters.Length-1; i++) { t.addParameter(parameters[i]); } return t; }
public static Telegram getAcknowledge(string key, string tid) { Telegram t = new Telegram(); t._type = Telegram.ACKNOWLEDGE; t._key = key; t._acknowledgeKey = tid; t._connectorcommand = null; t._connectorkey = null; t._requestKey = null; return t; }
public void Broadcast(Telegram t) { foreach (Session s in this._sessions) { s.SendTelegram (t); } }
public void Start() { String commandLine = null; String numBytes = null; byte[] tmpbyte = new Byte[1]; byte b = byte.Parse ("59"); this._threadstarted = true; while (this._threadstarted) { if (this._stream.DataAvailable) { commandLine = null; tmpbyte = new Byte[1]; while (!tmpbyte[0].Equals(b)) { // TODO Vorkehrungen treffen dass im Falle eines Falschen Telegrams (falsche oder fehlende byteanzahl keine endlos-schleife entsteht) this._stream.Read (tmpbyte, 0, tmpbyte.Length); numBytes += Encoding.ASCII.GetString (tmpbyte); } int i = Int16.Parse (numBytes.Substring (0, numBytes.Length - 1)); for (int j=0; j<=i-1; j++) { this._stream.Read (tmpbyte, 0, tmpbyte.Length); commandLine += Encoding.ASCII.GetString (tmpbyte); } //this.l.writeTelegramToFile (numBytes + commandLine, true); Telegram t = Telegram.Parse (numBytes + commandLine); if (!t.keyWord.Equals ("ACKNOWLEDGE")) { // Bestätigung des Empfangs des Telegrams versenden (aber nur wenn das empfange Telegramm kein ACKNOWLEDGE ist Telegram tt = new Telegram (t, this._vm.StringKey); this.SendTelegram (tt); this._telegramqueue.Enqueue (t); } else { this._telegramtable.deleteRow ("id", t [0]); } numBytes = null; } } }
public void SendTelegram(Telegram t) { this._com.SendTelegram (t); }