예제 #1
0
        /// <summary>
        /// Deletes Media Buffer Server from System
        /// </summary>
        /// <param name="MediaBufferServerId"></param>
        internal bool DeleteMediaBufferServer(OCL.User AccessingUser, OCL.MediaBufferServer TargetMBS)
        {
            OCL.MediaBufferServer DefaultMBS = (OCL.MediaBufferServer)GetUnassignedObject(OCL.OysterUnassignedObjects.MediaBufferServer);
            if(DefaultMBS.mvarID == TargetMBS.mvarID)
                return false;

            if(!AccessingUser.mvarIsSuperUser)
            {
                OCL.Group DG = (OCL.Group)GetUnassignedObject(OCL.OysterUnassignedObjects.Group);
                OCL.Permission PP = GetPermission(DG,AccessingUser,TargetMBS);
                if(!PP.CanDelete)
                {
                    return false;
                }
            }
            //Check if any Sources are attached
            string sSQL = "UPDATE tblSource SET MediaBufferServerId = " + DefaultMBS.mvarID +
                " WHERE MediaBufferServerId = " + TargetMBS.mvarID;
            RF.ExecuteCommandNonQuery(sSQL);

            //Now it is safe to DELETE the Source
            sSQL = "DELETE FROM tblMediaBufferServer WHERE Id = " + TargetMBS.mvarID;

            int numrecs = 0;
            try
            {
                numrecs = RF.ExecuteCommand(sSQL);
                if(numrecs < 1)
                    throw new ArgumentException("Attempt to delete a Media Buffer Server that doesn't exist",TargetMBS.ToString());
            }
            catch(Exception Err)
            {
                MediaBufferServer R = GetMediaBufferServer(TargetMBS.mvarID);
                if(R != null)
                {
                    throw new ApplicationException("Error attempting to Remove Source: " + R.mvarAddress + ": " +
                        R.mvarPort + " ERROR MESSAGE: " + Err.Message);
                }
                else
                    throw new ArgumentException("Attempt to delete a Media Buffer Server that doesn't exist",TargetMBS.ToString());

            }
            return true;
        }