Beispiel #1
0
        public static IQueueAck SendItem(QueueApi q, QueueItem item, int connectTimeOut)
        {
            var ack = q.PublishItem(item, connectTimeOut);

            //Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}, item:{6}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration, item);
            return(ack);
        }
Beispiel #2
0
        public static QueueApi GetApi(string queueName, string hostAddress)
        {
            QueueApi q = new QueueApi(queueName, hostAddress);

            q.IsAsync = false;
            return(q);
        }
Beispiel #3
0
        public static QueueApi GetApi(QueueHost host)
        {
            QueueApi q = new QueueApi(host);

            q.IsAsync = false;
            return(q);
        }
Beispiel #4
0
        protected override void OnAsyncExecutingWorker(AsyncCallEventArgs e)
        {
            base.OnAsyncExecutingWorker(e);
            try
            {
                DataSet ds = new DataSet("RemoteQueue");
                ds.ReadXml(filename);
                dt = ds.Tables[0];
                int count = dt.Rows.Count;
                this.ProgressBar1.Maximum = count;

                var hostPipe = QueueHost.Parse("ipc:.:nistec_queue_manager?" + queueName);

                QueueApi Client = new QueueApi(hostPipe);

                foreach (DataRow dr in dt.Rows)
                {
                    Client.Enqueue(QueueItem.Create(dr));
                    this.ProgressBar1.Increment(1);
                }
            }
            catch (Exception ex)
            {
                MsgBox.ShowError(ex.Message);
            }
            finally
            {
                //Closewindow();
            }
        }
Beispiel #5
0
        public static void DoQuery(QueueHost host)
        {
            QueueApi q   = new QueueApi(host);
            var      req = new QueueRequest()
            {
                QCommand = QueueCmd.ReportQueueItems, DuplexType = DuplexTypes.NoWaite, Host = "NC_Quick"
            };
            var ts = q.SendDuplexStream(req, 1000000);

            if (ts != null)
            {
                //var stream = ts.ReadStream(null);
                //Nistec.Serialization.BinaryStreamer bs = new Nistec.Serialization.BinaryStreamer(stream);
                //var olist= bs.Decode();

                //var olist = ts.ReadValue();

                var list = ts.ReadValue <IEnumerable <PersistItem> >();
                Console.WriteLine(list);
            }
            else
            {
                Console.WriteLine("Get nothing!");
            }
        }
Beispiel #6
0
        IQueueAck ExecRout(QueueItem item, QueueHost qh)
        {
            if (qh == null)
            {
                throw new MessageException(MessageState.InvalidMessageHost, "Invalid QueueHost for Routing " + item.Host);
            }
            IQueueAck ack = null;

            if (qh.IsLocal)
            {
                item.Host = qh.HostName;
                MQueue Q = Get(item.Host);
                if (Q == null)
                {
                    throw new MessageException(MessageState.InvalidMessageHost, "message.RoutHostName not found " + item.Host);
                }
                ack = Q.Enqueue(item);
                return(ack);// ptr.MessageState;
            }

            var api = new QueueApi(qh.NetProtocol);

            ack = api.SendAsync(item, 0);
            return(ack);
        }
Beispiel #7
0
 public QueueListener(QueueAdapter adapter, int interval)
     : base(adapter, interval)
 {
     _api             = new QueueApi(adapter.Source);
     _api.ReadTimeout = adapter.ReadTimeout;
     //_Listener= new ListenerQ(this, adapter);
 }
Beispiel #8
0
        public static void SendItem(bool isAsync)
        {
            var      host = QueueHost.Parse("tcp:127.0.0.1:15000?NC_Bulk");
            QueueApi q    = QueueClient.GetApi(host);
            var      item = QueueClient.CreateQueueItem("Hello world " + DateTime.Now.ToString("s"), "test");

            item.Host = "NC_Bulk";
            //IQueueAck ack = null;

            QueueClient.EnqueueItem(q, item, 0, (IQueueAck ack) =>
            {
                Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}, item:{6}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration, item.Id);
            });

            //if (q.IsAsync)
            //{
            //    IQueueAck ack = QueueClient.SendItemAsync(q, item, 0);
            //    Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}, item:{6}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration, item.Id);
            //}
            //else
            //{
            //    QueueClient.SendItemAsync(q, item, 0, (IQueueAck ack) =>
            //    {
            //        Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}, item:{6}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration, item.Id);
            //    });
            //}

            //var duration = DateTime.Now.Subtract(start);
            //var milliseconds = duration.TotalMilliseconds;
            //Console.WriteLine("duration: {0}, item: {1}", milliseconds, item);
        }
Beispiel #9
0
        public static QueueApi GetApi(string queueName, HostProtocol protocol, string endpoint, int port, string hostName)
        {
            QueueApi q = new QueueApi(queueName, protocol, endpoint, port, hostName);

            q.IsAsync = false;
            return(q);
        }
Beispiel #10
0
        public static void EnqueueItem(QueueApi q, QueueItem item, int connectTimeOut, Action <IQueueAck> action)
        {
            q.EnqueueAsync(item, connectTimeOut, action);

            //DateTime start = DateTime.Now;
            //q.SendAsync(item, connectTimeOut, (ack) =>
            //{
            //    //Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}, item:{6}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration, item);
            //});
        }
        public async Task SendQueueMessageAyncTestAsync()
        {
            Configuration config = await TestHelper.GetConfigurationAsync();

            QueueApi queueApi = new QueueApi(config);

            SendReceipt sr = await queueApi.SendQueueMessageAync(ContestFactory.CreateChallengeRequestJson());

            Assert.IsNotNull(sr);
        }
        public async Task ReceiveQueueMessageAyncTestAsync()
        {
            Configuration config = await TestHelper.GetConfigurationAsync();

            QueueApi queueApi = new QueueApi(config);

            await queueApi.SendQueueMessageAync(ContestFactory.CreateChallengeRequestJson());

            Azure.Response <QueueMessage[]> response = await queueApi.ReceiveQueueMessageAync();

            Assert.IsNotNull(response);
        }
Beispiel #13
0
 public void SendSubscriber(TopicSubscriber subscriber, QueueItem item)
 {
     try
     {
         var api = QueueApi.Get(subscriber.Protocol);
         //var message = item.ToMessage();// Message.Create(item.GetItemStream());
         api.Send(item);
     }
     catch (Exception ex)
     {
         Netlog.Exception("Topic Sender Subscriber error ", ex);
     }
 }
Beispiel #14
0
        public async Task <string> EditQueueOperatorsRestApi(string queueNumber, IEnumerable <string> extensionList)
        {
            List <string> StMembers = new List <string>();

            if (extensionList != null)
            {
                foreach (var item in extensionList)
                {
                    StMembers.Add(item + ",0");
                }
            }

            string token = await GetNewTokenRest();

            QueueApi queueApi = new QueueApi();

            queueApi.Extension     = queueNumber.ToString();
            queueApi.StaticMembers = StMembers;
            string json      = queueApi.ToJson();
            int    Failretry = 0;

retry:
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); });
            HttpClient client  = new HttpClient();
            var        content = new StringContent(json, Encoding.UTF8, "application/json");

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            string Postadd  = "https://" + IssabeLIP + "/pbxapi/queues/" + queueNumber.ToString();
            var    response = await client.PutAsync(Postadd, content);

            string res; //= response.ToString();

            if (response.IsSuccessStatusCode)
            {
                res = "true";
            }
            else // if (res.Contains("StatusCode: 500") || response.StatusCode.ToString() == "500")
            {
                Failretry += 1;
                if (Failretry < 10)
                {
                    goto retry;
                }
                else
                {
                    res = "ثبت با خطا روبرو شد با مدیر سیستم تماس بگیرید";
                }
            }
            return(res);
        }
Beispiel #15
0
        public static void PublishItem()
        {
            var      host = QueueHost.Parse("tcp:127.0.0.1:15000?Netcell");
            QueueApi q    = QueueClient.GetApi(host);
            var      item = QueueClient.CreateQueueItem("Hello world " + DateTime.Now.ToString("s"), "test");

            item.Host     = "Netcell";
            item.QCommand = QueueCmd.Enqueue;
            //IQueueAck ack = null;

            QueueClient.PublishItem(q, item, 0, (IQueueAck ack) =>
            {
                Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}, item:{6}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration, item.Id);
            });
        }
Beispiel #16
0
        public static void DoGet(QueueHost host)
        {
            QueueApi q = new QueueApi(host);

            q.Timeout = 500000000;
            var item = q.Receive(DuplexTypes.WaitOne);

            if (item != null)
            {
                Console.WriteLine(item.Print());
            }
            else
            {
                Console.WriteLine("Get nothing!");
            }
        }
Beispiel #17
0
        public static void DoGet(QueueHost host)
        {
            QueueApi q = new QueueApi(host);

            q.ConnectTimeout = 500000000;
            //q.ReadTimeout = -1;
            var item = q.Dequeue();// DuplexTypes.WaitOne);

            if (item != null)
            {
                Console.WriteLine(item.Print());
            }
            else
            {
                Console.WriteLine("Get nothing!");
            }
        }
        public IList <QueueWithTopEnqueuedJobsDto> Queues()
        {
            var queuesData = Data.GetEnumeration <JobQueueDto>().ToList();
            var queues     = queuesData.GroupBy(q => q.Queue).ToDictionary(q => q.Key, q => q.Count());

            var query =
                from kvp in queues
                let enqueuedJobIds = QueueApi.GetEnqueuedJobIds(kvp.Key, 0, 5, false)
                                     let counters = QueueApi.GetEnqueuedAndFetchedCount(queuesData, kvp.Key)
                                                    select new QueueWithTopEnqueuedJobsDto
            {
                Name      = kvp.Key,
                Length    = counters.EnqueuedCount,
                Fetched   = counters.FetchedCount,
                FirstJobs = EnqueuedJobs(enqueuedJobIds)
            };

            return(query.ToList());
        }
Beispiel #19
0
        public IQueueAck SendSubscriber(TopicSubscriber subscriber, QueueItem copy)
        {
            try
            {
                copy.Host = subscriber.HostName;
                var api = new QueueApi(subscriber.QHost);
                var ack = api.PublishItem(copy);
                if (!ack.MessageState.IsStateOk())
                {
                    Controller.JournalAddItem(copy);
                }

                return(ack);
            }
            catch (Exception ex)
            {
                Logger.Exception("Topic Sender Subscriber error ", ex);
                Controller.JournalAddItem(copy);
                return(new QueueAck(MessageState.FailedEnqueue, copy));
            }
        }
Beispiel #20
0
        static void Main(string[] args)
        {
            Console.WriteLine("QueueTasker started...");

            var      host = QueueHost.Parse("ipc:.:nistec_queue_channel?NC_Quick");
            QueueApi q    = new QueueApi(host);

            while (true)
            {
                var msg = q.Report(QueueCmdReport.ReportQueueStatistic, "NC_Quick");

                Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}", msg.MessageState, msg.Creation, msg.Host, msg.Label);

                Thread.Sleep(10000);
            }



            Console.WriteLine("QueueTasker finished...");
            Console.ReadLine();
        }
Beispiel #21
0
        static void SendItem(QueueApi q, long item)
        {
            DateTime  start = DateTime.Now;
            QueueItem msg   = new QueueItem();

            msg.SetBody("Hello world " + DateTime.Now.ToString("s"));
            if (q.IsAsync)
            {
                q.SendAsync(msg, 50000000, (ack) =>
                {
                    Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}, item:{6}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration, item);
                });
            }
            else
            {
                var ack = q.Enqueue(msg, 50000000);
                Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}, item:{6}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration, item);
            }
            //var duration = DateTime.Now.Subtract(start);
            //var milliseconds = duration.TotalMilliseconds;
            //Console.WriteLine("duration: {0}, item: {1}", milliseconds, item);
        }
Beispiel #22
0
        public IQueueAck SendItem(QueueItem item)
        {
            try
            {
                string    address = item.Host;//.Args["HostAddress"];
                QueueHost qh      = QueueHost.Parse(address);
                item.Host = qh.HostName;
                var api = new QueueApi(qh);
                var ack = api.PublishItem(item);
                if (!ack.MessageState.IsStateOk())
                {
                    Controller.JournalAddItem(item);
                }

                return(ack);
            }
            catch (Exception ex)
            {
                Logger.Exception("Topic Sender Subscriber error ", ex);
                Controller.JournalAddItem(item);
                return(new QueueAck(MessageState.FailedEnqueue, item));
            }
        }
Beispiel #23
0
        static void SendMulti(QueueApi q, int maxItems)
        {
            long     counter  = 0;
            int      interval = 1;
            DateTime start    = DateTime.Now;

            for (int i = 0; i < maxItems; i++)
            {
                //Task.Factory.StartNew(() => SendItem(q, i));

                QueueItem msg = new QueueItem();
                msg.Label = i.ToString();
                msg.SetBody("Hello world " + DateTime.Now.ToString("s"));

                Task.Factory.StartNew(() =>
                {
                    if (q.IsAsync)
                    {
                        q.SendAsync(msg, 50000000, (ack) =>
                        {
                            Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration);
                            Interlocked.Increment(ref counter);
                        });
                    }
                    else
                    {
                        var ack = q.Enqueue(msg, 50000000);
                        Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}, Duration:{5}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier, ack.Duration);
                        Interlocked.Increment(ref counter);
                    }
                });
                //Thread.Sleep(interval);
            }

            while (Interlocked.Read(ref counter) < (maxItems))
            {
                Thread.Sleep(interval);
            }


            //while (true)
            //{
            //    if (counter > maxItems)
            //        break;
            //    Interlocked.Increment(ref counter);

            //    Task.Factory.StartNew(() => SendItem(q, Interlocked.Read(ref counter)));

            //    //SendItem(q,counter);

            //    //QueueItem msg = new QueueItem();
            //    //msg.SetBodyText("Hello world " + DateTime.Now.ToString("s"));
            //    //q.SendAsync(msg, 5000, (ack) =>
            //    //{
            //    //    Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}", ack.MessageState, ack.Creation, ack.Host, ack.Label, ack.Identifier);
            //    //});

            //    //Console.WriteLine("State:{0},Creation:{1},Host:{2},Label:{3}, Identifier:{4}", ack.MessageState,ack.Creation,ack.Host,ack.Label, ack.Identifier);

            //    //counter++;
            //    Thread.Sleep(interval);
            //}

            var duration     = DateTime.Now.Subtract(start);
            var milliseconds = duration.TotalMilliseconds;

            Console.WriteLine("duration: {0}, count: {1}, itemDuration: {2}", milliseconds - (interval * counter), counter, (milliseconds - (interval * counter)) / counter);
        }
Beispiel #24
0
 public static IQueueAck SendItemAsync(QueueApi q, QueueItem item, int connectTimeOut)
 {
     return(q.SendAsync(item, connectTimeOut));
 }
        public JobList <FetchedJobDto> FetchedJobs(string queue, int from, int perPage)
        {
            var fetchedJobIds = QueueApi.GetEnqueuedJobIds(queue, from, perPage, true);

            return(FetchedJobs(fetchedJobIds));
        }
        public JobList <EnqueuedJobDto> EnqueuedJobs(string queue, int from, int perPage)
        {
            var enqueuedJobIds = QueueApi.GetEnqueuedJobIds(queue, from, perPage, false);

            return(EnqueuedJobs(enqueuedJobIds));
        }
Beispiel #27
0
        //public TopicListener(AdapterProperties[] queues)
        //    : base(queues)
        //{

        //}

        public TopicListener(QueueAdapter adapter, int interval)
            : base(adapter, interval)
        {
            _api = new QueueApi(adapter.Source);
            //_Listener= new ListenerQ(this, adapter);
        }
Beispiel #28
0
 public static IQueueAck PublishItem(QueueApi q, QueueItem item, int connectTimeOut)
 {
     return(q.PublishItem(item, connectTimeOut));
 }
Beispiel #29
0
 public static void PublishItem(QueueApi q, QueueItem item, int connectTimeOut, Action <IQueueAck> action)
 {
     q.PublishItem(item, connectTimeOut, action);
 }
Beispiel #30
0
        public async Task <QueueApiViewModel> GetQueueRestApi(long queueNumber)
        {
retry:
            string token = await GetNewTokenRest();

            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); });
            HttpClient client  = new HttpClient();
            string     postadd = "https://" + IssabeLIP + "/pbxapi/queues/" + queueNumber.ToString();
            var        request = new HttpRequestMessage(HttpMethod.Get, postadd);

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
            var response = await client.SendAsync(request);

            string res = await response.Content.ReadAsStringAsync();


            if (response.IsSuccessStatusCode)
            {
                if (res.Contains("password"))
                {
                    res = res.Substring(31);
                    res = res.Substring(0, (res.Length - 2));

                    //return res;
                    QueueApi          queue      = QueueApi.FromJson(res);
                    QueueApiViewModel queuemodel = new QueueApiViewModel();

                    queuemodel.Extension = Convert.ToInt32(queue.Extension);
                    queuemodel.Name      = queue.Name;
                    queuemodel.Password  = queue.Password;
                    //queuemodel.StaticMembers.Add("2000");// = queue.StaticMembers;
                    queuemodel.RingStrategy   = queue.RingStrategy;
                    queuemodel.SkipBusyAgents = queue.SkipBusyAgents;
                    queuemodel.JoinAnnounceId = queue.JoinAnnounceId;
                    queuemodel.MonitorFormat  = queue.MonitorFormat;
                    //queuemodel.MonitorJoin = "yes";
                    queuemodel.MonitorType = queue.MonitorType;
                    queuemodel.MaxWait     = queue.MaxWait;
                    // queuemodel.SoundThankYou = "queue-thankyou";
                    //queuemodel.SoundCallsWaiting = "queue-callswaiting";
                    //queuemodel.SoundThereAre = "queue-thereare";
                    // queuemodel.SoundYouAreNext = "queue-youarenext";
                    queuemodel.TimeoutPriority        = queue.TimeoutPriority; /////Max Wait Time Mode
                    queuemodel.Timeout                = queue.Timeout;         /////////// Agent Timeout
                    queuemodel.AgentRetry             = queue.AgentRetry;
                    queuemodel.ReportHoldTime         = queue.ReportHoldTime;
                    queuemodel.AutoPause              = queue.AutoPause;
                    queuemodel.AutoPauseDelay         = Convert.ToInt32(queue.AutoPauseDelay);
                    queuemodel.AutoPauseIfBusy        = queue.AutoPauseIfBusy;
                    queuemodel.AutoPauseIfUnavailable = queue.AutoPauseIfUnavailable;
                    queuemodel.MaxCallersWaiting      = queue.MaxCallersWaiting;
                    queuemodel.JoinEmpty              = queue.JoinEmpty;
                    queuemodel.LeaveWhenEmpty         = queue.LeaveWhenEmpty;
                    queuemodel.AnnounceFrequency      = queue.AnnounceFrequency;
                    queuemodel.AnnounceHoldtime       = queue.AnnounceHoldtime;
                    queuemodel.AnnouncePosition       = queue.AnnouncePosition;
                    //queuemodel.EventMemberStatus = "yes";
                    //queuemodel.EventWhenCalled = "yes";
                    queuemodel.CronSchedule = queue.CronSchedule;


                    return(queuemodel);
                }
                else
                {
                    return(null);
                }
            }
            else if (response.StatusCode.ToString() == "500")
            {
                //GetNewToken();
                goto retry;
            }
            else
            {
                return(null);
            }


            //ExtensionApiViewModel extensionViewModel = new ExtensionApiViewModel();
            //extensionViewModel.Extension = extension.Extension.Value;
            //extensionViewModel.Name = extension.Name;
            //extensionViewModel.Secret = extension.Secret;
            //extensionViewModel.DeviceOptions_DtmfMode = extension.DeviceOptions.DtmfMode;
            //extensionViewModel.DeviceOptions_Encryption = extension.DeviceOptions.Encryption;
            //extensionViewModel.DeviceOptions_Nat = extension.DeviceOptions.Nat;
            //extensionViewModel.DeviceOptions_Port = extension.DeviceOptions.Port.Value;
            //extensionViewModel.DeviceOptions_Transport = extension.DeviceOptions.Transport;
            //extensionViewModel.Recording_InboundExternal = extension.Recording.InboundExternal;
            //extensionViewModel.Recording_InboundInternal = extension.Recording.InboundInternal;
            //extensionViewModel.Recording_OutboundExternal = extension.Recording.OutboundExternal;
            //extensionViewModel.Recording_OutboundInternal = extension.Recording.OutboundInternal;
            //extensionViewModel.Recording_Priority = extension.Recording.Priority.Value;

            //extensionViewModel.Voicemail_Voicemail = "selected";
            //extensionViewModel.Voicemail_Password = 2222;
            //extensionViewModel.Voicemail_EmailAddress = "*****@*****.**";
            //extensionViewModel.Voicemail_EmailAttachmen = "yes";
            //extensionViewModel.Voicemail_PlayCID = "yes";
            //extensionViewModel.Voicemail_PlayEnvelope = "yes";
            //extensionViewModel.Voicemail_DeleteVoicemail = "yes";



            //return extensionViewModel;
        }