Exemple #1
0
        private int ForEachInternal(Slice prefix, ForEachCallback callback)
        {
            using (var tx = _env.NewTransaction(TransactionFlags.Read))
                using (var it = tx.State.GetTree(tx, Index).Iterate(tx))
                {
                    Slice key = Slice.BeforeAllKeys;

                    if (prefix != null)
                    {
                        it.RequiredPrefix = prefix;
                        key = prefix;
                    }

                    if (it.Seek(key) == false)
                    {
                        return((int)ReturnCode.GIT_OK);
                    }

                    do
                    {
                        string sha = it.CurrentKey.ToString();

                        int ret = callback(new ObjectId(sha));

                        if (ret != (int)ReturnCode.GIT_OK)
                        {
                            return((int)ReturnCode.GIT_EUSER);
                        }
                    } while (it.MoveNext());
                }

            return((int)ReturnCode.GIT_OK);
        }
Exemple #2
0
 /// <summary>
 /// Performs the specified action for each element in an array.
 /// </summary>
 /// <param name="callbackfn">A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.</param>
 public void ForEach(ForEachCallback callbackfn)
 {
     for (int index = 0; index < this.Length; index++)
     {
         callbackfn(this[index], index, this);
     }
 }
 public void ForEach(ForEachCallback callback)
 {
     using (this)
         while (reader.Read())
         {
             callback(this);
         }
 }
Exemple #4
0
        public static void ForEach(MethodBodyBlock method, ForEachCallback handler)
        {
            GraphProcessor graphProcessor = new GraphProcessor();
            Visitor        visitor        = new ForEachVisitor(graphProcessor, handler);

            visitor.AddTask(method, null);
            graphProcessor.Process();
        }
Exemple #5
0
        protected void Select(IList list)
        {
            MSSQLField[]  readables = table.GetFields(FieldFlags.Read);
            StringBuilder sql       = new StringBuilder();

            sql.Append("SELECT ");
            if (distinct)
            {
                sql.Append("DISTINCT ");
            }
            if (selectTop > 0)
            {
                sql.Append("TOP ").Append(selectTop).Append(" ");
            }
            bool first = true;

            foreach (MSSQLField f in readables)
            {
                if (!first)
                {
                    sql.Append(",");
                }
                first = false;
                sql.Append(database.QuoteName(f.Name));
            }
            sql.Append(" FROM ").Append(table.QuotedName);
            if (where.Length > 0)
            {
                sql.Append(" WHERE ").Append(where.ToString());
            }

            ForEachCallback callback = new ForEachCallback(delegate(IRow row)
            {
                object obj   = table.NewObject();
                object value = null;
                int i        = 0;
                foreach (MSSQLField f in readables)
                {
                    value = row[i++];
                    if (Convert.IsDBNull(value))
                    {
                        value = null;
                    }
                    f.SetValue(obj, value);
                }
                list.Add(obj);
            });

            using (MSSQLStatement stmt = database.Prepare(sql.ToString()) as MSSQLStatement)
                using (IQueryResult result = stmt.ExecQuery(values.ToArray()))
                {
                    result.ForEach(callback);
                }
        }
        /// <summary>
        /// Iterates through all the droplet instances.
        /// </summary>
        /// <param name="upgradableReadLock">Set it to true if a write lock on the Droplet Collection.</param>
        /// <param name="doThat">The code to execute on each instance.</param>
        public void ForEach(bool upgradableReadLock, ForEachCallback doThat)
        {
            if (doThat == null)
            {
                throw new ArgumentNullException("doThat");
            }

            if (upgradableReadLock)
            {
                List <DropletInstance> ephemeralInstances = new List <DropletInstance>();

                try
                {
                    this.Lock.EnterReadLock();
                    foreach (KeyValuePair <string, Droplet> instances in this.Droplets)
                    {
                        foreach (KeyValuePair <string, DropletInstance> instance in instances.Value.DropletInstances)
                        {
                            ephemeralInstances.Add(instance.Value);
                        }
                    }
                }
                finally
                {
                    this.Lock.ExitReadLock();
                }

                foreach (DropletInstance instance in ephemeralInstances)
                {
                    doThat(instance);
                }
            }
            else
            {
                try
                {
                    this.Lock.EnterReadLock();
                    foreach (KeyValuePair <string, Droplet> instances in this.Droplets)
                    {
                        foreach (KeyValuePair <string, DropletInstance> instance in instances.Value.DropletInstances)
                        {
                            doThat(instance.Value);
                        }
                    }
                }
                finally
                {
                    this.Lock.ExitReadLock();
                }
            }
        }
Exemple #7
0
            public override int ForEach(ForEachCallback callback)
            {
                foreach (var objectId in m_objectIdToContent.Keys)
                {
                    int result = callback(objectId);

                    if (result != (int)ReturnCode.GIT_OK)
                    {
                        return(result);
                    }
                }

                return((int)ReturnCode.GIT_OK);
            }
 /// <inheritdoc />
 public override int ForEach(ForEachCallback callback)
 {
     foreach (var entry in _database.FileStorage.FindAll())
     {
         try
         {
             ExtractData(entry, out var oid, out int _, out var __);
             callback(oid);
         }
         catch
         {
         }
     }
     return((int)ReturnCode.GIT_OK);
 }
            public override int ForEach(ForEachCallback callback)
            {
                foreach (var objectId in m_objectIdToContent.Keys)
                {
                    int result = callback(objectId);

                    if (result != (int)ReturnCode.GIT_OK)
                    {
                        return result;
                    }
                }

                return (int)ReturnCode.GIT_OK;
            }
Exemple #10
0
 public override int ForEach(ForEachCallback callback)
 {
     throw this.exceptionToThrow;
 }
 /// <summary>
 /// For each with upgradableReadLock set to false.
 /// </summary>
 /// <param name="doThat">The callback for each instance.</param>
 public void ForEach(ForEachCallback doThat)
 {
     this.ForEach(false, doThat);
 }
        public void ForEach(bool upgradableReadLock, ForEachCallback doThat)
        {
            if (doThat == null)
            {
                throw new ArgumentNullException("doThat");
            }

            if (upgradableReadLock)
            {
                List<StagingInstance> ephemeralInstances = new List<StagingInstance>();

                try
                {
                    this.Lock.EnterReadLock();
                    foreach (KeyValuePair<string, StagingInstance> instance in this.Tasks)
                    {
                        ephemeralInstances.Add(instance.Value);
                    }
                }
                finally
                {
                    this.Lock.ExitReadLock();
                }

                foreach (StagingInstance instance in ephemeralInstances)
                {
                    doThat(instance);
                }
            }
            else
            {
                try
                {
                    this.Lock.EnterReadLock();
                    foreach (KeyValuePair<string, StagingInstance> instance in this.Tasks)
                    {
                        doThat(instance.Value);
                    }
                }
                finally
                {
                    this.Lock.ExitReadLock();
                }
            }
        }
 public override int ForEach(ForEachCallback callback)
 {
     return ForEachInternal(new {match_all = new {}}, callback);
 }
Exemple #14
0
 /// <summary>
 ///   Requests that this backend enumerate all items in the backing store.
 /// </summary>
 public abstract int ForEach(ForEachCallback callback);
Exemple #15
0
 public override int ForEach(ForEachCallback callback)
 {
     return(ForEachInternal(null, callback));
 }
Exemple #16
0
 public override int ForEach(ForEachCallback callback)
 {
     throw new NotImplementedException();
 }
 public override int ForEach(ForEachCallback callback)
 {
     return ForEachInternal(null, callback);
 }
        private int ForEachInternal(Slice prefix, ForEachCallback callback)
        {
            using (var tx = _env.NewTransaction(TransactionFlags.Read))
            using (var it = tx.State.GetTree(tx, Index).Iterate(tx))
            {
                Slice key = Slice.BeforeAllKeys;

                if (prefix != null)
                {
                    it.RequiredPrefix = prefix;
                    key = prefix;
                }

                if (it.Seek(key) == false)
                {
                    return (int)ReturnCode.GIT_OK;
                }

                do
                {
                    string sha = it.CurrentKey.ToString();

                    int ret = callback(new ObjectId(sha));

                    if (ret != (int)ReturnCode.GIT_OK)
                    {
                        return (int)ReturnCode.GIT_EUSER;
                    }
                } while (it.MoveNext());
            }

            return (int)ReturnCode.GIT_OK;
        }
Exemple #19
0
		static int ForEachVoxel( VoxelWorld World, ref VoxelRef v1, ref VoxelRef v2, ForEachCallback f, bool not_zero )
		{
			if( v1.Sector == null || v2.Sector == null )
				return not_zero ? 1 : 0;
			int v1x = v1.x + ( v1.Sector.Pos_x << VoxelSector.ZVOXELBLOCSHIFT_X );
			int v1y = v1.y + ( v1.Sector.Pos_y << VoxelSector.ZVOXELBLOCSHIFT_Y );
			int v1z = v1.z + ( v1.Sector.Pos_z << VoxelSector.ZVOXELBLOCSHIFT_Z );
			int v2x = v2.x + ( v2.Sector.Pos_x << VoxelSector.ZVOXELBLOCSHIFT_X );
			int v2y = v2.y + ( v2.Sector.Pos_y << VoxelSector.ZVOXELBLOCSHIFT_Y );
			int v2z = v2.z + ( v2.Sector.Pos_z << VoxelSector.ZVOXELBLOCSHIFT_Z );
			int del_x = v2x - v1x;
			int del_y = v2y - v1y;
			int del_z = v2z - v1z;
			int abs_x = del_x < 0 ? -del_x : del_x;
			int abs_y = del_y < 0 ? -del_y : del_y;
			int abs_z = del_z < 0 ? -del_z : del_z;
			// cannot use iterate if either end is undefined.
			if( del_x != 0 )
			{
				if( del_y != 0 )
				{
					if( del_z != 0 )
					{
						if( abs_x > abs_y || ( abs_z > abs_y ) )
						{
							if( abs_z > abs_x )
							{
								// z is longest path
								int erry = -abs_z / 2;
								int errx = -abs_z / 2;
								int incy = del_y < 0 ? -1 : 1;
								int incx = del_x < 0 ? -1 : 1;
								int incz = del_z < 0 ? -1 : 1;
								{
									int x = v1x;
									int y = v1y;
									for( int z = v1z + incz; z != v2z; z += incz )
									{
										errx += abs_x;
										if( errx > 0 )
										{
											errx -= abs_z;
											x += incx;
										}
										erry += abs_y;
										if( erry > 0 )
										{
											erry -= abs_z;
											y += incy;
										}
										{
											int val;
											VoxelRef v;
											if( World.GetVoxelRef( out v, x, y, z ) )
											{
												val = f( ref v );
												if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
													return val;
											}
										}
									}
								}
							}
							else
							{
								// x is longest.
								int erry = -abs_x / 2;
								int errz = -abs_x / 2;
								int incy = del_y < 0 ? -1 : 1;
								int incx = del_x < 0 ? -1 : 1;
								int incz = del_z < 0 ? -1 : 1;
								{
									int y = v1y;
									int z = v1z;
									for( int x = v1x + incx; x != v2x; x += incx )
									{
										errz += abs_z;
										if( errz > 0 )
										{
											errz -= abs_x;
											z += incx;
										}
										erry += abs_y;
										if( erry > 0 )
										{
											erry -= abs_x;
											y += incy;
										}
										{
											int val;
											VoxelRef v;
											if( World.GetVoxelRef( out v, x, y, z ) )
											{
												val = f( ref v );
												if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
													return val;
											}
										}
									}
								}
							}
						}
						else
						{
							// y is longest.
							int errx = -abs_y / 2;
							int errz = -abs_y / 2;
							int incy = del_y < 0 ? -1 : 1;
							int incx = del_x < 0 ? -1 : 1;
							int incz = del_z < 0 ? -1 : 1;
							{
								int x = v1x;
								int z = v1x;
								for( int y = v1y + incy; y != v2y; y += incy )
								{
									errx += abs_x;
									if( errx > 0 )
									{
										errx -= abs_y;
										x += incx;
									}
									errz += abs_z;
									if( errz > 0 )
									{
										errz -= abs_y;
										z += incz;
									}
									{
										int val;
										VoxelRef v;
										if( World.GetVoxelRef( out v, x, y, z ) )
										{
											val = f( ref v );
											if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
												return val;
										}
									}
								}
							}
						}
					}
					else
					{
						// z is constant
						if( abs_x > abs_y )
						{
							// x is longest
							int erry = -abs_x / 2;
							int incy = del_y < 0 ? -1 : 1;
							int incx = del_x < 0 ? -1 : 1;
							{
								int y = v1y;
								int z = v1z;
								for( int x = v1x + incx; x != v2x; x += incx )
								{
									erry += abs_y;
									if( erry > 0 )
									{
										erry -= abs_x;
										y += incy;
									}
									{
										int val;
										VoxelRef v;
										if( World.GetVoxelRef( out v, x, y, z ) )
										{
											val = f( ref v );
											if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
												return val;
										}
									}
								}
							}
						}
						else
						{
							// y is longest.
							int errx = -abs_y / 2;
							int incy = del_y < 0 ? -1 : 1;
							int incx = del_x < 0 ? -1 : 1;
							// z is longest path
							{
								int x = v1x;
								int z = v1x;
								for( int y = v1y + incy; y != v2y; y += incy )
								{
									errx += abs_x;
									if( errx > 0 )
									{
										errx -= abs_y;
										x += incx;
									}
									{
										int val;
										VoxelRef v;
										if( World.GetVoxelRef( out v, x, y, z ) )
										{
											val = f( ref v );
											if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
												return val;
										}
									}
								}
							}
						}
					}
				}
				else
				{
					if( del_z != 0 )
					{
						if( abs_x > abs_z )
						{
							// x is longest.
							int errz = -abs_x / 2;
							int incx = del_x < 0 ? -1 : 1;
							int incz = del_z < 0 ? -1 : 1;
							{
								int y = v1y;
								int z = v1z;
								for( int x = v1x + incx; x != v2x; x += incx )
								{
									errz += abs_z;
									if( errz > 0 )
									{
										errz -= abs_x;
										z += incx;
									}
									{
										int val;
										VoxelRef v;
										if( World.GetVoxelRef( out v, x, y, z ) )
										{
											val = f( ref v );
											if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
												return val;
										}
									}
								}
							}
						}
						else
						{
							// z is longest path
							int errx = -abs_z / 2;
							int incx = del_x < 0 ? -1 : 1;
							int incz = del_z < 0 ? -1 : 1;
							{
								int x = v1x;
								int y = v1y;
								for( int z = v1z + incz; z != v2z; z += incz )
								{
									errx += abs_x;
									if( errx > 0 )
									{
										errx -= abs_z;
										x += incx;
									}
									{
										int val;
										VoxelRef v;
										if( World.GetVoxelRef( out v, x, y, z ) )
										{
											val = f( ref v );
											if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
												return val;
										}
									}
								}
							}
						}
					}
					else
					{
						// x is only changing.
						int incx = del_x < 0 ? -1 : 1;
						for( int x = v1x + incx; x != v2x; x += incx )
						{
							int val;
							VoxelRef v;
							if( World.GetVoxelRef( out v, x, v1y, v1z ) )
							{
								val = f( ref v );
								if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
									return val;
							}
						}
					}
				}
			}
			else
			{
				if( del_y != 0 )
				{
					if( del_z != 0 )
					{
						if( abs_y > abs_z )
						{
							// y is longest.
							int errz = -abs_y / 2;
							int incy = del_y < 0 ? -1 : 1;
							int incz = del_z < 0 ? -1 : 1;
							{
								int x = v1x;
								int z = v1x;
								for( int y = v1y + incy; y != v2y; y += incy )
								{
									errz += abs_z;
									if( errz > 0 )
									{
										errz -= abs_y;
										z += incz;
									}
									{
										int val;
										VoxelRef v;
										if( World.GetVoxelRef( out v, x, y, z ) )
										{
											val = f( ref v );
											if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
												return val;
										}
									}
								}
							}
						}
						else
						{
							// z is longest path
							int erry = -abs_z / 2;
							int incy = del_y < 0 ? -1 : 1;
							int incz = del_z < 0 ? -1 : 1;
							{
								int x = v1x;
								int y = v1y;
								for( int z = v1z + incz; z != v2z; z += incz )
								{
									erry += abs_y;
									if( erry > 0 )
									{
										erry -= abs_z;
										y += incy;
									}
									{
										int val;
										VoxelRef v;
										if( World.GetVoxelRef( out v, x, y, z ) )
										{
											val = f( ref v );
											if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
												return val;
										}
									}
								}
							}
						}
					}
					else
					{
						// no del_x, no del_z
						// y is only changing.
						int incy = del_y < 0 ? -1 : 1;
						for( int y = v1y + incy; y != v2y; y += incy )
						{
							int val;
							VoxelRef v;
							if( World.GetVoxelRef( out v, v1x, y, v1z ) )
							{
								val = f( ref v );
								if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
									return val;
							}
						}
					}
				}
				else
				{
					// no del_x, no del_y...
					if( del_z != 0 )
					{
						if( del_z > 0 )
							for( int z = v1z + 1; z < v2z; z++ )
							{
								int val;
								VoxelRef v;
								if( World.GetVoxelRef( out v, v1x, v1y, z ) )
								{
									val = f( ref v );
									if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
										return val;
								}
							}
						else
							for( int z = v2z + 1; z < v1z; z++ )
							{
								int val;
								VoxelRef v;
								if( World.GetVoxelRef( out v, v1x, v1y, z ) )
								{
									val = f( ref v );
									if( ( !not_zero && val != 0 ) || ( not_zero && val == 0 ) )
										return val;
								}
							}

					}
					else
					{
						// no delta diff, nothing to do.
					}
				}
			}
			return not_zero ? 1 : 0;
		}
Exemple #20
0
 public ForEachVisitor(GraphProcessor processor, ForEachCallback handler) : base(processor)
 {
     alreadyVisited = new Hashtable();
     this.handler   = handler;
 }
 public override int ForEach(ForEachCallback callback)
 {
     throw this.exceptionToThrow;
 }
 /// <summary>
 /// For each with upgradableReadLock set to false.
 /// </summary>
 /// <param name="doThat">The callback for each instance.</param>
 public void ForEach(ForEachCallback doThat)
 {
     this.ForEach(false, doThat);
 }
Exemple #23
0
 public ForEachVisitor(GraphProcessor processor, ForEachCallback handler)
     : base(processor)
 {
     alreadyVisited = new Hashtable();
     this.handler = handler;
 }
Exemple #24
0
 /// <summary>
 /// Requests that this backend enumerate all items in the backing store.
 /// </summary>
 public abstract int ForEach(ForEachCallback callback);
Exemple #25
0
 public static void ForEach(MethodBodyBlock method, ForEachCallback handler)
 {
     GraphProcessor graphProcessor = new GraphProcessor();
     Visitor visitor = new ForEachVisitor(graphProcessor,handler);
     visitor.AddTask(method,null);
     graphProcessor.Process();
 }
Exemple #26
0
 public ForeachState(GitOdbBackend.foreach_callback_callback cb, IntPtr data)
 {
     this.cb = cb;
     this.data = data;
     this.ManagedCallback = CallbackMethod;
 }
        private int ForEachInternal(object query, ForEachCallback callback)
        {
            var curPage = 0;
            var pageSize = 10;
            var collectedResults = 0;

            // TODO better and more stable paging strategy
            while (true)
            {
                var q = new
                {
                    query = query,
                    from = curPage * pageSize,
                    size = pageSize,
                    fields = new string[] { }, // force returning only the ID
                };

                var results = client.Search<GO>(q, client.DefaultIndexName, GitObjectsType);
                if (results == null) // TODO smarter error handling
                {
                    return (int)ReturnCode.GIT_OK;
                }

                if (results.hits.hits.Select(hit => callback(new ObjectId(hit._id))).Any(ret => ret != (int)ReturnCode.GIT_OK))
                {
                    return (int)ReturnCode.GIT_EUSER;
                }

                collectedResults += results.hits.hits.Count;
                if (results.hits.hits.Count < pageSize || collectedResults == results.hits.total)
                    break;

                curPage++;
            }

            return (int)ReturnCode.GIT_OK;
        }