public BoltResponseMessageWriterV1(PackProvider packerProvider, PackOutput output, LogService logService) { this._output = output; this._packer = packerProvider.NewPacker(output); this._log = logService.GetInternalLog(this.GetType()); this._encoders = RegisterEncoders(); }
public DefaultBoltConnection(BoltChannel channel, PackOutput output, BoltStateMachine machine, LogService logService, BoltConnectionLifetimeListener listener, BoltConnectionQueueMonitor queueMonitor, int maxBatchSize) { this._id = channel.Id(); this._channel = channel; this._output = output; this._machine = machine; this._listener = listener; this._queueMonitor = queueMonitor; this._log = logService.GetInternalLog(this.GetType()); this._userLog = logService.GetUserLog(this.GetType()); this._maxBatchSize = maxBatchSize; this._batch = new List <Job>(maxBatchSize); }
public void Pack(PackSettings settings, List<PackInput> inputs, List<PackOutputList> outputs) { int X_LIMIT = settings.Size.Width - settings.Border; int Y_LIMIT = settings.Size.Height - settings.Border; List<Tree> trees = new List<Tree>(); trees.Add(new Tree(settings.Size)); // create a LUT for sort input List<int> sorted = new List<int>(inputs.Count); for (int i = 0; i < inputs.Count; ++i) sorted.Add(i); sorted.Sort(delegate(int a, int b) { Size sza = inputs[a].Size; Size szb = inputs[b].Size; int areaa = sza.Width * sza.Height; int areab = szb.Width * szb.Height; return areab - areaa; }); // perform packing foreach(int i in sorted) { Size sz = inputs[i].Size; if (sz.Width > settings.Size.Width || sz.Height > settings.Size.Height) { if(debug) Console.WriteLine("warning: input {0}:{1} is too large!", i, sz); continue; } // apply borders, if the input is small enough if (sz.Width < X_LIMIT) sz.Width += settings.Border * 2; if (sz.Height < Y_LIMIT) sz.Height += settings.Border * 2; Size szr = new Size(sz.Height, sz.Width); int ret = -1; // find a tree to insert the input foreach (Tree tree in trees) { ret = tree.Insert(sz); if (-1 != ret) // packed { tree.Nodes[ret].Input = i; break; } else if (AllowRotate) { ret = tree.Insert(szr); if (-1 != ret) // packed { tree.Nodes[ret].Input = i; tree.Nodes[ret].Rotated = true; //Console.WriteLine("input {0} is rotated", i); break; } } } // if running out of spaces, create a new tree for packing if(-1 == ret) { if(debug) Console.WriteLine("Running out of space, allocate a new texture"); Tree tree = new Tree(settings.Size); trees.Add(tree); ret = tree.Insert(sz); if (-1 != ret) // packed tree.Nodes[ret].Input = i; else if(debug) Console.WriteLine("still cannot pack input {0}:{1}!", i, sz); } } // output pack results foreach (Tree tree in trees) { PackOutputList polist = new PackOutputList(); foreach (Node node in tree.Nodes) { if (!node.IsFilled()) continue; PackOutput po = new PackOutput(); PackInput pi = inputs[node.Input]; if (pi.Size.Width < settings.Size.Width - 1) po.X = node.Rect.X + settings.Border; if (pi.Size.Height < settings.Size.Height - 1) po.Y = node.Rect.Y + settings.Border; po.Input = node.Input; po.Rotated = node.Rotated; polist.Add(po); } outputs.Add(polist); } }
public Packer(PackOutput @out) { this.Out = @out; }
internal MetricsReportingBoltConnection(BoltChannel channel, PackOutput output, BoltStateMachine machine, LogService logService, BoltConnectionLifetimeListener listener, BoltConnectionQueueMonitor queueMonitor, int maxBatchSize, BoltConnectionMetricsMonitor metricsMonitor, Clock clock) : base(channel, output, machine, logService, listener, queueMonitor, maxBatchSize) { this._metricsMonitor = metricsMonitor; this._clock = clock; }
internal MetricsReportingBoltConnection(BoltChannel channel, PackOutput output, BoltStateMachine machine, LogService logService, BoltConnectionLifetimeListener listener, BoltConnectionQueueMonitor queueMonitor, BoltConnectionMetricsMonitor metricsMonitor, Clock clock) : this(channel, output, machine, logService, listener, queueMonitor, DefaultMaxBatchSize, metricsMonitor, clock) { }
protected internal PackerV1(PackOutput output) : base(output) { }
public override Org.Neo4j.Bolt.messaging.Neo4jPack_Packer NewPacker(PackOutput output) { return(new PackerV1(output)); }
public DefaultBoltConnection(BoltChannel channel, PackOutput output, BoltStateMachine machine, LogService logService, BoltConnectionLifetimeListener listener, BoltConnectionQueueMonitor queueMonitor) : this(channel, output, machine, logService, listener, queueMonitor, DefaultMaxBatchSize) { }
public SynchronousBoltConnection(BoltStateMachine machine) { this._channel = new EmbeddedChannel(); this._output = new ChunkedOutput(this._channel, TransportThrottleGroup.NO_THROTTLE); this._machine = machine; }
internal PackerV2(PackOutput output) : base(output) { }