Skip to content

Commit

Permalink
OraclePolicy
Browse files Browse the repository at this point in the history
  • Loading branch information
shargon committed Nov 20, 2019
1 parent e2071e7 commit 64c30a8
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 13 deletions.
3 changes: 2 additions & 1 deletion neo.UnitTests/Oracle/UT_OracleService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,8 @@ private OracleExecutionCache ExecuteHTTP1Tx(OracleHTTPRequest request)

using (var snapshot = store.GetSnapshot())
{
var service = new OracleService() { TimeOut = TimeSpan.FromSeconds(2) };
var service = new OracleService();
service.Policy.Timeout = TimeSpan.FromSeconds(2);
return service.Process(snapshot, null, tx, true);
}
}
Expand Down
12 changes: 12 additions & 0 deletions neo/Oracle/OraclePolicy.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System;

namespace Neo.Oracle
{
public class OraclePolicy
{
/// <summary>
/// Timeout for serve one request
/// </summary>
public TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(3);
}
}
7 changes: 3 additions & 4 deletions neo/Oracle/OracleService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using Neo.Oracle.Protocols.HTTP;
using Neo.Persistence;
using Neo.SmartContract;
using System;

namespace Neo.Oracle
{
Expand All @@ -19,9 +18,9 @@ public class OracleService
#endregion

/// <summary>
/// Timeout
/// Policy
/// </summary>
public TimeSpan TimeOut { get; set; } = TimeSpan.FromSeconds(3);
public OraclePolicy Policy { get; set; } = new OraclePolicy();

/// <summary>
/// Process transaction
Expand Down Expand Up @@ -66,7 +65,7 @@ private OracleResult ExecuteRequest(UInt256 txHash, OracleRequest request)
{
return request switch
{
OracleHTTPRequest http => HTTP.Process(txHash, http, TimeOut),
OracleHTTPRequest http => HTTP.Process(txHash, http, Policy),
_ => OracleResult.CreateError(txHash, request.Hash, OracleResultError.ServerError),
};
}
Expand Down
8 changes: 4 additions & 4 deletions neo/Oracle/Protocols/HTTP/OracleHTTPProtocol.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ public class OracleHTTPProtocol : IOracleProtocol
/// </summary>
/// <param name="txHash">Transaction Hash</param>
/// <param name="request">Request</param>
/// <param name="timeout">Timeout</param>
/// <param name="policy">Policy</param>
/// <returns>Oracle result</returns>
public OracleResult Process(UInt256 txHash, OracleRequest request, TimeSpan timeout)
public OracleResult Process(UInt256 txHash, OracleRequest request, OraclePolicy policy)
{
if (!(request is OracleHTTPRequest httpRequest))
{
Expand Down Expand Up @@ -51,7 +51,7 @@ public OracleResult Process(UInt256 txHash, OracleRequest request, TimeSpan time

var result = client.SendAsync(req);

if (!result.Wait(timeout) || result.IsFaulted)
if (!result.Wait(policy.Timeout) || result.IsFaulted)
{
return OracleResult.CreateError(txHash, request.Hash, OracleResultError.Timeout);
}
Expand All @@ -63,7 +63,7 @@ public OracleResult Process(UInt256 txHash, OracleRequest request, TimeSpan time

var ret = result.Result.Content.ReadAsStringAsync();

if (!ret.Wait(timeout) || ret.IsFaulted)
if (!ret.Wait(policy.Timeout) || ret.IsFaulted)
{
return OracleResult.CreateError(txHash, request.Hash, OracleResultError.Timeout);
}
Expand Down
4 changes: 1 addition & 3 deletions neo/Oracle/Protocols/IOracleProtocol.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
using System;

namespace Neo.Oracle.Protocols
{
public interface IOracleProtocol
{
OracleResult Process(UInt256 txHash, OracleRequest request, TimeSpan timeout);
OracleResult Process(UInt256 txHash, OracleRequest request, OraclePolicy policy);
}
}
3 changes: 2 additions & 1 deletion neo/Wallets/Wallet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,8 @@ private Transaction MakeTransaction(Snapshot snapshot, byte[] script, Transactio
}
case OracleExecutionType.SecureOracle:
{
var service = new OracleService() { TimeOut = TimeSpan.FromSeconds(2) };
var service = new OracleService();
service.Policy.Timeout = TimeSpan.FromSeconds(2);
oracle = service.CreateExecutionCache(tx.Hash);
break;
}
Expand Down

0 comments on commit 64c30a8

Please sign in to comment.