void task_MessageStoringCompleted(object sender, TcpMessageCompletedEventArgs e) { try { e.Stream.Position = 0; //ProcessAndStoreMessage(e.Session.From.ENVID, e.Session.From.Mailbox, e.Session.From.RET, e.Session.To, e.Stream, e); QueueItemStream item = QueueItemStream.Create(e.Stream); var stream = AgentManager.Queue.ExecRequset(item); //Message message = Message.Create(e.Stream); //var stream = AgentManager.Queue.ExecRequset(message); e.Reply = new TcpReplyStream(200, stream); //OnMessageCompleted(new GenericEventArgs<Message>(msg)); } catch (Exception x) { OnError(x); e.Reply = new TcpReplyStream(552, "Requested action aborted: Internal server error."); } finally { // Close file. .NET will delete that file we use FileOptions.DeleteOnClose. if (e.Stream != null) { ((FileStream)e.Stream).Dispose(); } } }
public static void RuntimeTest() { var message = new Message("QClient", queuenmae, new EntityDemo(0)); var mStream = message.GetEntityStream(false); //mStream.Position = 0; var desMsg = Message.Create(mStream); QueueItemStream item = new QueueItemStream(mStream, true); item.SetState(MessageState.Receiving); Message recMsg = item.GetMessage(); var body = recMsg.GetBody <EntityDemo>(); string filename = Path.Combine(@"D:\Nistec\Services\MQueue\Queues\Queue\Demo", Assists.GetQueueFilename(item.Identifier)); string fname = item.SaveToFile(filename); QueueItemStream ritem = QueueItemStream.ReadFile(filename); Message rMsg = ritem.GetMessage(); var rbody = recMsg.GetBody <EntityDemo>(); Console.WriteLine(rbody == null? 0: rbody.EntityId); }
internal static NetStream ExecCommand(QueueItemStream message) { switch (message.Command) { case QueueCmd.Reply: case QueueCmd.AddItem: case QueueCmd.GetValue: case QueueCmd.FetchValue: case QueueCmd.GetItem: case QueueCmd.FetchItem: case QueueCmd.ViewItem: case QueueCmd.RemoveItem: case QueueCmd.RemoveItemAsync: case QueueCmd.CopyItem: case QueueCmd.CutItem: case QueueCmd.KeepAliveItem: case QueueCmd.RemoveQueueSessionItems: case QueueCmd.LoadData: return(AgentManager.Queue.ExecRemote(message)); default: QueueLogger.Logger.LogAction(QueueAction.QueueException, QueueActionState.Error, "AgentManager.ExecCommand error: Command not supported " + message.Command); return(QueueEntry.GetAckStream(QueueState.CommandNotSupported, message.Command)); } }
public static void ReadFile(string filename) { var item = QueueItemStream.ReadFile(filename); var msg = item.GetMessage(); var body = msg.GetBody(); Console.WriteLine(item.Print()); }
void ExecCover(QueueItemStream message) { var dt = DbQueue.MessageToDataTable(message); using (DbBulkCopy bulk = new DbBulkCopy(CoverPath)) { bulk.BulkInsert(dt, CoverTableName, ConnectTimeout, null); } }
/// <summary> /// Exec Requset /// </summary> /// <param name="request"></param> /// <returns></returns> protected virtual void Execute(NamedPipeServerStream stream) { //Message message = new Message(); //using (var copy = NetStream.CopyStream(stream)) //{ // Netlog.DebugFormat("Server Read Request length:{0}", copy.Length); // message.EntityRead(copy, null); //} //Netlog.DebugFormat("Server Print Request :{0}", message.Print()); QueueItemStream item = QueueItemStream.Create(NetStream.CopyStream(stream)); //stream.Position = 0; AgentManager.Queue.Execute(item, stream); }
public void Save(QueueItemStream message) { try { if (CoverProvider == CoverProviders.File) { string filename = GetFilename(message.Identifier); message.SaveToFile(filename); //var stream = message.Serialize(true); //stream.SaveToFile(filename); } else { ExecCover(message); } } catch (Exception ex) { QLog.Exception("QCover.Save ", ex); } }