/[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 2057 by torben, Tue Aug 27 06:49:36 2013 UTC revision 2136 by torben, Wed Mar 26 14:00:14 2014 UTC
# Line 16  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 239  namespace DaoMqPump2 Line 240  namespace DaoMqPump2
240    
241          private void transportMq2Sql()          private void transportMq2Sql()
242          {          {
243                int messageCount = 0;
244    
245              MQQueueManager mqMgr = null;              MQQueueManager mqMgr = null;
246              MQQueue in_queue = null;              MQQueue in_queue = null;
247              string filename = getLogFilename(LogfileType.LogTransactions);              string filename = getLogFilename(LogfileType.LogTransactions);
# Line 277  namespace DaoMqPump2 Line 280  namespace DaoMqPump2
280                                  if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0)                                  if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0)
281                                  {                                  {
282                                      string msgString = mqMsg.ReadString(mqMsg.MessageLength);                                      string msgString = mqMsg.ReadString(mqMsg.MessageLength);
283                                      System.Console.WriteLine(msgString);                                      //System.Console.WriteLine(msgString);
284    
285    
286                                        // Hvis transaktionen starter med et ? er det ikke en gyldig transaktion
287                                        // validér ligeledes at headeren er gyldig
288                                        if ( msgString.StartsWith("?") || validateSalt2Header(msgString) == false )
289                                        {
290                                            string discarded_filename = getLogFilename(LogfileType.LogDiscarded);
291                                            using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true))
292                                            {
293                                                discardedlog.WriteLine(getNowString() + " " + msgString);
294                                            }
295                                            mqMgr.Commit();//fjern den afviste transaktion fra køen
296                                            statusData.discardedCounter++;
297                                            continue; //gå frem til at tage næste transaktion fra køen
298                                        }
299    
300    
301                                      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
302    
# Line 289  namespace DaoMqPump2 Line 308  namespace DaoMqPump2
308                                          translog.WriteLine(getNowString() + " " + msgString);                                          translog.WriteLine(getNowString() + " " + msgString);
309                                          mqMgr.Commit();                                          mqMgr.Commit();
310                                          statusData.counter++;                                          statusData.counter++;
311    
312    
313                                            messageCount++;// increment per run message counter
314                                            if (messageCount >= 10000) // if we have moved  10000 messages in this run - let it go and give the other transports a change
315                                            {
316                                                isContinue = false;
317                                            }
318    
319    
320    
321                                      }                                      }
322                                      else                                      else
323                                      {                                      {
# Line 396  namespace DaoMqPump2 Line 425  namespace DaoMqPump2
425              Hashtable connProperties = new Hashtable();              Hashtable connProperties = new Hashtable();
426              connProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);              connProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);
427              connProperties.Add(MQC.HOST_NAME_PROPERTY, controller.mqHost);              connProperties.Add(MQC.HOST_NAME_PROPERTY, controller.mqHost);
428              connProperties.Add(MQC.CHANNEL_PROPERTY, controller.mqChannel); //WARNING: Hardcoded Channel Value !!!              connProperties.Add(MQC.CHANNEL_PROPERTY, controller.mqChannel);
429              return connProperties;              return connProperties;
430          }          }
431    
# Line 422  namespace DaoMqPump2 Line 451  namespace DaoMqPump2
451                  case LogfileType.LogTransactions:                  case LogfileType.LogTransactions:
452                      filename += "transactionlog_";                      filename += "transactionlog_";
453                      break;                      break;
454                    case LogfileType.LogDiscarded:
455                        filename += "discardedlog_";
456                        break;
457              }              }
458    
459    
# Line 437  namespace DaoMqPump2 Line 469  namespace DaoMqPump2
469              return now.ToString("s");              return now.ToString("s");
470          }          }
471    
472            /* no used any where used added here for reference/ just in case */
473            private void sendErrorMail(string sub, string msg)
474            {
475                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
476                message.To.Add("thn@daoas.dk");
477                message.Subject = "Error from DaoMqPump2: " + sub;
478                message.From = new System.Net.Mail.MailAddress("no-reply@daoas.dk");
479                message.Body = msg;
480    
481                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("mail.dao.int");
482                smtp.Send(message);
483            }
484    
485            private bool validateSalt2Header(string salt2String)
486            {
487                if (salt2String.Length < 66)
488                {
489                    addLogEntry("Transaction too short - discarding");
490                    return false;
491                }
492    
493    
494                int result;
495                long result_long;
496    
497                string afsender = salt2String.Substring(0, 5);
498                string modtager = salt2String.Substring(5, 5);
499                string afsenderTegnSaet = salt2String.Substring(10, 6);
500                string standardNavn = salt2String.Substring(16, 6);
501                string standardVersion = salt2String.Substring(22, 3);
502                string afsenderSekvensnr = salt2String.Substring(25, 6);
503                string afsenderTidsstempel = salt2String.Substring(31, 14);
504                string afsenderBakkeIdent = salt2String.Substring(45, 5);
505                string modtagerBakkeIdent = salt2String.Substring(50, 5);
506                string transaktionForkortelse = salt2String.Substring(55, 4);
507                string transaktionsLaengde = salt2String.Substring(59, 5);
508                string prioritet = salt2String.Substring(64, 1);
509    
510    
511                
512                if (int.TryParse(standardVersion.Trim(), out result) == false) // standardVersion _skal_ være en int
513                {
514                    addLogEntry("standardVersion not an integer, discarding");
515                    return false;
516                }
517    
518                if (int.TryParse(afsenderSekvensnr.Trim(), out result) == false) // afsenderSekvensnr _skal_ være en int
519                {
520                    addLogEntry("afsenderSekvensnr not an integer, discarding");
521                    return false;
522                }
523    
524                if (long.TryParse(afsenderTidsstempel.Trim(), out result_long) == false) // afsenderTidsstempel _skal_ være en long
525                {
526                    addLogEntry("afsenderTidsstempel not a long integer, discarding");
527                    return false;
528                }
529    
530                if (int.TryParse(transaktionsLaengde.Trim(), out result) == false) // transaktionsLaengde _skal_ være en int
531                {
532                    addLogEntry("transaktionsLaengde not an integer, discarding");
533                    return false;
534                }
535    
536                if ( int.TryParse(prioritet.Trim(), out result) == false ) // prioritet _skal_ være en int
537                {
538                    addLogEntry("prioritet not an integer, discarding");
539                    return false;
540                }
541    
542                return true;
543            }
544    
545          private void addLogEntry(string msg)          private void addLogEntry(string msg)
546          {          {
547              msg = getNowString() + " " + msg;              msg = getNowString() + " " + msg;

Legend:
Removed from v.2057  
changed lines
  Added in v.2136

  ViewVC Help
Powered by ViewVC 1.1.20