private void CallMessageHandler(AdkSocketMessageHandler handler)
 {
     if (handler != null)
     {
         handler(this);
     }
 }
        /// <summary>
        /// Constructor for SocketServer Supppor
        /// </summary>
        /// <param name="server">A Reference to the parent SocketServer</param>
        /// <param name="wrappedSocket">RetType: The Socket object we are encapsulating</param>
        /// <param name="sizeOfRawBuffer">The size of the raw buffer</param>
        /// <param name="messageHandler">Reference to the user defined message handler function</param>
        /// <param name="closeHandler">Reference to the user defined close handler function</param>
        /// <param name="errorHandler">Reference to the user defined error handler function</param>
        public AdkSocketConnection(
            AdkSocketBinding server,
            IConnectedSocket wrappedSocket,
            int sizeOfRawBuffer,
            AdkSocketMessageHandler messageHandler,
            AdkSocketMessageHandler closeHandler,
            AdkSocketErrorHandler errorHandler
            )
        {
            // Create the raw buffer
            fRawBufferSize = sizeOfRawBuffer;
            fRawBuffer     = new Byte[sizeOfRawBuffer];

            // Set the handler functions
            fMessageHandler = messageHandler;
            fCloseHandler   = closeHandler;
            fErrorHandler   = errorHandler;

            // Set the async socket function handlers
            fReadCompleteCallback = new AsyncCallback(ReceiveComplete);

            // Set reference to SocketServer
            fSocketServer = server;

            // Init the socket references
            fWrappedSocket = wrappedSocket;

            // Init the NetworkStream reference
            fStream = fWrappedSocket.CreateStream(FileAccess.ReadWrite, false);

            // Set these socket options
            fWrappedSocket.SetSocketOption
                (SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, sizeOfRawBuffer);
            fWrappedSocket.SetSocketOption
                (SocketOptionLevel.Socket, SocketOptionName.SendBuffer, sizeOfRawBuffer);
            fWrappedSocket.SetSocketOption
                (SocketOptionLevel.Socket, SocketOptionName.DontLinger, 1);
            fWrappedSocket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, 1);

            // Wait for a message
            Receive();
        }
        /// <summary>
        /// Constructor for SocketServer Supppor
        /// </summary>
        /// <param name="server">A Reference to the parent SocketServer</param>
        /// <param name="wrappedSocket">RetType: The Socket object we are encapsulating</param>
        /// <param name="sizeOfRawBuffer">The size of the raw buffer</param>
        /// <param name="messageHandler">Reference to the user defined message handler function</param>
        /// <param name="closeHandler">Reference to the user defined close handler function</param>
        /// <param name="errorHandler">Reference to the user defined error handler function</param>
        public AdkSocketConnection(
            AdkSocketBinding server,
            IConnectedSocket wrappedSocket,
            int sizeOfRawBuffer,
            AdkSocketMessageHandler messageHandler,
            AdkSocketMessageHandler closeHandler,
            AdkSocketErrorHandler errorHandler
            )
        {
            // Create the raw buffer
            fRawBufferSize = sizeOfRawBuffer;
            fRawBuffer = new Byte[sizeOfRawBuffer];

            // Set the handler functions
            fMessageHandler = messageHandler;
            fCloseHandler = closeHandler;
            fErrorHandler = errorHandler;

            // Set the async socket function handlers
            fReadCompleteCallback = new AsyncCallback( ReceiveComplete );

            // Set reference to SocketServer
            fSocketServer = server;

            // Init the socket references
            fWrappedSocket = wrappedSocket;

            // Init the NetworkStream reference
            fStream = fWrappedSocket.CreateStream( FileAccess.ReadWrite, false );

            // Set these socket options
            fWrappedSocket.SetSocketOption
                ( SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, sizeOfRawBuffer );
            fWrappedSocket.SetSocketOption
                ( SocketOptionLevel.Socket, SocketOptionName.SendBuffer, sizeOfRawBuffer );
            fWrappedSocket.SetSocketOption
                ( SocketOptionLevel.Socket, SocketOptionName.DontLinger, 1 );
            fWrappedSocket.SetSocketOption( SocketOptionLevel.Tcp, SocketOptionName.NoDelay, 1 );

            // Wait for a message
            Receive();
        }
 private void CallMessageHandler( AdkSocketMessageHandler handler )
 {
     if ( handler != null ) {
         handler( this );
     }
 }