public GrapheneRequest(GrapheneMethodEnum method, params object[] @params)
 {
     this.jsonrpc = 2;
     this.id      = 1;
     this.method  = method;
     this.@params = @params;
 }
        public GrapheneSocketRequest(GrapheneMethodEnum method, int id, int api, params object[] @params)
        {
            this.id     = id;
            this.method = "call";

            object[] fudgeParams = { api, method.ToString(), @params };

            this.@params = fudgeParams;
        }
Exemple #3
0
        public int Send(GrapheneMethodEnum method, int api, params object[] args)
        {
            GrapheneSocketRequest r = new GrapheneSocketRequest(method, m_id++, api, args);
            string request          = JsonConvert.SerializeObject(r);

            _sendQueue.Add(request);

            return(m_id - 1);
        }
Exemple #4
0
        /// <summary>	API call synchronise. </summary>
        ///
        /// <remarks>	Paul, 23/10/2015. </remarks>
        ///
        /// <typeparam name="T">	Generic type parameter. </typeparam>
        /// <param name="method">	The method. </param>
        /// <param name="args">     A variable-length parameters list containing arguments. </param>
        ///
        /// <returns>	A T. </returns>
        public T ApiCallSync <T>(GrapheneMethodEnum method, GrapheneApi api, params object[] args)
        {
            Task <T> t = Task.Run <T>(() =>
            {
                return(ApiCall <T>(method, api, args));
            });

            bool sucesss = t.Wait(kTimeoutSeconds * 1000);

            if (!sucesss)
            {
                throw new TimeoutException();
            }

            return(t.Result);
        }
Exemple #5
0
 /// <summary>	API call blockchain. </summary>
 ///
 /// <remarks>	Paul, 23/10/2015. </remarks>
 ///
 /// <typeparam name="T">	Generic type parameter. </typeparam>
 /// <param name="method">	The method. </param>
 /// <param name="args">     A variable-length parameters list containing arguments. </param>
 ///
 /// <returns>	A T. </returns>
 public T ApiCallBlockchain <T>(GrapheneMethodEnum method, GrapheneApi api, params object[] args)
 {
     return(m_cliWallet.ApiCallSync <T>(method, api, args));
     //return m_blockchain.ApiCallSync<T>(method, api, args);
 }
Exemple #6
0
 /// <summary>	API call. </summary>
 ///
 /// <remarks>	Paul, 20/10/2015. </remarks>
 ///
 /// <param name="method">	The method. </param>
 /// <param name="args">     A variable-length parameters list containing arguments. </param>
 ///
 /// <returns>	A T. </returns>
 public T ApiCall <T>(GrapheneMethodEnum method, GrapheneApi api, params object[] args)
 {
     return(m_cliWallet.ApiCallSync <T>(method, api, args));
 }
Exemple #7
0
 /// <summary>	API call. </summary>
 ///
 /// <remarks>	Paul, 20/10/2015. </remarks>
 ///
 /// <param name="method">	The method. </param>
 /// <param name="args">     A variable-length parameters list containing arguments. </param>
 ///
 /// <returns>	A T. </returns>
 public async Task <T> ApiCallAsync <T>(GrapheneMethodEnum method, GrapheneApi api, params object[] args)
 {
     return(await m_cliWallet.ApiCall <T>(method, api, args));
 }
Exemple #8
0
        /// <summary>	API call. </summary>
        ///
        /// <remarks>	Paul, 19/10/2015. </remarks>
        ///
        /// <typeparam name="T">	Generic type parameter. </typeparam>
        /// <param name="method">	The method. </param>
        /// <param name="args">     A variable-length parameters list containing arguments. </param>
        ///
        /// <returns>	A Task&lt;T&gt; </returns>
        async public Task <T> ApiCall <T> (GrapheneMethodEnum method, GrapheneApi api, params object[] args)
        {
            TaskCompletionSource <T> task      = new TaskCompletionSource <T>();
            EventHandler <string>    onMessage = null;
            int id = -1;

            onMessage = (object sender, string message) =>
            {
                var conv1 = new DictionaryTwoArrayConverter <GrapheneOperation>(new List <JsonConverter>());
                var conv2 = new DictionaryTwoArrayConverter <GrapheneTransactionRecord <GrapheneOperation> >(new List <JsonConverter>()
                {
                    conv1
                });

                var conv3 = new DictionaryTwoArrayConverter <GrapheneAssetCreator>(new List <JsonConverter>());
                var conv4 = new DictionaryTwoArrayConverter <GrapheneTransactionRecord <GrapheneAssetCreator> >(new List <JsonConverter>()
                {
                    conv3
                });

                var conv5 = new DictionaryTwoArrayConverter <GrapheneAssetIssued>(new List <JsonConverter>());
                var conv6 = new DictionaryTwoArrayConverter <GrapheneTransactionRecord <GrapheneAssetIssued> >(new List <JsonConverter>()
                {
                    conv5
                });

                var conv7 = new DictionaryTwoArrayConverter <GrapheneLimitOrderBody>(new List <JsonConverter>());
                var conv8 = new DictionaryTwoArrayConverter <GrapheneTransactionRecord <GrapheneLimitOrderBody> >(new List <JsonConverter>()
                {
                    conv7
                });

                var conv9  = new DictionaryTwoArrayConverter <GrapheneOperation>(new List <JsonConverter>());
                var conv10 = new DictionaryTwoArrayConverter <GrapheneOpContainer <GrapheneOperation> >(new List <JsonConverter>()
                {
                    conv9
                });
                var conv11 = new DictionaryTwoArrayConverter <GrapheneOpContainerMain>(new List <JsonConverter>()
                {
                    conv10
                });

                try
                {
                    GrapheneSocketResponse <T> decoded = JsonConvert.DeserializeObject <GrapheneSocketResponse <T> >(message,
                                                                                                                     conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, conv9, conv10, conv11
                                                                                                                     );

                    if (decoded.Id == id.ToString())
                    {
                        m_socket.OnMessage -= onMessage;

                        if (decoded.Error != null)
                        {
                            task.SetException(new GrapheneRpcException(decoded.Error.Message));
                        }
                        else
                        {
                            task.SetResult(decoded.Result);
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(string.Concat("Message Received, with error: ", message), ex);
                }
            };

            if (m_socket != null)
            {
                m_socket.OnMessage  = null;
                m_socket.OnMessage += onMessage;
                id = m_socket.Send(method, m_apiMap[api], args);
            }

            return(await task.Task);
        }