public void PruneDead()
        {
            _state.Publications  = ActivePublications.ToList();
            _state.Subscriptions = ActiveSubscriptions.ToList();

            Save();
        }
示例#2
0
        private void OnConnectionBroken(object sender, WampSessionCloseEventArgs e)
        {
            if (e.CloseType != SessionCloseType.Disconnection)
            {
                var subscriptions = new string[ActiveSubscriptions.Count];
                var i             = 0;
                foreach (var subjectName in ActiveSubscriptions.Keys)
                {
                    subscriptions[i] = subjectName;
                    i++;
                }
                ActiveSubscriptions.Clear();

                // Re-initialize WampChannel
                Start();

                // Re-subscribe to subjects
#pragma warning disable 4014
                for (var j = subscriptions.Length - 1; j >= 0; j--)
                {
                    var subjectName = subscriptions[j];
                    switch (subjectName)
                    {
                    case SubjectNameTicker:
                        SubscribeToTickerAsync();
                        break;

                    case SubjectNameTrollbox:
                        SubscribeToTrollboxAsync();
                        break;
                    }
                }
#pragma warning restore 4014
            }
        }
示例#3
0
 public async Task SubscribeToTrollboxAsync()
 {
     if (!ActiveSubscriptions.ContainsKey(SubjectNameTrollbox))
     {
         await WampChannelOpenTask;
         ActiveSubscriptions.Add(SubjectNameTrollbox, WampChannel.RealmProxy.Services.GetSubject(SubjectNameTrollbox).Subscribe(x => ProcessMessageTrollbox(x.Arguments)));
     }
 }
示例#4
0
        public void Stop()
        {
            foreach (var subscription in ActiveSubscriptions.Values)
            {
                subscription.Dispose();
            }
            ActiveSubscriptions.Clear();

            WampChannel.Close();
        }
示例#5
0
 public async Task SubscribeToTickerAsync()
 {
     try {
         if (!ActiveSubscriptions.ContainsKey(SubjectNameTicker))
         {
             await WampChannelOpenTask;
             ActiveSubscriptions.Add(SubjectNameTicker, WampChannel.RealmProxy.Services.GetSubject(SubjectNameTicker).Subscribe(x => ProcessMessageTicker(x.Arguments)));
         }
     }
     catch (Exception ex) {
         Console.WriteLine("WAMP EXCEPTION (SubscribeToTickerAsync): " + ex.Message);
     }
 }
示例#6
0
        public void Stop()
        {
            try {
                foreach (var subscription in ActiveSubscriptions.Values)
                {
                    subscription.Dispose();
                }
                ActiveSubscriptions.Clear();

                WampChannel.Close();
            }
            catch (Exception e) {
                Console.WriteLine("Live Stop: " + e.Message);
                PoloniexBot.CLI.Manager.PrintError(e.Message);
            }
        }
示例#7
0
        private void OnConnectionBroken(object sender, WampSessionCloseEventArgs e)
        {
            Console.WriteLine("OnConnectionBroken CALLED");

            try {
                foreach (var subscription in ActiveSubscriptions.Values)
                {
                    subscription.Dispose();
                }
                ActiveSubscriptions.Clear();

                PoloniexBot.Trading.Manager.Stop();
                PoloniexBot.Trading.Manager.ClearAllPairs();
            }
            catch (Exception ex) {
                Console.WriteLine("WAMP EXCEPTION (OnConnectionBroken): " + ex.Message);
            }
        }
示例#8
0
        public void Stop()
        {
            Console.WriteLine("STOP CALLED");

            try {
                foreach (var subscription in ActiveSubscriptions.Values)
                {
                    subscription.Dispose();
                }
                ActiveSubscriptions.Clear();

                PoloniexBot.Trading.Manager.Stop();
                PoloniexBot.Trading.Manager.ClearAllPairs();

                WampChannel.Close();
            }
            catch (Exception ex) {
                Console.WriteLine("WAMP EXCEPTION (Stop): " + ex.Message);
            }
        }
示例#9
0
        private void OnConnectionBroken(object sender, WampSessionCloseEventArgs e)
        {
            if (e.CloseType != SessionCloseType.Disconnection)
            {
                var subscriptions = new string[ActiveSubscriptions.Count];
                var i             = 0;
                foreach (var subjectName in ActiveSubscriptions.Keys)
                {
                    subscriptions[i] = subjectName;
                    i++;
                }
                ActiveSubscriptions.Clear();

                try {
                    // Re-initialize WampChannel
                    Start();

                    // Re-subscribe to subjects
#pragma warning disable 4014
                    for (var j = subscriptions.Length - 1; j >= 0; j--)
                    {
                        var subjectName = subscriptions[j];
                        switch (subjectName)
                        {
                        case SubjectNameTicker:
                            SubscribeToTickerAsync();
                            break;

                        case SubjectNameTrollbox:
                            SubscribeToTrollboxAsync();
                            break;
                        }
                    }
#pragma warning restore 4014
                }
                catch (Exception ex) {
                    Console.WriteLine("Live OnConnectionBroken: " + ex.Message);
                    PoloniexBot.CLI.Manager.PrintError(ex.Message);
                }
            }
        }
示例#10
0
 public async Task SubscribeToTickerAsync()
 {
     if (!ActiveSubscriptions.ContainsKey(SubjectNameTicker))
     {
         try
         {
             await WampChannelOpenTask;
             ActiveSubscriptions.Add(SubjectNameTicker,
                                     WampChannel.RealmProxy.Services.GetSubject(SubjectNameTicker)
                                     .Subscribe(x => ProcessMessageTicker(x.Arguments)));
         }
         catch (Exception ex)
         {
             var clientError = ClientChannelHttpException.CreateFrom(ex);
             if (clientError != null)
             {
                 throw clientError;
             }
             throw;
         }
     }
 }
示例#11
0
        public override void Execute()
        {
            WriteLiteral(@"<link rel=""stylesheet"" href=""https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css"" integrity=""sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB"" crossorigin=""anonymous"">");
            Layout = new LayoutPage(Title);

            WriteLiteral("<div class=\"col-md-12\">\r\n");
            WriteLiteral("<h1 class=\"page-header\">\r\n");
            Write(Title);
            WriteLiteral("</h1>\r\n");
            WriteLiteral(@"<!-- Card -->
<div class=""card card-image"" style=""background-image: url(https://mdbootstrap.com/img/Photos/Horizontal/Work/4-col/img%20%2814%29.jpg);"">

    <!-- Content -->
    <div >
        <div class=""row d-flex justify-content-center "">
            <div class=""col-md-10 col-xl-8"">

                <!--Accordion wrapper-->
                <div class=""accordion"" id=""accordionE"" role=""tablist"" aria-multiselectable=""true"">");

            for (var i = 0; i < ActiveSubscriptions.ListSubscriptions().Count(); i++)
            {
                var currentSubscription = ActiveSubscriptions.ListSubscriptions()[i];
                WriteLiteral($@"<!--Accordion card -->
                    <div class =""card mb-4"" >

                    <!--Card header -->
                    <div class=""card-header p-0 z-depth-1"" role=""tab"" id=""header_{i}"" >
                    <a data-toggle=""collapse"" data-parent=""#accordion"" href=""#collapse_{i}"" aria-expanded=""true"" aria-controls=""collapse_{i}"">
                        <i class=""fa fa-cloud fa-2x p-3 mr-4 float-left black-text"" aria-hidden=""true"" ></i >
                    <h4 class =""text-uppercase white-text mb-0 py-3 mt-1"" >
                    {currentSubscription.MailBox} - {currentSubscription.SubscriptionName} last action {currentSubscription.LastActivity:g}
                    </h4 >
                    </a >
                    </div >

                    <!--Card body -->
                    <div id=""collapse_{i}"" class=""collapse"" role=""tabpanel"" aria-labelledby=""header_{i}"" data-parent=""#accordion"">
                        <div class =""card-body rgba-black-light white-text z-depth-1"" >
                    <p class=""p-md-4 mb-0"" >{string.Join(", ",currentSubscription.SubscriptionChangeCollectionData.Select(x=>x.FolderPath))}</p >
                    </div >
                    </div >
                    </div >
                    <!--Accordion card -->");
            }
            WriteLiteral(@" </div>
                <!--/.Accordion wrapper -->

            </div>
        </div>
    </div>
    <!-- Content -->
</div>
<!-- Card -->");

            /*    for (var i = 0; i < ActiveSubscriptions.Subscriptions.Count(); i++)
             *  {
             *      WriteLiteral($@"<div class=""card"">
             *          <div class=""card-header bg-danger"" id=""Subscription_{i}""><h5 class=""mb-0"">
             *              <button class=""btn btn-link"" data-toggle=""collapse"" data-target=""#collapse_{i}"" aria-expanded=""true"" aria-controls=""collapseOne"">");
             *      Write(ActiveSubscriptions.Subscriptions[i].SubscriptionName);
             *      WriteLiteral(" - ");
             *      Write(ActiveSubscriptions.Subscriptions[i].MailBox);
             *      WriteLiteral(@"</button><button class=""btn btn-success"">Reset</button>");
             *      WriteLiteral("                        </h5>\r\n");
             *      WriteLiteral("                    </div>\r\n");
             *      WriteLiteral($@"<div id=""collapse_{i}"" class=""collapse show"" aria-labelledby=""headingOne"" data-parent=""#accordion"">
             *              <div class=""card-body"">
             *                 <div class=""row"">
             *                      <div class="""">
             *                          <label>Last Refresh Time:</label>
             *                          <input type=""text"" class=""form-control form-control-readonly"" value=""{ActiveSubscriptions.Subscriptions[i].LastMisFileDate.Value:dd-mmm-yy}"" />
             *                      </div>
             *                 </div>
             *                  <div class=""row"">
             *                      <div class="""">
             *                          <label>Number of Folders:</label>
             *                          <input type=""text"" class=""form-control form-control-readonly"" value=""{ActiveSubscriptions.Subscriptions[i].SubscriptionData.Count}"" />
             *                      </div>
             *                 </div>
             *                  <div class=""row"">
             *                      <div class="""">
             *                          <label>Folders:</label>
             *                          <input type=""text"" class=""form-control form-control-readonly"" value=""{string.Join(",",ActiveSubscriptions.Subscriptions[i].SubscriptionData)}"" />
             *                      </div>
             *                 </div>
             *              </div>
             *          </div>
             *      </div>");
             */
            WriteLiteral("\r\n</div>\r\n");
            WriteLiteral("\r\n</div>\r\n");
        }