Deveel.Data.TableStateStore.Flush C# (CSharp) Method

Flush() public method

public Flush ( ) : void
return void
        public void Flush()
        {
            lock (this) {
                bool changes = false;
                long newVisP = visAreaPointer;
                long newDelP = delAreaPointer;

                try {
                    Store.Lock();

                    // If the lists changed, then Write new state areas to the store.
                    if (visListChange) {
                        newVisP = WriteListToStore(visibleList);
                        visListChange = false;
                        changes = true;
                    }
                    if (delListChange) {
                        newDelP = WriteListToStore(deleteList);
                        delListChange = false;
                        changes = true;
                    }

                    // Commit the changes,
                    if (changes) {
                        headerArea.Position = 16;
                        headerArea.WriteInt8(newVisP);
                        headerArea.WriteInt8(newDelP);
                        headerArea.Flush();

                        if (visAreaPointer != newVisP) {
                            Store.DeleteArea(visAreaPointer);
                            visAreaPointer = newVisP;
                        }

                        if (delAreaPointer != newDelP) {
                            Store.DeleteArea(delAreaPointer);
                            delAreaPointer = newDelP;
                        }
                    }
                } finally {
                    Store.Unlock();
                }
            }
        }