private async Task <IEnumerable <Traverser> > SubmitBytecodeAsync(Guid requestid, Bytecode bytecode) { var requestMsg = RequestMessage.Build(Tokens.OpsBytecode) .Processor(Processor) .OverrideRequestId(requestid) .AddArgument(Tokens.ArgsGremlin, bytecode) .AddArgument(Tokens.ArgsAliases, new Dictionary <string, string> { { "g", _traversalSource } }); if (IsSessionBound) { requestMsg.AddArgument(Tokens.ArgsSession, _sessionId); } var optionsStrategyInst = bytecode.SourceInstructions.Find( s => s.OperatorName == "withStrategies" && s.Arguments[0] is OptionsStrategy); if (optionsStrategyInst != null) { OptionsStrategy optionsStrategy = optionsStrategyInst.Arguments[0]; foreach (KeyValuePair <string, dynamic> pair in optionsStrategy.Configuration) { if (_allowedKeys.Contains(pair.Key)) { requestMsg.AddArgument(pair.Key, pair.Value); } } } return(await _client.SubmitAsync <Traverser>(requestMsg.Create()).ConfigureAwait(false)); }
public GraphTraversalSource With(string key, object value) { var optionsStrategyInst = Bytecode.SourceInstructions.Find( inst => inst.OperatorName == "withStrategies" && inst.Arguments[0] is OptionsStrategy); OptionsStrategy optionsStrategy; if (optionsStrategyInst == null) { optionsStrategy = new OptionsStrategy(); optionsStrategy.Configuration[key] = value; return(WithStrategies(optionsStrategy)); } optionsStrategy = optionsStrategyInst.Arguments[0]; optionsStrategy.Configuration[key] = value; return(new GraphTraversalSource(new List <ITraversalStrategy>(TraversalStrategies), new Bytecode(Bytecode))); }