コード例 #1
0
        /// <summary>
        /// Query responder to check if we are connected to the terminal and whether the user is logged in
        /// </summary>
        /// <param name="queryMessage"></param>
        private static void BBG_connection_status(FinsembleQueryArgs queryMessage)
        {
            if (queryMessage.error != null)
            {
                //failed to register the query responder properly
                FSBL.Logger.Error("Error received by BBG_connection_status query responder: ", queryMessage.error);
            }
            else
            {
                JObject connectionStatus = new JObject();
                connectionStatus.Add("registered", isRegistered);
                connectionStatus.Add("loggedIn", isLoggedIn);
                queryMessage.sendQueryMessage(new FinsembleEventResponse(connectionStatus, null));

                Console.WriteLine("Responded to BBG_connection_status query: " + connectionStatus.ToString());
                FSBL.Logger.Log("Responded to BBG_connection_status query: ", connectionStatus);
            }
        }
コード例 #2
0
        /// <summary>
        /// Query handler function that runs a specified terminal connect command and responds.
        /// </summary>
        /// <param name="queryMessage"></param>
        private static void BBG_run_terminal_function(FinsembleQueryArgs queryMessage)
        {
            if (queryMessage.error != null)
            {
                //failed to register the query responder properly
                FSBL.Logger.Error("Error received by BBG_run_terminal_function query responder: ", queryMessage.error);
            }
            else
            {
                JObject queryResponse = new JObject();
                JToken  queryData     = null;
                if (isRegistered && isLoggedIn)
                {
                    queryData = queryMessage.response?["data"];
                    if (queryData != null)
                    {
                        FSBL.Logger.Debug("Received query: ", queryData);
                        BBG_execute_terminal_function(queryResponse, queryData);
                    }
                    else
                    {
                        queryResponse.Add("status", false);
                        queryResponse.Add("message", "Invalid request: no query data");
                    }
                }
                else if (!isRegistered)
                {
                    queryResponse.Add("status", false);
                    queryResponse.Add("message", "Not registered with the Bloomberg BlpApi");
                }
                else if (!isLoggedIn)
                {
                    queryResponse.Add("status", false);
                    queryResponse.Add("message", "Not Logged into Bloomberg terminal");
                }

                //return the response
                queryMessage.sendQueryMessage(new FinsembleEventResponse(queryResponse, null));
                Console.WriteLine("Responded to BBG_run_terminal_function query: " + queryResponse.ToString());
                FSBL.Logger.Debug("Responded to BBG_run_terminal_function query: ", queryData, "Response: ", queryResponse);
            }
        }