Beispiel #1
0
        private void Initialize(int restrictionId)
        {
            try
            {
                // Lock the tables.
                Debug.Assert(!ClientMarketData.AreLocksHeld);
                ClientMarketData.RestrictionLock.AcquireReaderLock(CommonTimeout.LockWait);

                // Make sure the restriction exists.  We need it to find the default settlement restriction.
                ClientMarketData.RestrictionRow restrictionRow = ClientMarketData.Restriction.FindByRestrictionId(restrictionId);
                if (restrictionRow == null)
                {
                    throw new Exception(String.Format("Restriction {0} doesn't exist", restrictionId));
                }

                // Initialize the object from the ADO record.
                Initialize(restrictionRow);
            }
            finally
            {
                // Release the table locks.
                if (ClientMarketData.RestrictionLock.IsReaderLockHeld)
                {
                    ClientMarketData.RestrictionLock.ReleaseReaderLock();
                }
                Debug.Assert(!ClientMarketData.AreLocksHeld);
            }
        }
Beispiel #2
0
        internal static Restriction Make(ClientMarketData.RestrictionRow restrictionRow)
        {
            Restriction restriction = new Restriction();

            restriction.Initialize(restrictionRow);
            return(restriction);
        }
Beispiel #3
0
        public ViolationList GetViolations()
        {
            ViolationList violationList = new ViolationList();

            try
            {
                // Lock the tables.
                Debug.Assert(!ClientMarketData.AreLocksHeld);
                ClientMarketData.AccountLock.AcquireReaderLock(CommonTimeout.LockWait);
                ClientMarketData.ObjectLock.AcquireReaderLock(CommonTimeout.LockWait);
                ClientMarketData.PositionLock.AcquireReaderLock(CommonTimeout.LockWait);
                ClientMarketData.RestrictionLock.AcquireReaderLock(CommonTimeout.LockWait);
                ClientMarketData.SecurityLock.AcquireReaderLock(CommonTimeout.LockWait);
                ClientMarketData.ViolationLock.AcquireReaderLock(CommonTimeout.LockWait);

                // Make sure the restriction exists.  We need it to find the default settlement restriction.
                ClientMarketData.RestrictionRow restrictionRow = ClientMarketData.Restriction.FindByRestrictionId(this.restrictionId);
                if (restrictionRow == null)
                {
                    throw new Exception(String.Format("Restriction {0} doesn't exist", restrictionId));
                }

                foreach (ClientMarketData.ViolationRow violationRow in restrictionRow.GetViolationRows())
                {
                    violationList.Add(new Violation(violationRow));
                }
            }
            finally
            {
                // Release the table locks.
                if (ClientMarketData.AccountLock.IsReaderLockHeld)
                {
                    ClientMarketData.AccountLock.ReleaseReaderLock();
                }
                if (ClientMarketData.ObjectLock.IsReaderLockHeld)
                {
                    ClientMarketData.ObjectLock.ReleaseReaderLock();
                }
                if (ClientMarketData.PositionLock.IsReaderLockHeld)
                {
                    ClientMarketData.PositionLock.ReleaseReaderLock();
                }
                if (ClientMarketData.RestrictionLock.IsReaderLockHeld)
                {
                    ClientMarketData.RestrictionLock.ReleaseReaderLock();
                }
                if (ClientMarketData.SecurityLock.IsReaderLockHeld)
                {
                    ClientMarketData.SecurityLock.ReleaseReaderLock();
                }
                if (ClientMarketData.ViolationLock.IsReaderLockHeld)
                {
                    ClientMarketData.ViolationLock.ReleaseReaderLock();
                }
                Debug.Assert(!ClientMarketData.AreLocksHeld);
            }

            return(violationList);
        }
Beispiel #4
0
 private void Initialize(ClientMarketData.RestrictionRow restrictionRow)
 {
     // Initialize the record from the data model.
     this.restrictionId = restrictionRow.RestrictionId;
     this.severity      = (Severity)restrictionRow.Severity;
     this.approval      = (Approval)restrictionRow.Approval;
     this.description   = restrictionRow.Description;
 }
Beispiel #5
0
        public static Restriction Find(string restrictionId)
        {
            Restriction restriction = null;

            try
            {
                // Lock the tables.
                Debug.Assert(!ClientMarketData.AreLocksHeld);
                ClientMarketData.ConfigurationLock.AcquireReaderLock(CommonTimeout.LockWait);
                ClientMarketData.RestrictionLock.AcquireReaderLock(CommonTimeout.LockWait);

                int internalRestrictionId = FindKey("DEFAULT", restrictionId);
                if (internalRestrictionId != Identifier.NotFound)
                {
                    ClientMarketData.RestrictionRow restrictionRow = ClientMarketData.Restriction.FindByRestrictionId(internalRestrictionId);
                    if (restrictionRow == null)
                    {
                        throw new Exception(string.Format("Restriction {0} can'b be found", internalRestrictionId));
                    }

                    restriction = new Restriction(restrictionRow);
                }
            }
            finally
            {
                // Release the table locks.
                if (ClientMarketData.ConfigurationLock.IsReaderLockHeld)
                {
                    ClientMarketData.ConfigurationLock.ReleaseReaderLock();
                }
                if (ClientMarketData.RestrictionLock.IsReaderLockHeld)
                {
                    ClientMarketData.RestrictionLock.ReleaseReaderLock();
                }
                Debug.Assert(!ClientMarketData.AreLocksHeld);
            }

            return(restriction);
        }
Beispiel #6
0
 public Restriction(ClientMarketData.RestrictionRow restrictionRow)
 {
     // Initialize the object from the ADO record.
     Initialize(restrictionRow);
 }