//------------------------------------------------------------------------------------------------
        // construction
        //------------------------------------------------------------------------------------------------

        public DeribitWebSocketService(IDeribitService deribit, DeribitConfig config)
        {
            this.deribit         = deribit;
            this.deribitconfig   = config;
            this.ClientWebSocket = new ClientWebSocket();
            this.logger          = Serilog.Log.ForContext <DeribitWebSocketService>();
        }
Ejemplo n.º 2
0
        //------------------------------------------------------------------------------------------------
        // construction
        //------------------------------------------------------------------------------------------------

        public DeribitJsonRpcService
        (
            IDeribitService deribit,
            IDeribitWebSocketService wsservice,
            DeribitConfig config
        )
        {
            // dependencies
            this.deribit       = deribit;
            this.deribitconfig = config;
            this.wsservice     = wsservice;
            // logger
            this.logger = Serilog.Log.ForContext <DeribitJsonRpcService>();
            // message formatter
            JsonMessageFormatter messageformatter = new JsonMessageFormatter()
            {
                Encoding        = Encoding.UTF8,
                ProtocolVersion = new Version(2, 0),
            };

            // web socket connection
            this.wsservice.ReconnectionHappened += this.Wsservice_ReconnectionHappened;
            // check connection loop
            {
                this.CheckConnectionLoopTimer = new System.Timers.Timer()
                {
                    Interval = TimeSpan.FromSeconds(this.CheckConnectionLoopPeriodSecs).TotalMilliseconds,
                    Enabled  = false,
                };
                this.CheckConnectionLoopTimer.Elapsed += (sender, e) =>
                {
                    lock (this.CheckConnectionLoopSyncLock)
                    {
                        this.CheckConnection(default).Wait();
Ejemplo n.º 3
0
        static async Task Main(string[] args)
        {
            // configure serilog
            ConfigureSerilog();

            // create config
            DeribitConfig deribitconfig = new DeribitConfig
            {
                Environment          = DeribitEnvironment.Test,
                EnableJsonRpcTracing = true,
            };

            // construct services
            deribit = new DeribitService(deribitconfig);

            // connect
            await deribit.Connect(default);
        public async Task OneTimeSetUp()
        {
            // read config
            this.configurationRoot =
                new ConfigurationBuilder()
                .AddJsonFile("config/config.json", false)
                .AddJsonFile("config/secrets.json", false)
                .Build();

            // determine environment
            if (this.configurationRoot["deribit:environment"] == "live")
            {
                this.deribitenvironment = DeribitEnvironment.Live;
            }
            else
            {
                this.deribitenvironment = DeribitEnvironment.Test;
            }

            // create config
            deribitconfig = new DeribitConfig
            {
                Environment          = this.deribitenvironment,
                EnableJsonRpcTracing = true,
            };

            // bind credentials
            this.deribitcredentials = this.configurationRoot
                                      .GetSection("deribit:credentials")
                                      .Get <DeribitCredentials>();


            // construct services
            deribit = new DeribitService(deribitconfig);

            // connect
            await deribit.Connect(default);
Ejemplo n.º 5
0
        //------------------------------------------------------------------------------------------------
        // construction
        //------------------------------------------------------------------------------------------------

        public DeribitJsonRpcService
        (
            IDeribitService deribit,
            IDeribitWebSocketService wsservice,
            DeribitConfig config
        )
        {
            // dependencies
            this.deribit       = deribit;
            this.deribitconfig = config;
            this.wsservice     = wsservice;
            // logger
            this.logger = Serilog.Log.ForContext <DeribitJsonRpcService>();
            // message formatter
            JsonMessageFormatter messageformatter = new JsonMessageFormatter()
            {
                Encoding        = Encoding.UTF8,
                ProtocolVersion = new Version(2, 0),
            };
            // attach json rpc to websocket
            WebSocketMessageHandler wsmh = new WebSocketMessageHandler(wsservice.ClientWebSocket);

            this.JsonRpc = new StreamJsonRpc.JsonRpc(wsmh);
            // build proxy // https://github.com/microsoft/vs-streamjsonrpc/blob/master/doc/dynamicproxy.md
            this.RpcProxy = this.JsonRpc.Attach <IDeribitJsonRpcProxy>(new JsonRpcProxyOptions
            {
                ServerRequiresNamedArguments = true,
            });
            // tracing
            if (config.EnableJsonRpcTracing)
            {
                var listener = new global::SerilogTraceListener.SerilogTraceListener();
                this.JsonRpc.TraceSource.Listeners.Add(listener);
                this.JsonRpc.TraceSource.Switch.Level = System.Diagnostics.SourceLevels.Information;
                this.logger.Verbose("JsonRpc tracing enabled");
            }
        }