/[projects]/dao/DaoMqPump2/DaoMqPump2/Transport.cs
ViewVC logotype

Diff of /dao/DaoMqPump2/DaoMqPump2/Transport.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2055 by torben, Tue Aug 27 06:28:44 2013 UTC revision 2083 by torben, Tue Nov 26 19:20:45 2013 UTC
# Line 7  using System.Diagnostics; Line 7  using System.Diagnostics;
7    
8  using IBM.WMQ;  using IBM.WMQ;
9  using MySql.Data.MySqlClient;  using MySql.Data.MySqlClient;
10    using System.Globalization;
11    
12  namespace DaoMqPump2  namespace DaoMqPump2
13  {  {
# Line 15  namespace DaoMqPump2 Line 16  namespace DaoMqPump2
16    
17          enum LogfileType {          enum LogfileType {
18              LogTransactions,              LogTransactions,
19              LogEvents              LogEvents,
20                LogDiscarded
21          }          }
22    
23          public static string SQL2MQ = "sql2mq";          public static string SQL2MQ = "sql2mq";
# Line 187  namespace DaoMqPump2 Line 189  namespace DaoMqPump2
189                          MySqlCommand updateCmd = new MySqlCommand(updateSql, sqlWriteConnection);                          MySqlCommand updateCmd = new MySqlCommand(updateSql, sqlWriteConnection);
190                          int numrows = updateCmd.ExecuteNonQuery();                          int numrows = updateCmd.ExecuteNonQuery();
191    
192                          translog.WriteLine(getNowString() + " " + msgString + "\n");                          translog.WriteLine(getNowString() + " " + msgString);
193    
194                          if (numrows != 1)                          if (numrows != 1)
195                          {                          {
# Line 276  namespace DaoMqPump2 Line 278  namespace DaoMqPump2
278                                  if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0)                                  if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0)
279                                  {                                  {
280                                      string msgString = mqMsg.ReadString(mqMsg.MessageLength);                                      string msgString = mqMsg.ReadString(mqMsg.MessageLength);
281                                      System.Console.WriteLine(msgString);                                      //System.Console.WriteLine(msgString);
282    
283    
284                                        // Hvis transaktionen starter med et ? er det ikke en gyldig transaktion
285                                        // validér ligeledes at headeren er gyldig
286                                        if ( msgString.StartsWith("?") || validateSalt2Header(msgString) == false )
287                                        {
288                                            string discarded_filename = getLogFilename(LogfileType.LogDiscarded);
289                                            using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true))
290                                            {
291                                                discardedlog.WriteLine(msgString);
292                                            }
293                                            mqMgr.Commit();//fjern den afviste transaktion fra køen
294                                            statusData.discardedCounter++;
295                                            continue; //gå frem til at tage næste transaktion fra køen
296                                        }
297    
298    
299                                      string sql = "CALL " + mq2sqlInsertQuery + "( '" + MySqlHelper.EscapeString(msgString) + "' )"; //opbygger en CALL somestoredprocedure('msgString'); sql streng                                      string sql = "CALL " + mq2sqlInsertQuery + "( '" + MySqlHelper.EscapeString(msgString) + "' )"; //opbygger en CALL somestoredprocedure('msgString'); sql streng
300    
# Line 285  namespace DaoMqPump2 Line 303  namespace DaoMqPump2
303    
304                                      if (numrows == 1)                                      if (numrows == 1)
305                                      {                                      {
306                                          translog.WriteLine(getNowString() + " " + msgString + "\n");                                          translog.WriteLine(getNowString() + " " + msgString);
307                                          mqMgr.Commit();                                          mqMgr.Commit();
308                                          statusData.counter++;                                          statusData.counter++;
309                                      }                                      }
# Line 395  namespace DaoMqPump2 Line 413  namespace DaoMqPump2
413              Hashtable connProperties = new Hashtable();              Hashtable connProperties = new Hashtable();
414              connProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);              connProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);
415              connProperties.Add(MQC.HOST_NAME_PROPERTY, controller.mqHost);              connProperties.Add(MQC.HOST_NAME_PROPERTY, controller.mqHost);
416              connProperties.Add(MQC.CHANNEL_PROPERTY, controller.mqChannel); //WARNING: Hardcoded Channel Value !!!              connProperties.Add(MQC.CHANNEL_PROPERTY, controller.mqChannel);
417              return connProperties;              return connProperties;
418          }          }
419    
# Line 407  namespace DaoMqPump2 Line 425  namespace DaoMqPump2
425              DateTime now = DateTime.Now;              DateTime now = DateTime.Now;
426              string filename = controller.logDirectory + "\\";              string filename = controller.logDirectory + "\\";
427    
428                //Find uge nr
429                DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
430                Calendar myCal = CultureInfo.InvariantCulture.Calendar;//System.Globalization
431                int week = myCal.GetWeekOfYear(now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
432    
433              switch (type)              switch (type)
434              {              {
435                  case LogfileType.LogEvents:                  case LogfileType.LogEvents:
# Line 416  namespace DaoMqPump2 Line 439  namespace DaoMqPump2
439                  case LogfileType.LogTransactions:                  case LogfileType.LogTransactions:
440                      filename += "transactionlog_";                      filename += "transactionlog_";
441                      break;                      break;
442                    case LogfileType.LogDiscarded:
443                        filename += "discardedlog_";
444                        break;
445              }              }
446    
447    
448              filename += name + "_" + now.Year.ToString("D4") + now.Month.ToString("D2") + ".log";              filename += name + "_" + now.Year.ToString("D4") + "_W" + week.ToString("D2") + ".log";
449    
450              return filename;              return filename;
451          }          }
# Line 431  namespace DaoMqPump2 Line 457  namespace DaoMqPump2
457              return now.ToString("s");              return now.ToString("s");
458          }          }
459    
460            private bool validateSalt2Header(string salt2String)
461            {
462                int result;
463    
464                string afsender = salt2String.Substring(0, 5);
465                string modtager = salt2String.Substring(5, 5);
466                string afsenderTegnSaet = salt2String.Substring(10, 6);
467                string standardNavn = salt2String.Substring(16, 6);
468                string standardVersion = salt2String.Substring(22, 3);
469                string afsenderSekvensnr = salt2String.Substring(25, 6);
470                string afsenderTidsstempel = salt2String.Substring(31, 14);
471                string afsenderBakkeIdent = salt2String.Substring(45, 5);
472                string modtagerBakkeIdent = salt2String.Substring(50, 5);
473                string transaktionForkortelse = salt2String.Substring(55, 4);
474                string transaktionsLaengde = salt2String.Substring(59, 5);
475                string prioritet = salt2String.Substring(64, 1);
476    
477                if (int.TryParse(standardVersion.Trim(), out result) == false) // standardVersion _skal_ være en int
478                {
479                    return false;
480                }
481    
482                if (int.TryParse(afsenderSekvensnr.Trim(), out result) == false) // afsenderSekvensnr _skal_ være en int
483                {
484                    return false;
485                }
486    
487                if (int.TryParse(afsenderTidsstempel.Trim(), out result) == false) // afsenderTidsstempel _skal_ være en int
488                {
489                    return false;
490                }
491    
492                if (int.TryParse(transaktionsLaengde.Trim(), out result) == false) // transaktionsLaengde _skal_ være en int
493                {
494                    return false;
495                }
496    
497                if ( int.TryParse(prioritet.Trim(), out result) == false ) // prioritet _skal_ være en int
498                {
499                    return false;
500                }
501    
502                return true;
503            }
504    
505          private void addLogEntry(string msg)          private void addLogEntry(string msg)
506          {          {
507              msg = getNowString() + " " + msg;              msg = getNowString() + " " + msg;

Legend:
Removed from v.2055  
changed lines
  Added in v.2083

  ViewVC Help
Powered by ViewVC 1.1.20