133 |
queueIndbakke.Get(mqMsg, mqGetMsgOpts); |
queueIndbakke.Get(mqMsg, mqGetMsgOpts); |
134 |
if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0) |
if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0) |
135 |
{ |
{ |
136 |
string msgString = mqMsg.ReadString(mqMsg.MessageLength); |
string saltiiString = mqMsg.ReadString(mqMsg.MessageLength); |
137 |
//System.Console.WriteLine(msgString); |
//System.Console.WriteLine(msgString); |
138 |
|
|
139 |
|
|
140 |
// Hvis transaktionen starter med et ? er det ikke en gyldig transaktion |
// Hvis transaktionen starter med et ? er det ikke en gyldig transaktion |
141 |
// validér ligeledes at headeren er gyldig |
// validér ligeledes at headeren er gyldig |
142 |
if (msgString.StartsWith("?") || Salt2Helper.validateSalt2Header(msgString) == false) |
if (saltiiString.StartsWith("?") || Salt2Helper.validateSalt2Header(saltiiString) == false) |
143 |
{ |
{ |
144 |
string discarded_filename = Logfile.getLogFilename(LogfileType.LogTransactions, logDirectory, "filter"); |
string discarded_filename = Logfile.getLogFilename(LogfileType.LogTransactions, logDirectory, "filter"); |
145 |
using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true)) |
using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true)) |
146 |
{ |
{ |
147 |
discardedlog.WriteLine(Logfile.getNowString() + " " + msgString); |
discardedlog.WriteLine(Logfile.getNowString() + " " + saltiiString); |
148 |
} |
} |
149 |
continue; //gå frem til at tage næste transaktion fra køen |
continue; //gå frem til at tage næste transaktion fra køen |
150 |
} |
} |
151 |
|
|
152 |
|
MQPutMessageOptions pmo = new MQPutMessageOptions(); // accept the defaults, |
153 |
|
// same as MQPMO_DEFAULT |
154 |
|
|
155 |
|
MQMessage msg = new MQMessage(); |
156 |
|
msg.Format = MQC.MQFMT_STRING; |
157 |
|
msg.CharacterSet = 1252; |
158 |
|
msg.WriteString(saltiiString); |
159 |
|
|
160 |
|
Salt2Header header = Salt2Helper.parseHeader(saltiiString); |
161 |
|
queueMysql.Put(msg, pmo); |
162 |
|
if (saveForLater(header)) |
163 |
|
{ |
164 |
|
queueStore.Put(msg, pmo); |
165 |
|
} |
166 |
|
else |
167 |
|
{ |
168 |
|
queueDimaps.Put(msg, pmo); |
169 |
|
} |
170 |
|
|
171 |
|
|
172 |
|
|
231 |
} |
} |
232 |
} |
} |
233 |
|
|
234 |
|
private Boolean saveForLater(Salt2Header header) |
235 |
|
{ |
236 |
|
DateTime now = DateTime.Now; |
237 |
|
int hour = now.Hour; |
238 |
|
if (hour >= 14 && hour < 18) |
239 |
|
{ |
240 |
|
|
241 |
|
if (contains(header.transaktionForkortelse, this.filterTranscations) ) //Så længe vi skal være net3.0 kompatible er LINQ problematisk |
242 |
|
{ |
243 |
|
return true; |
244 |
|
} |
245 |
|
else |
246 |
|
{ |
247 |
|
return false; |
248 |
|
} |
249 |
|
} |
250 |
|
else //normal operation - send straight trough |
251 |
|
{ |
252 |
|
return false; |
253 |
|
} |
254 |
|
|
255 |
|
} |
256 |
|
|
257 |
|
private bool contains(string needle, string[] haystack) // s |
258 |
|
{ |
259 |
|
foreach(string hay in haystack) |
260 |
|
{ |
261 |
|
if (needle.Equals(hay)) |
262 |
|
{ |
263 |
|
return true; |
264 |
|
} |
265 |
|
} |
266 |
|
|
267 |
|
return false; |
268 |
|
} |
269 |
|
|
270 |
private void closeQueue(MQQueue queue) |
private void closeQueue(MQQueue queue) |
271 |
{ |
{ |
272 |
if (queue != null && queue.IsOpen) |
if (queue != null && queue.IsOpen) |