Beispiel #1
0
        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();
                }
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
        public static void ReadFile(string filename)
        {
            var item = QueueItemStream.ReadFile(filename);
            var msg  = item.GetMessage();
            var body = msg.GetBody();

            Console.WriteLine(item.Print());
        }
Beispiel #5
0
        void ExecCover(QueueItemStream message)
        {
            var dt = DbQueue.MessageToDataTable(message);

            using (DbBulkCopy bulk = new DbBulkCopy(CoverPath))
            {
                bulk.BulkInsert(dt, CoverTableName, ConnectTimeout, null);
            }
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #7
0
 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);
     }
 }