/// <summary>
        /// Handle request.
        /// </summary>
        /// <param name="acceptedSocket"></param>
        private void HandleAcceptedRequest(Socket acceptedSocket)
        {
            try
            {
                while (true)
                {
                    int receivedLength = acceptedSocket.ReceiveMessageAndFileDescriptor(
                        out byte[] messageBuffer,
                        out var sharedMemoryFd);

                    if (receivedLength == 0)
                    {
                        // Disconnected.
                        //
                        return;
                    }

                    string sharedMemoryName = Encoding.ASCII.GetString(messageBuffer);

                    if (sharedMemoryFd != Native.InvalidPointer)
                    {
                        // Store received file descriptor in the dictionary.
                        //
                        lock (fileDescriptors)
                        {
                            fileDescriptors.Add(sharedMemoryName, sharedMemoryFd);
                        }
                    }
                    else
                    {
                        lock (fileDescriptors)
                        {
                            if (fileDescriptors.ContainsKey(sharedMemoryName))
                            {
                                sharedMemoryFd = fileDescriptors[sharedMemoryName];
                            }
                        }

                        FileDescriptorExchangeMessage msg = default;

                        acceptedSocket.SendMessageAndFileDescriptor(
                            ref msg,
                            sharedMemoryFd);
                    }
                }
            }
            catch
            {
                // #TODO verify is disconnected
                //
            }
        }
        /// <summary>
        /// Handle request.
        /// </summary>
        /// <param name="acceptedSocket"></param>
        private void HandleAcceptedRequest(Socket acceptedSocket)
        {
            try
            {
                while (true)
                {
                    FileDescriptorExchangeMessage msg = default;
                    acceptedSocket.ReceiveMessageAndFileDescriptor(ref msg, out IntPtr sharedMemoryFd);

                    if (msg.ContainsFd)
                    {
                        // Store received file descriptor in the dictionary.
                        //
                        fileDescriptors.Add(
                            msg.MemoryRegionId,
                            new AnonymousSharedMemory
                        {
                            SharedMemoryFd   = sharedMemoryFd,
                            SharedMemorySize = msg.MemoryRegionSize,
                        });
                    }
                    else
                    {
                        if (fileDescriptors.ContainsKey(msg.MemoryRegionId))
                        {
                            AnonymousSharedMemory sharedMemory = fileDescriptors[msg.MemoryRegionId];
                            msg.ContainsFd       = true;
                            msg.MemoryRegionSize = sharedMemory.SharedMemorySize;

                            acceptedSocket.SendMessageAndFileDescriptor(
                                ref msg,
                                sharedMemory.SharedMemoryFd);
                        }
                        else
                        {
                            // Replay we do not have require memory region.
                            //
                            msg.ContainsFd = false;
                            acceptedSocket.SendMessageAndFileDescriptor(
                                ref msg,
                                IntPtr.Zero);
                        }
                    }
                }
            }
            catch
            {
                // #TODO verify is disconnected
                //
            }
        }