Beispiel #1
0
        async Task <UserFile> IUserFileManager.WriteAsync(string userId, string projectName, string filePath, Stream data, string contentType)
        {
            // Get the base files directory.
            string baseDir = GetBaseDir(userId, projectName);

            using (await LockFile.LockAsync(GetLockFile(userId, projectName)))
            {
                List <UserFile> fileMetaList = null;
                try
                {
                    fileMetaList = await GetUserFilesAsync(userId, projectName);
                }
                catch (Exception e)
                {
                    await AsyncIO.WriteAllTextAsync($"{baseDir}\\filemeta.json", "[]", Encoding.UTF8);

                    fileMetaList = new List <UserFile>();
                }

                if (fileMetaList.TryFind(x => x.VirtualPath == filePath, out var _))
                {
                    return(await OverwriteFileAsync(baseDir, fileMetaList, filePath, data, contentType));
                }
                else
                {
                    return(await WriteNewFileAsync(baseDir, fileMetaList, filePath, data, contentType));
                }
            }
        }
Beispiel #2
0
        private async Task <List <UserFile> > GetUserFilesAsync(string userId, string projectName)
        {
            string fileMetaJson = await AsyncIO.ReadAllTextAsync($"{GetBaseDir(userId, projectName)}\\filemeta.json", Encoding.UTF8);

            // Get the file meta list.
            return(JsonConvert.DeserializeObject <List <UserFile> >(fileMetaJson));
        }
Beispiel #3
0
        private async Task ProduceStart(bool flushHeaders)
        {
            Debug.Assert(_hasResponseStarted == false);

            _hasResponseStarted = true;

            SetResponseHeaders();

            EnsureIOInitialized();
            var canHaveNonEmptyBody = StatusCodeCanHaveBody();

            if (flushHeaders)
            {
                try
                {
                    await AsyncIO.FlushAsync(canHaveNonEmptyBody);
                }
                // Client might be disconnected at this point
                // don't leak the exception
                catch (ConnectionResetException)
                {
                    AbortIO(clientDisconnect: true);
                }
            }

            if (!canHaveNonEmptyBody)
            {
                _bodyOutput.Dispose();
            }
            else
            {
                _writeBodyTask = WriteBody(!flushHeaders);
            }
        }
Beispiel #4
0
        private async Task <UserFile> WriteNewFileAsync(string baseDir, List <UserFile> fileMetaList, string filePath, Stream data, string contentType)
        {
            // Generate a new file name.
            string realFileName = GenerateFilename();

            try
            {
                using (FileStream fs = File.Create($"{baseDir}\\{realFileName}"))
                {
                    await data.CopyToAsync(fs);
                }
            }
            catch (Exception e)
            {
                File.Delete($"{baseDir}{realFileName}");
                throw e;
            }

            var file = new UserFile
                       (
                virtualPath: filePath,
                localPath: realFileName,
                fileSize: data.Position,
                contentType: contentType
                       );

            // Add the file to the meta.
            fileMetaList.Add(file);

            // Write the new file meta back to the file.
            await AsyncIO.WriteAllTextAsync($"{baseDir}\\filemeta.json", JsonConvert.SerializeObject(fileMetaList), Encoding.UTF8);

            return(file);
        }
        /**
         * Launch the file transformation process (webpack).
         */
        private async Task TransformFilesAsync(string pwd)
        {
            IDictionary <string, string> dependencies = await GetPackageDependenciesAsync(pwd);

            IList <string> entries = new List <string>();

            IList <string> switchCases = new List <string>();

            foreach (var module in dependencies.Keys)
            {
                string relativeEntry = await GetModuleEntryAsync(pwd, module);

                string moduleEntry = module + "/" + relativeEntry;
                switchCases.Add($"case '{module}': return require('{moduleEntry}');");
            }

            string switchBody   = $"{string.Join("\n", switchCases)} default: throw new Error('Unknown module \"' + moduleId + '\"!'); ";
            string moduleSwitch = $"switch(moduleId) {{ {switchBody} }}";
            string js           = $"self[\"__cwuser_require__\"] = function(moduleId) {{ {moduleSwitch} }}";

            var wbIndex = $"{pwd}\\index.js";
            await AsyncIO.WriteAllTextAsync(wbIndex, js, Encoding.UTF8);

            var     cmd  = $"{_webpackPath} index.js bundle.js";
            Process proc = StartProcess(cmd, pwd);

            await WaitForExitAsync(proc);
        }
        private async Task ProduceStart(bool flushHeaders)
        {
            Debug.Assert(_hasResponseStarted == false);

            _hasResponseStarted = true;

            SetResponseHeaders();

            EnsureIOInitialized();

            if (flushHeaders)
            {
                try
                {
                    await AsyncIO.FlushAsync();
                }
                // Client might be disconnected at this point
                // don't leak the exception
                catch (IOException)
                {
                    // ignore
                }
            }

            _writeBodyTask = WriteBody(!flushHeaders);
        }
Beispiel #7
0
        public int[] AsyncWrite(int connection, int[] serverHandles, object[] values, out int transactionId)
        {
            var ppErrors = IntPtr.Zero;

            AsyncIO.Write(connection, serverHandles.Length, serverHandles, values, out transactionId, out ppErrors);
            return(ComUtils.GetInt32s(ref ppErrors, serverHandles.Length, true));
        }
Beispiel #8
0
        async Task IUserFileManager.RenameAsync(string userId, string projectName, string oldFilePath, string newFilePath)
        {
            // Get the base files directory.
            string baseDir = GetBaseDir(userId, projectName);

            using (await LockFile.LockAsync(GetLockFile(userId, projectName)))
            {
                string fileMetaJson = null;
                try
                {
                    // Read the metadata file.
                    fileMetaJson = await AsyncIO.ReadAllTextAsync($"{baseDir}\\filemeta.json", Encoding.UTF8);
                }
                catch (FileNotFoundException e)
                {
                    ThrowNotFound(projectName, oldFilePath);
                }
                // Get the file meta dict.
                List <UserFile> fileMetaList = JsonConvert.DeserializeObject <List <UserFile> >(fileMetaJson);
                if (fileMetaList.TryFind(x => x.VirtualPath == oldFilePath, out var fileMeta))
                {
                    // Update the value in the list.
                    fileMetaList.Remove(fileMeta);
                    fileMetaList.Add(fileMeta.WithVirtualPath(newFilePath));
                }
                // Write the new file meta back to the file.
                await AsyncIO.WriteAllTextAsync($"{baseDir}\\filemeta.json", JsonConvert.SerializeObject(fileMetaList), Encoding.UTF8);
            }
        }
        // Constructor
        public UI161()
        {
            InitializeComponent();

            // Instantiate Modbus printer and register for log events
            MB           = new Modbus(this);
            MB.Log      += Modbus_Log;
            MB.Complete += P_Complete;

            // Instantiate the user pattern
            up      = new UserPattern(this, MB, tabLogo);
            up.Log += Modbus_Log;

            // Start AsyncIO
            asyncIO           = new AsyncIO(this, MB);
            asyncIO.Log      += Modbus_Log;
            asyncIO.Complete += AsyncIO_Complete;

            doSubs      = new DoSubs(this, MB, grpMain);
            doSubs.Subs = new Substitution[2];
            //if (global.DefaultSubRules != null) {
            //   doSubs.Subs[(int)DoSubs.Src.global] = global.DefaultSubRules.Copy();
            //}
            //if (parent.msg != null && parent.msg.Substitution != null) {
            //   doSubs.Subs[(int)DoSubs.Src.msg] = parent.msg.Substitution.Copy();
            //}
            doSubs.BuildControls(prop);
        }
Beispiel #10
0
        /// <summary>
        /// Loads the bot token from disk.
        /// </summary>
        /// <exception cref="FileNotFoundException">Thrown if the bot token file can't be found.</exception>
        /// <exception cref="InvalidDataException">Thrown if no token exists in the file.</exception>
        /// <returns>A retrieval result which may or may not have succeeded.</returns>
        public async Task <RetrieveEntityResult <string> > GetBotTokenAsync()
        {
            var tokenPath = UPath.Combine(UPath.Root, "Discord", "bot.token");

            if (!this.FileSystem.FileExists(tokenPath))
            {
                return(RetrieveEntityResult <string> .FromError("The token file could not be found."));
            }

            var getTokenStream = OpenLocalStream(tokenPath);

            if (!getTokenStream.IsSuccess)
            {
                return(RetrieveEntityResult <string> .FromError("The token file could not be opened."));
            }

            await using var tokenStream = getTokenStream.Entity;
            var token = await AsyncIO.ReadAllTextAsync(tokenStream);

            if (string.IsNullOrEmpty(token))
            {
                return(RetrieveEntityResult <string> .FromError("The token file did not contain a valid token."));
            }

            return(RetrieveEntityResult <string> .FromSuccess(token));
        }
Beispiel #11
0
        public int[] AsyncRead(int connection, OpcDataSource source, int[] serverHandles, out int transactionId)
        {
            var ppErrors = IntPtr.Zero;

            AsyncIO.Read(connection, (OPCDATASOURCE)source, serverHandles.Length, serverHandles, out transactionId, out ppErrors);
            return(ComUtils.GetInt32s(ref ppErrors, serverHandles.Length, true));
        }
        private async Task WriteBody(bool flush = false)
        {
            Exception error = null;

            try
            {
                while (true)
                {
                    var result = await _bodyOutput.Reader.ReadAsync();

                    var buffer = result.Buffer;
                    try
                    {
                        if (!buffer.IsEmpty)
                        {
                            await AsyncIO.WriteAsync(buffer);
                        }

                        // if request is done no need to flush, http.sys would do it for us
                        if (result.IsCompleted)
                        {
                            // When is the reader completed? Is it always after the request pipeline exits? Or can CompleteAsync make it complete early?
                            if (HasTrailers)
                            {
                                SetResponseTrailers();
                            }

                            break;
                        }

                        flush |= result.IsCanceled;

                        if (flush)
                        {
                            await AsyncIO.FlushAsync(moreData : true);

                            flush = false;
                        }
                    }
                    finally
                    {
                        _bodyOutput.Reader.AdvanceTo(buffer.End);
                    }
                }
            }
            // We want to swallow IO exception and allow app to finish writing
            catch (ConnectionResetException)
            {
                AbortIO(clientDisconnect: true);
            }
            catch (Exception ex)
            {
                error = ex;
                Log.UnexpectedError(_logger, nameof(IISHttpContext), ex);
            }
            finally
            {
                _bodyOutput.Reader.Complete(error);
            }
        }
Beispiel #13
0
        /// <summary>
        /// Loads the sass from disk.
        /// </summary>
        private async Task <DetermineConditionResult> LoadSassAsync()
        {
            var sassPath     = UPath.Combine(UPath.Root, "Sass", "sass.txt");
            var sassNSFWPath = UPath.Combine(UPath.Root, "Sass", "sass-nsfw.txt");

            var getSassStream = _content.OpenLocalStream(sassPath);

            if (getSassStream.IsSuccess)
            {
                await using var sassStream = getSassStream.Entity;
                _sass = (await AsyncIO.ReadAllLinesAsync(sassStream)).ToList();
            }
            else
            {
                return(DetermineConditionResult.FromError(getSassStream));
            }

            var getNSFWSassStream = _content.OpenLocalStream(sassNSFWPath);

            if (getNSFWSassStream.IsSuccess)
            {
                await using var nsfwSassStream = getNSFWSassStream.Entity;
                _sassNSFW = (await AsyncIO.ReadAllLinesAsync(nsfwSassStream)).ToList();
            }
            else
            {
                return(DetermineConditionResult.FromError(getNSFWSassStream));
            }

            _isSassLoaded = true;
            return(DetermineConditionResult.FromSuccess());
        }
Beispiel #14
0
        /// <summary>
        /// Loads the sass from disk.
        /// </summary>
        private async Task LoadSassAsync()
        {
            var sassPath     = UPath.Combine(UPath.Root, "Sass", "sass.txt");
            var sassNSFWPath = UPath.Combine(UPath.Root, "Sass", "sass-nsfw.txt");

            var getSassStream = OpenLocalStream(sassPath);

            if (getSassStream.IsSuccess)
            {
                using (var sassStream = getSassStream.Entity)
                {
                    _sass = (await AsyncIO.ReadAllLinesAsync(sassStream)).ToList();
                }
            }

            var getNSFWSassStream = OpenLocalStream(sassNSFWPath);

            if (getNSFWSassStream.IsSuccess)
            {
                using (var nsfwSassStream = getNSFWSassStream.Entity)
                {
                    _sassNSFW = (await AsyncIO.ReadAllLinesAsync(nsfwSassStream)).ToList();
                }
            }
        }
        public async Task <string> GetChamp2ndLane(string champName)
        {
            try {
                var jsonString = await AsyncIO.ReadFileAsync("cache/champMatchUps.json");

                var champMatchUps = JsonConvert.DeserializeObject <Dictionary <string, ChampMatchups> >(jsonString);
                var lanes         = champMatchUps[champName];
                //get the max value
                int    FirstMaxGames   = 0;
                string FirstMaxLane    = "";
                string secoundMaxLane  = "";
                int    secoundMaxGames = 0;
                foreach (var lane in lanes.GetType().GetFields())
                {
                    var gamesPlayed = (int)lanes.GetType().GetField(lane.Name).GetValue(lanes);
                    if (gamesPlayed > FirstMaxGames)
                    {
                        FirstMaxGames = gamesPlayed;
                        FirstMaxLane  = lane.Name;
                    }

                    if (gamesPlayed > secoundMaxGames && gamesPlayed < FirstMaxGames)
                    {
                        secoundMaxGames = gamesPlayed;
                        secoundMaxLane  = lane.Name;
                    }
                }
                return(secoundMaxLane);
            } catch (Exception error) {
                throw error;
            }
        }
Beispiel #16
0
        public ILearner GetLearner(int result)
        {
            ILearner learner = null;

            switch (result)
            {
            case 1:
                learner = new DownloadWinForm();
                break;

            case 2:
                learner = new Threads();
                break;

            case 3:
                learner = new ThreadSafety();
                break;

            case 4:
                learner = new EasyPools();
                break;

            case 5:
                learner = new SignalManualReset();
                break;

            case 6:
                learner = new AsyncIO();
                break;

            case 7:
                learner = new TPLDemo();
                break;

            case 8:
                learner = new AsyncAndAwait();
                break;

            case 9:
                learner = new ConcurrentQueueDemo();
                break;

            case 10:
                learner = new ConcurrentDictionaryDemo();
                break;

            case 11:
                learner = new ProduceConsumer();
                break;

            default:
                learner = new DownloadWinForm();
                break;
            }
            return(learner);
        }
        private async Task WriteBody(bool flush = false)
        {
            Exception error = null;

            try
            {
                while (true)
                {
                    var result = await _bodyOutput.Reader.ReadAsync();

                    var buffer = result.Buffer;

                    try
                    {
                        if (!buffer.IsEmpty)
                        {
                            await AsyncIO.WriteAsync(buffer);
                        }

                        // if request is done no need to flush, http.sys would do it for us
                        if (result.IsCompleted)
                        {
                            break;
                        }

                        flush = flush | result.IsCanceled;

                        if (flush)
                        {
                            await AsyncIO.FlushAsync();

                            flush = false;
                        }
                    }
                    finally
                    {
                        _bodyOutput.Reader.AdvanceTo(buffer.End);
                    }
                }
            }
            // We want to swallow IO exception and allow app to finish writing
            catch (ConnectionResetException)
            {
                ConnectionReset();
            }
            catch (Exception ex)
            {
                error = ex;
                Log.UnexpectedError(_logger, nameof(IISHttpContext), ex);
            }
            finally
            {
                _bodyOutput.Reader.Complete(error);
            }
        }
        public static async Task <RetrieveEntityResult <IReadOnlyList <Species> > > DiscoverBundledSpeciesAsync
        (
            [NotNull] this ContentService @this
        )
        {
            const string speciesFilename = "Species.yml";

            var deser = new DeserializerBuilder()
                        .WithNodeDeserializer(i => new ValidatingNodeDeserializer(i), s => s.InsteadOf <ObjectNodeDeserializer>())
                        .WithNamingConvention(new UnderscoredNamingConvention())
                        .Build();

            var species        = new List <Species>();
            var speciesFolders = @this.FileSystem.EnumerateDirectories
                                 (
                BaseTransformationSpeciesPath
                                 );

            foreach (var directory in speciesFolders)
            {
                var speciesFilePath = UPath.Combine(directory, speciesFilename);
                if ([email protected](speciesFilePath))
                {
                    continue;
                }

                var openStreamResult = @this.OpenLocalStream(speciesFilePath);
                if (!openStreamResult.IsSuccess)
                {
                    return(RetrieveEntityResult <IReadOnlyList <Species> > .FromError(openStreamResult));
                }

                using (var speciesFile = openStreamResult.Entity)
                {
                    var content = await AsyncIO.ReadAllTextAsync(speciesFile, Encoding.UTF8);

                    try
                    {
                        species.Add(deser.Deserialize <Species>(content));
                    }
                    catch (YamlException yex)
                    {
                        if (yex.InnerException is SerializationException sex)
                        {
                            return(RetrieveEntityResult <IReadOnlyList <Species> > .FromError(sex));
                        }

                        return(RetrieveEntityResult <IReadOnlyList <Species> > .FromError(yex));
                    }
                }
            }

            return(RetrieveEntityResult <IReadOnlyList <Species> > .FromSuccess(species));
        }
Beispiel #19
0
    public static async Task <Result <IReadOnlyList <Transformation> > > DiscoverBundledTransformationsAsync
    (
        this ContentService @this,
        TransformationService transformation,
        Species species
    )
    {
        const string speciesFilename = "Species.yml";

        var speciesDir          = GetSpeciesDirectory(species);
        var transformationFiles = @this.FileSystem.EnumerateFiles(speciesDir)
                                  .Where(p => !p.ToString().EndsWith(speciesFilename));

        var transformations = new List <Transformation>();
        var deserializer    = new DeserializerBuilder()
                              .WithTypeConverter(new ColourYamlConverter())
                              .WithTypeConverter(new SpeciesYamlConverter(transformation))
                              .WithTypeConverter(new EnumYamlConverter <Pattern>())
                              .WithTypeConverter(new NullableEnumYamlConverter <Pattern>())
                              .WithNodeDeserializer(i => new ValidatingNodeDeserializer(i), s => s.InsteadOf <ObjectNodeDeserializer>())
                              .WithNamingConvention(UnderscoredNamingConvention.Instance)
                              .Build();

        foreach (var transformationFile in transformationFiles)
        {
            var getTransformationFileStream = @this.OpenLocalStream(transformationFile);
            if (!getTransformationFileStream.IsSuccess)
            {
                continue;
            }

            string content;
            await using (var transformationFileStream = getTransformationFileStream.Entity)
            {
                content = await AsyncIO.ReadAllTextAsync(transformationFileStream);
            }

            try
            {
                transformations.Add(deserializer.Deserialize <Transformation>(content));
            }
            catch (YamlException yex)
            {
                if (yex.InnerException is SerializationException sex)
                {
                    return(Result <IReadOnlyList <Transformation> > .FromError(sex));
                }

                return(Result <IReadOnlyList <Transformation> > .FromError(yex));
            }
        }

        return(Result <IReadOnlyList <Transformation> > .FromSuccess(transformations));
    }
        private async Task ReadBody()
        {
            Exception error = null;

            try
            {
                while (true)
                {
                    var memory = _bodyInputPipe.Writer.GetMemory();

                    var read = await AsyncIO.ReadAsync(memory);

                    // End of body
                    if (read == 0)
                    {
                        break;
                    }

                    // Read was not canceled because of incoming write or IO stopping
                    if (read != -1)
                    {
                        _consumedBytes += read;
                        _bodyInputPipe.Writer.Advance(read);
                    }

                    if (_consumedBytes > MaxRequestBodySize)
                    {
                        IISBadHttpRequestException.Throw(RequestRejectionReason.RequestBodyTooLarge);
                    }

                    var result = await _bodyInputPipe.Writer.FlushAsync();

                    if (result.IsCompleted || result.IsCanceled)
                    {
                        break;
                    }
                }
            }
            catch (ConnectionResetException ex)
            {
                AbortIO(clientDisconnect: true);
                error = ex;
            }
            catch (Exception ex)
            {
                error = ex;
                Log.UnexpectedError(_logger, nameof(IISHttpContext), ex);
            }
            finally
            {
                _bodyInputPipe.Writer.Complete(error);
            }
        }
Beispiel #21
0
 public GameSettings(Arkanoid arkanoidGame)
 {
     ArkanoidGame = arkanoidGame;
     if (AsyncIO.DoesFileExistAsync(ApplicationData.Current.RoamingFolder, "Unlocks"))
     {
         _result = Load <Dictionary <string, WadScore> >(ApplicationData.Current.RoamingFolder, "Unlocks");
     }
     else
     {
         _unlocks = new Dictionary <string, WadScore>();
         Save();
     }
 }
Beispiel #22
0
        /**
         * Initializes the project if it has not already been initialized.
         */
        private async Task TryInitProjectAsync(string pwd, string userId, string projectName)
        {
            if (!Directory.Exists(pwd))
            {
                using (await LockFile.LockAsync(GetLockFile(userId, projectName)))
                {
                    await TryInstallToolsAsync();

                    Directory.CreateDirectory(pwd);
                    await AsyncIO.WriteAllTextAsync(pwd + "\\package.json", "{\"name\":\"creo-web-" + userId + "-" + projectName + "\",\"version\":\"1.0.0\",\"dependencies\":{}}", Encoding.UTF8);
                }
            }
        }
 public GamePersistance(BaseGame game)
 {
     Game = game;
     if (AsyncIO.DoesFileExistAsync(ApplicationData.Current.RoamingFolder, "Data"))
     {
         _result = Load <T>(ApplicationData.Current.RoamingFolder, "Data");
     }
     else
     {
         _data = new T();
         Save();
     }
 }
        private async Task WriteBody(bool flush = false)
        {
            try
            {
                while (true)
                {
                    var result = await _bodyOutput.Reader.ReadAsync();

                    var buffer = result.Buffer;

                    try
                    {
                        if (!buffer.IsEmpty)
                        {
                            await AsyncIO.WriteAsync(buffer);
                        }

                        // if request is done no need to flush, http.sys would do it for us
                        if (result.IsCompleted)
                        {
                            break;
                        }

                        flush = flush | result.IsCanceled;

                        if (flush)
                        {
                            await AsyncIO.FlushAsync();

                            flush = false;
                        }
                    }
                    finally
                    {
                        _bodyOutput.Reader.AdvanceTo(buffer.End);
                    }
                }
            }
            // We want to swallow IO exception and allow app to finish writing
            catch (Exception ex)
            {
                if (!(ex is IOException))
                {
                    _bodyOutput.Reader.Complete(ex);
                }
            }
            finally
            {
                _bodyOutput.Reader.Complete();
            }
        }
        public Binding()
        {
            Task.Run(() => AsyncIO.CreateDirectoryAsync(deploymentAppFolder)).GetAwaiter().GetResult();
            var appsettingsFilePath = Path.Combine(deploymentAppFolder, "appsettings.json");

            _appsettingsFilePath = appsettingsFilePath;
            if (!File.Exists(appsettingsFilePath))
            {
                CreateSettingsFile(appsettingsFilePath);
            }
            var json = File.ReadAllText(appsettingsFilePath);

            Config = JsonConvert.DeserializeObject <Config>(json);
        }
Beispiel #26
0
        /**
         * Get a map of the project's dependencies.
         */
        private async Task <IDictionary <string, string> > GetPackageDependenciesAsync(string pwd)
        {
            var packageJsonPath = $"{pwd}\\package.json";

            if (!File.Exists(packageJsonPath))
            {
                return(new Dictionary <string, string>());
            }
            else
            {
                var package = JObject.Parse(await AsyncIO.ReadAllTextAsync(packageJsonPath, Encoding.UTF8));
                var deps    = package["dependencies"];
                var dict    = JsonConvert.DeserializeObject <Dictionary <string, string> >(deps.ToString());
                return(dict);
            }
        }
        private async Task ReadBody()
        {
            Exception error = null;

            try
            {
                while (true)
                {
                    var memory = _bodyInputPipe.Writer.GetMemory();

                    var read = await AsyncIO.ReadAsync(memory);

                    // End of body
                    if (read == 0)
                    {
                        break;
                    }

                    // Read was not canceled because of incoming write or IO stopping
                    if (read != -1)
                    {
                        _bodyInputPipe.Writer.Advance(read);
                    }

                    var result = await _bodyInputPipe.Writer.FlushAsync();

                    if (result.IsCompleted || result.IsCanceled)
                    {
                        break;
                    }
                }
            }
            catch (ConnectionResetException ex)
            {
                ConnectionReset();
                error = ex;
            }
            catch (Exception ex)
            {
                error = ex;
                Log.UnexpectedError(_logger, nameof(IISHttpContext), ex);
            }
            finally
            {
                _bodyInputPipe.Writer.Complete(error);
            }
        }
Beispiel #28
0
        public async Task <object> AddSite([FromBody] Site site)
        {
            var email = HttpContext.User.Claims.First().Value;
            var user  = _context.User.First(x => x.Email == email);

            if (_defaultSiteResources == null)
            {
                _defaultSiteResources = await AsyncIO.ReadAllTextAsync(Directory.GetCurrentDirectory() + @"\StaticData\Defaults\global-res.json", Encoding.UTF8);
            }
            if (site.Favicon.Length > 46600)
            {
                site.Favicon = "data:image/png;base64,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";
            }
            site.UserID       = user.ID;
            site.IsPublic     = false;
            site.MainPage     = 0;
            site.Resources    = _defaultSiteResources;
            site.Contributors = "{}";
            _context.Site.Add(site);
            _context.SaveChanges();
            site = _context.Site.OrderByDescending(x => x.ID).First(x => x.UserID == user.ID);
            Component component = new Component();

            component.ComponentText = "{}";
            component.SiteID        = site.ID;
            component.Name          = "HomePage";
            component.IsPage        = true;
            component.IsPrefab      = false;
            component.Screenshot    = "";
            component.CreationDate  = DateTime.Now;
            component.Creator       = user.ID;
            component.LastEdited    = DateTime.Now;
            component.LastEditedBy  = user.ID;
            component.Description   = "The default homepage.";
            component.AccessLevel   = 0;
            component.Path          = "/";
            component.Resources     = "{}";
            _context.Component.Add(component);
            _context.SaveChanges();
            component     = _context.Component.OrderByDescending(x => x.ID).First(x => x.SiteID == site.ID);
            site.MainPage = component.ID;
            _context.Site.Update(site);
            _context.SaveChanges();
            var u = new { ID = user.ID, username = user.Username };

            return(new { Success = true, ID = site.ID, Size = new SitePartial(site).size, Main = new { ID = component.ID, SiteID = component.SiteID, ComponentText = component.ComponentText, Size = new ComponentPartial(component).size, IsPage = component.IsPage, IsPrefab = component.IsPrefab, Name = component.Name, Screenshot = component.Screenshot, CreationDate = component.CreationDate, Creator = u, LastEdited = component.LastEdited, LastEditedBy = u, Resources = component.Resources, Description = component.Description, AccessLevel = component.AccessLevel, Path = component.Path } });
        }
Beispiel #29
0
        public static void LoadContent(ContentManager content)
        {
            try
            {
                var fontFilePath    = "Content\\Fonts\\Font2o.fnt";
                var fontFile        = FontLoader.Load(AsyncIO.GetContentStream(fontFilePath));
                var fontTexture     = content.Load <Texture2D>("Fonts/font2o_0");
                var fontGreyTexture = content.Load <Texture2D>("Fonts/font2o_1");

                GameFont     = new GameFont(fontFile, fontTexture, 1f);
                GameFontGrey = new GameFont(fontFile, fontGreyTexture, 0.75f);
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }
        }
        private async Task ProduceStart(bool flushHeaders)
        {
            Debug.Assert(_hasResponseStarted == false);

            _hasResponseStarted = true;

            SetResponseHeaders();

            EnsureIOInitialized();

            if (flushHeaders)
            {
                await AsyncIO.FlushAsync();
            }

            _writeBodyTask = WriteBody(!flushHeaders);
        }
Beispiel #31
0
 internal static void EnqueueSend(IConnection connection, byte[] buffer, int offset, int count, AsyncTransfer callback, object state, RateLimiter limiter, ConnectionMonitor managerMonitor, ConnectionMonitor peerMonitor)
 {
     AsyncIO io = new AsyncIO(connection, buffer, offset, count, callback, state, limiter, managerMonitor, peerMonitor);
     EnqueueSend(io);
 }
Beispiel #32
0
        private static void EnqueueSend(AsyncIO io)
        {
            try
            {
                if (io.RateLimiter == null)
                {
                    io.Connection.BeginSend(io.Buffer, io.Offset + io.Count, io.Total - io.Count, EndSendCallback, io);
                }
                else if (io.RateLimiter.Chunks > 0)
                {
                    if ((io.Total - io.Count) > ConnectionManager.ChunkLength / 2)
                        Interlocked.Decrement(ref io.RateLimiter.Chunks);

                    // Receive in 2kB (or less) chunks to allow rate limiting to work
                    io.Connection.BeginSend(io.Buffer, io.Offset + io.Count, Math.Min(ConnectionManager.ChunkLength, io.Total - io.Count), EndSendCallback, io);
                }
                else
                {
                    lock (sendQueue)
                        sendQueue.Add(io);
                }
            }
            catch
            {
                io.Callback(false, 0, io.State);
            }
        }