public static RequestMessage Build() { var builder = new FlatBufferBuilder(RequestMessageBuilder.BufferInitialSize); // Tables without fields don't have the Create...() static method, it needs to be done like this. GetStateRequest.StartGetStateRequest(builder); Offset <GetStateRequest> requestOffset = GetStateRequest.EndGetStateRequest(builder); return(RequestMessageBuilder.Build(builder, Request.GetStateRequest, requestOffset)); }
public static RequestMessage Build(bool full, ModelFilter filter = null, IList <ObserverDefinition> observerRequests = null) { var builder = new FlatBufferBuilder(RequestMessageBuilder.BufferInitialSize); Offset <Filter>?filterOffset = null; if (filter != null) { var boxes = new Offset <Box3D> [filter.Boxes.Count]; filter.Boxes.EachWithIndex((i, box) => { boxes[i] = Box3D.CreateBox3D(builder, box.LowerBound.X, box.LowerBound.Y, box.LowerBound.Z, box.Size.X, box.Size.Y, box.Size.Z); }); VectorOffset boxesOffset = Filter.CreateBoxesVector(builder, boxes); filterOffset = Filter.CreateFilter(builder, boxesOffset); } VectorOffset?observersVectorOffset = null; if (observerRequests != null) { var observerOffsets = new Offset <Observer> [observerRequests.Count()]; observerRequests.EachWithIndex((i, definition) => { Offset <NeuronId> neuronId = NeuronId.CreateNeuronId(builder, definition.NeuronIndex, definition.RegionIndex); StringOffset observerType = builder.CreateString(definition.Type); observerOffsets[i] = Observer.CreateObserver(builder, neuronId, observerType); }); observersVectorOffset = GetModelRequest.CreateObserversVector(builder, observerOffsets); } GetModelRequest.StartGetModelRequest(builder); GetModelRequest.AddFull(builder, full); if (filterOffset.HasValue) { GetModelRequest.AddFilter(builder, filterOffset.Value); } if (observersVectorOffset.HasValue) { GetModelRequest.AddObservers(builder, observersVectorOffset.Value); } Offset <GetModelRequest> requestOffset = GetModelRequest.EndGetModelRequest(builder); return(RequestMessageBuilder.Build(builder, Request.GetModelRequest, requestOffset)); }
public static RequestMessage Build(CommandType commandType, uint stepsToRun = 0, bool runToBodyStep = false, string blueprint = null, CoreConfiguration configuration = null) { if ((stepsToRun > 0) && runToBodyStep) { throw new InvalidOperationException("Cannot combine stepsToRun with runToBodyStep"); } var builder = new FlatBufferBuilder(RequestMessageBuilder.BufferInitialSize); StringOffset?blueprintOffset = null; if (blueprint != null) { blueprintOffset = builder.CreateString(blueprint); } Offset <Configuration>?configurationOffset = null; if (configuration != null) { StringOffset systemConfigurationOffset = builder.CreateString(configuration.SystemConfigString); configurationOffset = Configuration.CreateConfiguration(builder, systemConfigurationOffset); } CommandRequest.StartCommandRequest(builder); CommandRequest.AddCommand(builder, commandType); CommandRequest.AddStepsToRun(builder, stepsToRun); CommandRequest.AddRunToBodyStep(builder, runToBodyStep); if (blueprintOffset.HasValue) { CommandRequest.AddBlueprint(builder, blueprintOffset.Value); } if (configurationOffset.HasValue) { CommandRequest.AddConfiguration(builder, configurationOffset.Value); } Offset <CommandRequest> requestOffset = CommandRequest.EndCommandRequest(builder); return(RequestMessageBuilder.Build(builder, Request.CommandRequest, requestOffset)); }