private void ReceiveStaticCommandPlugin(BinaryReader binaryReader, int size)
        {
            var    hash = binaryReader.ReadBytes(16);
            string filename;
            var    dataEntry = DataSystem.GetFreeGuid(out filename);

            Logger.Info("Receiving static command plugin ({0} B, {1})", size - 16, StringExtensions.BytesToHex(hash));

            byte[] fileHash;
            using (var fileStream = new FileStream(filename, FileMode.CreateNew, FileAccess.ReadWrite))
            {
                var buffer   = new byte[8192];
                int sizeLeft = size - 16;
                while (sizeLeft > 0)
                {
                    var packageSize = sizeLeft > 8192 ? 8192 : sizeLeft;
                    var read        = binaryReader.Read(buffer, 0, packageSize);
                    fileStream.Write(buffer, 0, read);
                    sizeLeft -= read;
                }

                fileStream.Position = 0;
                using (var md5 = new MD5CryptoServiceProvider())
                    fileHash = md5.ComputeHash(fileStream);
            }

            if (fileHash.SequenceEqual(hash))
            {
                _tcpServerInfo.DatabaseManager.AddStaticCommandPlugin(dataEntry, fileHash);
                Logger.Info("Static command was successfully added to the database ({0})",
                            StringExtensions.BytesToHex(hash));
                lock (_sendLock)
                {
                    Connection.BinaryWriter.Write((byte)FromClientPackage.StaticCommandPluginReceived);
                    Connection.BinaryWriter.Write(16);
                    Connection.BinaryWriter.Write(fileHash);
                }
            }
            else
            {
                Logger.Error("File hashes do not match. Removing all temporary files. Failed plugin {0}",
                             StringExtensions.BytesToHex(hash));
                File.Delete(filename);

                lock (_sendLock)
                {
                    Connection.BinaryWriter.Write((byte)FromClientPackage.StaticCommandPluginTransmissionFailed);
                    Connection.BinaryWriter.Write(16);
                    Connection.BinaryWriter.Write(fileHash);
                }
            }
        }