Exemplo n.º 1
0
        public async Task CallTransactionMadeEventAsync(IDiscordGuildChannel m, User receiver, User giver, int amount)
        {
            try
            {
                TransactionPacket p = new TransactionPacket();
                p.discordChannel = m;
                p.discordUser    = await m.GetUserAsync(receiver.Id.FromDbLong());

                if (giver != null)
                {
                    p.giver = giver;
                }

                p.receiver = receiver;

                p.amount = amount;

                if (OnTransaction != null)
                {
                    await OnTransaction?.Invoke(p);
                }
            }
            catch (Exception e)
            {
                Log.WarningAt("achievement check failed", e.ToString());
            }
        }
Exemplo n.º 2
0
        public TransactionHub()
        {
            Console.WriteLine("Starting Transaction hub connection...");

            connection = new HubConnectionBuilder()
                         .WithUrl("https://spookvooper.com/transactionHub")
                         .WithAutomaticReconnect(new RetryPolicy())
                         .Build();

            connection.Closed += OnClosed;

            connection.On("NotifyTransaction", (string message) =>
            {
                long timestamp          = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
                Transaction transaction = transaction = JsonSerializer.Deserialize <Transaction>(message);
                transaction.Timestamp   = timestamp;

                OnTransaction?.Invoke(transaction);
            });

            try
            {
                connection.StartAsync();
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occured while opening the SignalR for the Transaction hub");
                Console.WriteLine(e);
            }
        }
Exemplo n.º 3
0
 public static void ExecuteInTransaction(OnTransaction onTransaction, string connectionName)
 {
     using (var t = new TransactionScope(connectionName))
     {
         if (onTransaction != null)
             if (onTransaction(connectionName))
                 t.Commit();
     }
 }
Exemplo n.º 4
0
        public AchievementManager(MikiApp bot)
        {
            this.bot = bot;

            AccountManager.Instance.OnLocalLevelUp += async(u, c, l) =>
            {
                using (var db = new MikiContext())
                {
                    if (await provider.IsEnabled(MikiApp.Instance.GetService <ICacheClient>(), db, c.Id))
                    {
                        LevelPacket p = new LevelPacket()
                        {
                            discordUser    = await(c as IDiscordGuildChannel).GetUserAsync(u.Id),
                            discordChannel = c,
                            level          = l,
                        };
                        await OnLevelGained?.Invoke(p);
                    }
                }
            };

            AccountManager.Instance.OnTransactionMade += async(msg, u1, u2, amount) =>
            {
                using (var db = new MikiContext())
                {
                    if (await provider.IsEnabled(MikiApp.Instance.GetService <ICacheClient>(), db, msg.ChannelId))
                    {
                        TransactionPacket p = new TransactionPacket()
                        {
                            discordUser    = msg.Author,
                            discordChannel = await msg.GetChannelAsync(),
                            giver          = u1,
                            receiver       = u2,
                            amount         = amount
                        };

                        await OnTransaction?.Invoke(p);
                    }
                }
            };

            bot.GetService <EventSystem>().GetCommandHandler <SimpleCommandHandler>().OnMessageProcessed += async(e, m, t) =>
            {
                CommandPacket p = new CommandPacket()
                {
                    discordUser    = m.Author,
                    discordChannel = await m.GetChannelAsync(),
                    message        = m,
                    command        = e,
                    success        = true
                };
                await OnCommandUsed?.Invoke(p);
            };
        }
Exemplo n.º 5
0
        public AchievementManager(IBot bot)
        {
            this.bot = bot;

            AccountManager.Instance.OnGlobalLevelUp += async(u, c, l) =>
            {
                if (await provider.IsEnabled(c.Id))
                {
                    LevelPacket p = new LevelPacket()
                    {
                        discordUser    = await c.Guild.GetUserAsync(u.Id),
                        discordChannel = c,
                        level          = l,
                    };
                    await OnLevelGained?.Invoke(p);
                }
            };

            AccountManager.Instance.OnTransactionMade += async(msg, u1, u2, amount) =>
            {
                if (await provider.IsEnabled(msg.Channel.Id))
                {
                    TransactionPacket p = new TransactionPacket()
                    {
                        discordUser    = msg.Author,
                        discordChannel = msg.Channel,
                        giver          = u1,
                        receiver       = u2,
                        amount         = amount
                    };

                    await OnTransaction?.Invoke(p);
                }
            };

            EventSystem.Instance.AddCommandDoneEvent(x =>
            {
                x.Name         = "--achievement-manager-command";
                x.processEvent = async(m, e, s, t) =>
                {
                    CommandPacket p = new CommandPacket()
                    {
                        discordUser    = m.Author,
                        discordChannel = m.Channel,
                        message        = m,
                        command        = e,
                        success        = s
                    };
                    await OnCommandUsed?.Invoke(p);
                };
            });
        }
Exemplo n.º 6
0
        internal void OnTransaction(Portfolio portfolio, Transaction transaction, bool queued)
        {
            var e = new OnTransaction(portfolio, transaction);

            if (queued)
            {
                this.queue.Enqueue(e);
            }
            else
            {
                OnEvent(e);
            }
        }
Exemplo n.º 7
0
        public AchievementManager(Bot bot)
        {
            this.bot = bot;

            AccountManager.Instance.OnGlobalLevelUp += async(u, c, l) =>
            {
                if (await provider.IsEnabled(Global.RedisClient, c.Id))
                {
                    LevelPacket p = new LevelPacket()
                    {
                        discordUser    = await(c as IDiscordGuildChannel).GetUserAsync(u.Id),
                        discordChannel = c,
                        level          = l,
                    };
                    await OnLevelGained?.Invoke(p);
                }
            };

            AccountManager.Instance.OnTransactionMade += async(msg, u1, u2, amount) =>
            {
                if (await provider.IsEnabled(Global.RedisClient, msg.ChannelId))
                {
                    TransactionPacket p = new TransactionPacket()
                    {
                        discordUser    = msg.Author,
                        discordChannel = await msg.GetChannelAsync(),
                        giver          = u1,
                        receiver       = u2,
                        amount         = amount
                    };

                    await OnTransaction?.Invoke(p);
                }
            };

            bot.GetAttachedObject <EventSystem>().GetCommandHandler <SimpleCommandHandler>().OnMessageProcessed += async(e, m, t) =>
            {
                CommandPacket p = new CommandPacket()
                {
                    discordUser    = m.Author,
                    discordChannel = await m.GetChannelAsync(),
                    message        = m,
                    command        = e,
                    success        = true
                };
                await OnCommandUsed?.Invoke(p);
            };
        }
Exemplo n.º 8
0
        public AchievementManager(Bot bot)
        {
            this.bot = bot;

            AccountManager.Instance.OnGlobalLevelUp += async(u, c, l) =>
            {
                if (await provider.IsEnabled(c.Id))
                {
                    LevelPacket p = new LevelPacket()
                    {
                        discordUser    = await(c as IGuildChannel).GetUserAsync(u.Id),
                        discordChannel = c,
                        level          = l,
                    };
                    await OnLevelGained?.Invoke(p);
                }
            };

            AccountManager.Instance.OnTransactionMade += async(msg, u1, u2, amount) =>
            {
                if (await provider.IsEnabled(msg.Channel.Id))
                {
                    TransactionPacket p = new TransactionPacket()
                    {
                        discordUser    = msg.Author,
                        discordChannel = msg.Channel,
                        giver          = u1,
                        receiver       = u2,
                        amount         = amount
                    };

                    await OnTransaction?.Invoke(p);
                }
            };

            bot.GetAttachedObject <EventSystem>().OnCommandDone += async(ex, e, m, t) =>
            {
                CommandPacket p = new CommandPacket()
                {
                    discordUser    = m.Author,
                    discordChannel = m.Channel,
                    message        = m,
                    command        = e,
                    success        = ex == null
                };
                await OnCommandUsed?.Invoke(p);
            };
        }
Exemplo n.º 9
0
        public async Task CallTransactionMadeEventAsync(IDiscordMessageChannel m, User receiver, User giver, int amount)
        {
            try
            {
                TransactionPacket p = new TransactionPacket();
                p.discordChannel = m;
                p.discordUser    = new RuntimeUser(Bot.instance.Client.GetUser(receiver.Id.FromDbLong()));

                if (giver != null)
                {
                    p.giver = giver;
                }

                p.receiver = receiver;

                p.amount = amount;

                await OnTransaction?.Invoke(p);
            }
            catch (Exception e)
            {
                Log.WarningAt("achievement check failed", e.ToString());
            }
        }
Exemplo n.º 10
0
        private AchievementManager(Bot bot)
        {
            this.bot = bot;

            AccountManager.Instance.OnGlobalLevelUp += async(u, c, l) =>
            {
                LevelPacket p = new LevelPacket()
                {
                    discordUser    = await c.Guild.GetUserAsync(u.Id.FromDbLong()),
                    discordChannel = c,
                    account        = u,
                    level          = l,
                };
                await OnLevelGained?.Invoke(p);
            };
            AccountManager.Instance.OnTransactionMade += async(msg, u1, u2, amount) =>
            {
                TransactionPacket p = new TransactionPacket()
                {
                    discordUser    = msg.Author,
                    discordChannel = msg.Channel,
                    giver          = u1,
                    receiver       = u2,
                    amount         = amount
                };

                await OnTransaction?.Invoke(p);
            };

            bot.Client.MessageReceived += async(e) =>
            {
                if (OnMessageReceived == null)
                {
                    return;
                }

                MessageEventPacket p = new MessageEventPacket()
                {
                    message        = new RuntimeMessage(e),
                    discordUser    = new RuntimeUser(e.Author),
                    discordChannel = new RuntimeMessageChannel(e.Channel)
                };
                await OnMessageReceived?.Invoke(p);
            };
            bot.Client.UserUpdated += async(ub, ua) =>
            {
                UserUpdatePacket p = new UserUpdatePacket()
                {
                    discordUser = new RuntimeUser(ub),
                    userNew     = new RuntimeUser(ua)
                };
                await OnUserUpdate?.Invoke(p);
            };
            bot.Events.AddCommandDoneEvent(x =>
            {
                x.Name         = "--achievement-manager-command";
                x.processEvent = async(m, e, s) =>
                {
                    CommandPacket p = new CommandPacket()
                    {
                        discordUser    = m.Author,
                        discordChannel = m.Channel,
                        message        = m,
                        command        = e,
                        success        = s
                    };
                    await OnCommandUsed?.Invoke(p);
                };
            });
        }
Exemplo n.º 11
0
 private void DispatcherTransaction(object sender, OnTransaction transaction)
 {
     PortfolioEventQueue.Enqueue(transaction);
 }
Exemplo n.º 12
0
 internal void method_30(OnTransaction onTransaction_0)
 {
     if (this.strategy__0 != null && this.strategy__0.Status == StrategyStatus.Running)
     {
         this.idArray_1[onTransaction_0.portfolio_0.int_0].vmethod_33(onTransaction_0);
     }
 }
Exemplo n.º 13
0
        public void UpdateGUI()
        {
            if (FrameworkControl.UpdatedSuspened && this.framework.Mode != FrameworkMode.Realtime)
            {
                return;
            }
            Event[] eventArray = this.messageQueue.DequeueAll((object)this);
            if (eventArray != null)
            {
                Dictionary <Instrument, Event> dictionary = new Dictionary <Instrument, Event>();
                foreach (Event @event in eventArray)
                {
                    switch (@event.TypeId)
                    {
                    case 99:
                        this.Reset();
                        break;

                    case 110:
                        OnPositionOpened onPositionOpened = @event as OnPositionOpened;
                        if (onPositionOpened.portfolio.Name == this.portfolioName)
                        {
                            dictionary[onPositionOpened.position.Instrument] = @event;
                            break;
                        }
                        break;

                    case 111:
                        OnPositionClosed onPositionClosed = @event as OnPositionClosed;
                        if (onPositionClosed.portfolio.Name == this.portfolioName)
                        {
                            dictionary[onPositionClosed.position.Instrument] = @event;
                            break;
                        }
                        break;

                    case 112:
                        OnPositionChanged onPositionChanged = @event as OnPositionChanged;
                        if (onPositionChanged.portfolio.Name == this.portfolioName)
                        {
                            dictionary[onPositionChanged.position.Instrument] = @event;
                            break;
                        }
                        break;

                    case 114:
                        OnTransaction onTransaction = @event as OnTransaction;
                        if (onTransaction.Portfolio.Name == this.portfolioName)
                        {
                            this.composition.TransactionsViewItems.Add((ListViewItem) new TransactionViewItem(onTransaction.Transaction));
                            break;
                        }
                        break;
                    }
                }
                PositionViewItem positionViewItem = (PositionViewItem)null;
                foreach (Event @event in dictionary.Values)
                {
                    switch (@event.TypeId)
                    {
                    case 99:
                        this.Reset();
                        continue;

                    case 110:
                        OnPositionOpened onPositionOpened = @event as OnPositionOpened;
                        if (this.composition.PositionViewItems.TryGetValue(onPositionOpened.position, out positionViewItem))
                        {
                            this.composition.UpdatePosition(onPositionOpened.position);
                            continue;
                        }
                        this.composition.AddPosition(onPositionOpened.position);
                        continue;

                    case 111:
                        OnPositionClosed onPositionClosed = @event as OnPositionClosed;
                        if (this.composition.PositionViewItems.TryGetValue(onPositionClosed.position, out positionViewItem))
                        {
                            this.composition.RemovePosition(onPositionClosed.position);
                            continue;
                        }
                        continue;

                    case 112:
                        OnPositionChanged onPositionChanged = @event as OnPositionChanged;
                        if (this.composition.PositionViewItems.TryGetValue(onPositionChanged.position, out positionViewItem))
                        {
                            this.composition.UpdatePosition(onPositionChanged.position);
                            continue;
                        }
                        this.composition.AddPosition(onPositionChanged.position);
                        continue;

                    default:
                        continue;
                    }
                }
            }
            this.composition.UpdateGUI();
            this.performance.UpdateGUI();
            this.statistics.UpdateGUI();
            this.childrenStatistics.UpdateGUI();
            this.correlationMatrix.UpdateGUI();
        }
Exemplo n.º 14
0
 private void DispatcherTransaction(object sender, OnTransaction transaction)
 {
     PortfolioEventQueue.Enqueue(transaction);
 }
 public void OnTransactionUpdated(UM_iTransaction transaction)
 {
     PrintTransactionInfo(transaction);
     OnTransaction.Invoke(transaction);
 }
Exemplo n.º 16
0
        private async Task <Message> WireDecodeMessage(UInt32 magic)
        {
            var command         = DataDecoder.DecodeFixedString(await ReceiveExactly(12));
            var payloadSize     = DataDecoder.DecodeUInt32(await ReceiveExactly(4));
            var payloadChecksum = DataDecoder.DecodeUInt32(await ReceiveExactly(4));
            var payload         = await ReceiveExactly(payloadSize.ToIntChecked());

            if (!Messaging.VerifyPayloadChecksum(payloadChecksum, payload))
            {
                throw new Exception($"Checksum failed for {command}");
            }

            var message = new Message
                          (
                Magic: magic,
                Command: command,
                PayloadSize: payloadSize,
                PayloadChecksum: payloadChecksum,
                Payload: payload.ToImmutableArray()
                          );

            switch (message.Command)
            {
            case "addr":
            {
                var addressPayload = NetworkEncoder.DecodeAddressPayload(payload);

                OnReceivedAddresses?.Invoke(owner, addressPayload.NetworkAddresses);
            }
            break;

            case "alert":
            {
                var alertPayload = NetworkEncoder.DecodeAlertPayload(payload);
            }
            break;

            case "block":
            {
                var block = DataDecoder.DecodeBlock(null, payload);

                OnBlock?.Invoke(owner, block);
            }
            break;

            case "getblocks":
            {
                var getBlocksPayload = NetworkEncoder.DecodeGetBlocksPayload(payload);

                OnGetBlocks?.Invoke(owner, getBlocksPayload);
            }
            break;

            case "getheaders":
            {
                var getHeadersPayload = NetworkEncoder.DecodeGetBlocksPayload(payload);

                OnGetHeaders?.Invoke(owner, getHeadersPayload);
            }
            break;

            case "getdata":
            {
                var invPayload = NetworkEncoder.DecodeInventoryPayload(payload);

                OnGetData?.Invoke(owner, invPayload);
            }
            break;

            case "headers":
            {
                var blockHeaders = ImmutableList.CreateBuilder <BlockHeader>();

                var offset      = 0;
                var headerCount = payload.ReadVarInt(ref offset).ToIntChecked();

                for (var i = 0; i < headerCount; i++)
                {
                    var blockHeader = DataDecoder.DecodeBlockHeader(null, payload, ref offset);
                    // ignore tx count var int
                    payload.ReadVarInt(ref offset);

                    blockHeaders.Add(blockHeader);
                }

                OnBlockHeaders?.Invoke(owner, blockHeaders.ToImmutable());
            }
            break;

            case "inv":
            {
                var invPayload = NetworkEncoder.DecodeInventoryPayload(payload);

                OnInventoryVectors?.Invoke(owner, invPayload.InventoryVectors);
            }
            break;

            case "notfound":
            {
                var invPayload = NetworkEncoder.DecodeInventoryPayload(payload);

                OnNotFound?.Invoke(owner, invPayload.InventoryVectors);
            }
            break;

            case "ping":
            {
                OnPing?.Invoke(owner, payload.ToImmutableArray());
            }
            break;

            case "tx":
            {
                var tx = DataDecoder.DecodeEncodedTx(null, payload);

                OnTransaction?.Invoke(owner, tx);
            }
            break;

            case "version":
            {
                var versionPayload = NetworkEncoder.DecodeVersionPayload(payload, payload.Length);

                OnVersion?.Invoke(owner, versionPayload);
            }
            break;

            case "verack":
            {
                OnVersionAcknowledged?.Invoke(owner);
            }
            break;

            default:
            {
                logger.Warn($"Unhandled incoming message: {message.Command}");
            }
            break;
            }

            //TODO
            //if (payloadStream.Position != payloadStream.Length)
            //{
            //    var exMessage = $"Wrong number of bytes read for {message.Command}, parser error: read {payloadStream.Position} bytes from a {payloadStream.Length} byte payload";
            //    Debug.WriteLine(exMessage);
            //    throw new Exception(exMessage);
            //}

            return(message);
        }
Exemplo n.º 17
0
 internal void OnTransaction(Portfolio portfolio, Transaction transaction, bool queued)
 {
     var e = new OnTransaction(portfolio, transaction);
     if (queued)
         this.queue.Enqueue(e);
     else
         OnEvent(e);
 }