/// <summary> /// This method is called when a message receive operation has been completed. /// </summary> /// <param name="socketError">a SocketError value that indicates whether Success or an error occurred</param> /// <param name="bytesTransferred">the number of bytes that were transferred</param> public void InCompleted(SocketError socketError, int bytesTransferred) { if (socketError != SocketError.Success) { m_socket.EventAcceptFailed(m_address.ToString(), socketError.ToErrorCode()); // dispose old object m_acceptedSocket.Handle.Dispose(); Accept(); } else { m_acceptedSocket.InitOptions(); var pgmSession = new PgmSession(m_acceptedSocket, m_options); IOThread ioThread = ChooseIOThread(m_options.Affinity); SessionBase session = SessionBase.Create(ioThread, false, m_socket, m_options, new Address(m_handle.LocalEndPoint)); session.IncSeqnum(); LaunchChild(session); SendAttach(session, pgmSession, false); m_socket.EventAccepted(m_address.ToString(), m_acceptedSocket.Handle); Accept(); } }
/// <summary> /// This method is called when a message receive operation has been completed. /// </summary> /// <param name="socketError">a SocketError value that indicates whether Success or an error occurred</param> /// <param name="bytesTransferred">the number of bytes that were transferred</param> public void InCompleted(SocketError socketError, int bytesTransferred) { if (socketError != SocketError.Success) { m_socket.EventAcceptFailed(m_address.ToString(), socketError.ToErrorCode()); // dispose old object m_acceptedSocket.Handle.Dispose(); Accept(); } else { //This if-case only concerns bound PGM Subscribers after the Ethernet cable has been unplugged (Publisher on same host) //or plugged in again (Publisher on different host). if (m_address.InterfaceAddress != null) { try { m_acceptedSocket.Handle.SetSocketOption(PgmSocket.PgmLevel, PgmSocket.RM_ADD_RECEIVE_IF, m_address.InterfaceAddress.GetAddressBytes()); } catch { // dispose old object m_acceptedSocket.Handle.Dispose(); Accept(); return; } } m_acceptedSocket.InitOptions(); var pgmSession = new PgmSession(m_acceptedSocket, m_options); IOThread ioThread = ChooseIOThread(m_options.Affinity); SessionBase session = SessionBase.Create(ioThread, false, m_socket, m_options, new Address(m_handle.LocalEndPoint)); session.IncSeqnum(); LaunchChild(session); SendAttach(session, pgmSession, false); m_socket.EventAccepted(m_address.ToString(), m_acceptedSocket.Handle); Accept(); } }
public void Init([NotNull] PgmAddress pgmAddress) { m_pgmAddress = pgmAddress; m_pgmSocket = new PgmSocket(m_options, PgmSocketType.Publisher, (PgmAddress)m_addr.Resolved); m_pgmSocket.Init(); m_socket = m_pgmSocket.Handle; var localEndpoint = new IPEndPoint(IPAddress.Any, 0); m_socket.Bind(localEndpoint); m_pgmSocket.InitOptions(); m_outBufferSize = m_options.PgmMaxTransportServiceDataUnitLength; m_outBuffer = new ByteArraySegment(new byte[m_outBufferSize]); }
public void Init(PgmAddress pgmAddress) { m_pgmAddress = pgmAddress; m_pgmSocket = new PgmSocket(m_options, PgmSocketType.Publisher, (PgmAddress)m_addr.Resolved); m_pgmSocket.Init(); m_socket = m_pgmSocket.Handle; var localEndpoint = new IPEndPoint(IPAddress.Any, 0); m_socket.Bind(localEndpoint); m_pgmSocket.InitOptions(); m_outBufferSize = Config.PgmMaxTPDU; m_outBuffer = new ByteArraySegment(new byte[m_outBufferSize]); }
public void Init( PgmAddress pgmAddress) { m_pgmAddress = pgmAddress; m_pgmSocket = new PgmSocket(m_options, PgmSocketType.Publisher, (PgmAddress)m_addr.Resolved); m_pgmSocket.Init(); m_socket = m_pgmSocket.Handle; var localEndpoint = new IPEndPoint(IPAddress.Any, 0); m_socket.Bind(localEndpoint); m_pgmSocket.InitOptions(); m_outBufferSize = Config.PgmMaxTPDU; m_outBuffer = new ByteArraySegment(new byte[m_outBufferSize]); }
/// <exception cref="InvalidException">Unable to parse the address's port number, or the IP address could not be parsed.</exception> /// <exception cref="NetMQException">Error establishing underlying socket.</exception> public void Init(string network) { m_address = new PgmAddress(network); m_pgmSocket = new PgmSocket(m_options, PgmSocketType.Listener, m_address); m_pgmSocket.Init(); m_handle = m_pgmSocket.Handle; try { m_handle.Bind(m_address.Address); m_pgmSocket.InitOptions(); m_handle.Listen(m_options.Backlog); } catch (SocketException ex) { Close(); throw NetMQException.Create(ex); } m_socket.EventListening(m_address.ToString(), m_handle); }
/// <exception cref="InvalidException">Unable to parse the address's port number, or the IP address could not be parsed.</exception> /// <exception cref="NetMQException">Error establishing underlying socket.</exception> public void Init( string network) { m_address = new PgmAddress(network); m_pgmSocket = new PgmSocket(m_options, PgmSocketType.Listener, m_address); m_pgmSocket.Init(); m_handle = m_pgmSocket.Handle; try { m_handle.Bind(m_address.Address); m_pgmSocket.InitOptions(); m_handle.Listen(m_options.Backlog); } catch (SocketException ex) { Close(); throw NetMQException.Create(ex); } m_socket.EventListening(m_address.ToString(), m_handle); }