internal static bool TryCreate(BindingElementCollection elements, out Binding binding) { binding = null; if (elements.Count > 6) return false; // collect all binding elements TcpTransportBindingElement transport = null; BinaryMessageEncodingBindingElement encoding = null; SecurityBindingElement wsSecurity = null; BindingElement transportSecurity = null; foreach (BindingElement element in elements) { if (element is SecurityBindingElement) wsSecurity = element as SecurityBindingElement; else if (element is TransportBindingElement) transport = element as TcpTransportBindingElement; else if (element is MessageEncodingBindingElement) encoding = element as BinaryMessageEncodingBindingElement; else { if (transportSecurity != null) return false; transportSecurity = element; } } if (transport == null) return false; if (encoding == null) return false; TcpTransportSecurity tcpTransportSecurity = new TcpTransportSecurity(); UnifiedSecurityMode mode = GetModeFromTransportSecurity(transportSecurity); NetTcpSecurity security; if (!TryCreateSecurity(wsSecurity, mode, false /*session != null*/, transportSecurity, tcpTransportSecurity, out security)) return false; if (!SetTransportSecurity(transportSecurity, security.Mode, tcpTransportSecurity)) return false; NetTcpBinding netTcpBinding = new NetTcpBinding(transport, encoding, security); if (!netTcpBinding.IsBindingElementsMatch(transport, encoding)) return false; binding = netTcpBinding; return true; }
internal static bool TryCreate(BindingElementCollection elements, out Binding binding) { NetTcpSecurity security2; binding = null; if (elements.Count > 6) { return(false); } TcpTransportBindingElement transport = null; BinaryMessageEncodingBindingElement encoding = null; TransactionFlowBindingElement context = null; ReliableSessionBindingElement session = null; SecurityBindingElement sbe = null; BindingElement element6 = null; foreach (BindingElement element7 in elements) { if (element7 is SecurityBindingElement) { sbe = element7 as SecurityBindingElement; } else if (element7 is TransportBindingElement) { transport = element7 as TcpTransportBindingElement; } else if (element7 is MessageEncodingBindingElement) { encoding = element7 as BinaryMessageEncodingBindingElement; } else if (element7 is TransactionFlowBindingElement) { context = element7 as TransactionFlowBindingElement; } else if (element7 is ReliableSessionBindingElement) { session = element7 as ReliableSessionBindingElement; } else { if (element6 != null) { return(false); } element6 = element7; } } if (transport == null) { return(false); } if (encoding == null) { return(false); } if (context == null) { context = GetDefaultTransactionFlowBindingElement(); } TcpTransportSecurity tcpTransportSecurity = new TcpTransportSecurity(); UnifiedSecurityMode modeFromTransportSecurity = GetModeFromTransportSecurity(element6); if (!TryCreateSecurity(sbe, modeFromTransportSecurity, session != null, element6, tcpTransportSecurity, out security2)) { return(false); } if (!SetTransportSecurity(element6, security2.Mode, tcpTransportSecurity)) { return(false); } NetTcpBinding binding2 = new NetTcpBinding(transport, encoding, context, session, security2); if (!binding2.IsBindingElementsMatch(transport, encoding, context, session)) { return(false); } binding = binding2; return(true); }
internal static bool TryCreate(BindingElementCollection elements, out Binding binding) { binding = null; if (elements.Count > 6) { return(false); } // collect all binding elements TcpTransportBindingElement transport = null; BinaryMessageEncodingBindingElement encoding = null; TransactionFlowBindingElement context = null; ReliableSessionBindingElement session = null; SecurityBindingElement wsSecurity = null; BindingElement transportSecurity = null; foreach (BindingElement element in elements) { if (element is SecurityBindingElement) { wsSecurity = element as SecurityBindingElement; } else if (element is TransportBindingElement) { transport = element as TcpTransportBindingElement; } else if (element is MessageEncodingBindingElement) { encoding = element as BinaryMessageEncodingBindingElement; } else if (element is TransactionFlowBindingElement) { context = element as TransactionFlowBindingElement; } else if (element is ReliableSessionBindingElement) { session = element as ReliableSessionBindingElement; } else { if (transportSecurity != null) { return(false); } transportSecurity = element; } } if (transport == null) { return(false); } if (encoding == null) { return(false); } if (context == null) { context = GetDefaultTransactionFlowBindingElement(); } TcpTransportSecurity tcpTransportSecurity = new TcpTransportSecurity(); UnifiedSecurityMode mode = GetModeFromTransportSecurity(transportSecurity); NetTcpSecurity security; if (!TryCreateSecurity(wsSecurity, mode, session != null, transportSecurity, tcpTransportSecurity, out security)) { return(false); } if (!SetTransportSecurity(transportSecurity, security.Mode, tcpTransportSecurity)) { return(false); } NetTcpBinding netTcpBinding = new NetTcpBinding(transport, encoding, context, session, security); if (!netTcpBinding.IsBindingElementsMatch(transport, encoding, context, session)) { return(false); } binding = netTcpBinding; return(true); }
internal static bool TryCreate(BindingElementCollection elements, out Binding binding) { NetTcpSecurity security2; binding = null; if (elements.Count > 6) { return false; } TcpTransportBindingElement transport = null; BinaryMessageEncodingBindingElement encoding = null; TransactionFlowBindingElement context = null; ReliableSessionBindingElement session = null; SecurityBindingElement sbe = null; BindingElement element6 = null; foreach (BindingElement element7 in elements) { if (element7 is SecurityBindingElement) { sbe = element7 as SecurityBindingElement; } else if (element7 is TransportBindingElement) { transport = element7 as TcpTransportBindingElement; } else if (element7 is MessageEncodingBindingElement) { encoding = element7 as BinaryMessageEncodingBindingElement; } else if (element7 is TransactionFlowBindingElement) { context = element7 as TransactionFlowBindingElement; } else if (element7 is ReliableSessionBindingElement) { session = element7 as ReliableSessionBindingElement; } else { if (element6 != null) { return false; } element6 = element7; } } if (transport == null) { return false; } if (encoding == null) { return false; } if (context == null) { context = GetDefaultTransactionFlowBindingElement(); } TcpTransportSecurity tcpTransportSecurity = new TcpTransportSecurity(); UnifiedSecurityMode modeFromTransportSecurity = GetModeFromTransportSecurity(element6); if (!TryCreateSecurity(sbe, modeFromTransportSecurity, session != null, element6, tcpTransportSecurity, out security2)) { return false; } if (!SetTransportSecurity(element6, security2.Mode, tcpTransportSecurity)) { return false; } NetTcpBinding binding2 = new NetTcpBinding(transport, encoding, context, session, security2); if (!binding2.IsBindingElementsMatch(transport, encoding, context, session)) { return false; } binding = binding2; return true; }