/* Copyright (c) 1996-2019 The OPC Foundation. All rights reserved.
The source code in this file is covered under a dual-license scenario:
- RCL: for OPC Foundation members in good-standing
- GPL V2: everybody else
RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/
GNU General Public License as published by the Free Software Foundation;
version 2 of the License are accompanied with this source code. See http://opcfoundation.org/License/GPLv2
This source code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
namespace Opc.Ua.Bindings.Custom
{
///
/// Creates a new CustomTransportChannel with ITransportChannel interface.
///
public class CustomTransportChannelFactory : ITransportChannelFactory
{
///
/// The method creates a new instance of a custom transport channel
///
/// the transport channel
public ITransportChannel Create()
{
return new UaSCUaBinaryTransportChannel(new CustomMessageSocketFactory());
}
}
///
/// Creates a new CustomMessageSocket with IMessageSocket interface.
///
public class CustomMessageSocketFactory : IMessageSocketFactory
{
///
/// The method creates a new instance of a custom message socket
///
/// the message socket
public IMessageSocket Create(
IMessageSink sink,
BufferManager bufferManager,
int receiveBufferSize
)
{
// plug in your custom socket implementation here
return new CustomMessageSocket(sink, bufferManager, receiveBufferSize);
}
///
/// Gets the implementation description.
///
/// The implementation string.
public string Implementation { get { return "UA-Custom"; } }
}
///
/// Implement a CustomMessageSocket with IMessageSocket interface.
///
public class CustomMessageSocket : TcpMessageSocket // IMessageSocket
{
#region Constructors
///
/// Creates an unconnected socket.
///
public CustomMessageSocket(
IMessageSink sink,
BufferManager bufferManager,
int receiveBufferSize) :
base(sink, bufferManager, receiveBufferSize)
{ }
#endregion
}
}