System.Net.SocketPermissionAttribute.ParseAddPermissions C# (CSharp) Method

ParseAddPermissions() private method

private ParseAddPermissions ( SocketPermission perm ) : void
perm SocketPermission
return void
        private void ParseAddPermissions(SocketPermission perm) {

            NetworkAccess access;
            if (0 == string.Compare(m_access, strConnect, StringComparison.OrdinalIgnoreCase )) {
                access = NetworkAccess.Connect;
            }
            else
            if (0 == string.Compare(m_access, strAccept, StringComparison.OrdinalIgnoreCase )) {
                access = NetworkAccess.Accept;
            }
            else {
                throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strAccess, m_access));
            }

            TransportType transport;
            try {
                transport = (TransportType) Enum.Parse(typeof(TransportType), m_transport, true);
            }
            catch (Exception e) {
                if (e is ThreadAbortException || e is StackOverflowException || e is OutOfMemoryException) {                                       
		            throw;
	            }
                throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strTransport, m_transport), e);
            }
            catch {
                throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strTransport, m_transport), new Exception(SR.GetString(SR.net_nonClsCompliantException)));
            }

            int port;
            if (string.Compare(m_port, "All", StringComparison.OrdinalIgnoreCase ) == 0) {
                m_port = "-1";
            }
            try {
                port = Int32.Parse(m_port, NumberFormatInfo.InvariantInfo);
            }
            catch (Exception e) {
                if (e is ThreadAbortException || e is StackOverflowException || e is OutOfMemoryException) {                                       
		            throw;
	            }
                throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strPort, m_port), e);
            }
            catch {
                throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strPort, m_port), new Exception(SR.GetString(SR.net_nonClsCompliantException)));
            }

            if (!ValidationHelper.ValidateTcpPort(port) && port != SocketPermission.AllPorts) {
                throw new ArgumentOutOfRangeException(SR.GetString(SR.net_perm_invalid_val, strPort, m_port));
            }
            perm.AddPermission(access, transport, m_host, port);
        }