Exemplo n.º 1
0
        async Task <SessionHeaderItem> GetSessionAsync(ILoggingEnvironment environment)
        {
            // check...
            Monitor.Enter(_headersLock);
            SessionHeaderItem header = null;

            try
            {
                if (Headers.TryGetValue(environment.SessionId, out header) == false)
                {
                    var conn = GetConnection();
                    header = await conn.Table <SessionHeaderItem>().Where(v => v.SessionGuid == environment.SessionId).FirstOrDefaultAsync();

                    if (header == null)
                    {
                        header = SessionHeaderItem.CreateForEnvironment(environment);
                        await conn.InsertAsync(header);
                    }
                    // set...
                    Headers[environment.SessionId] = header;
                }
            }
            finally
            {
                Monitor.Exit(_headersLock);
            }

            // return...
            return(header);
        }
Exemplo n.º 2
0
        private async Task <SessionHeaderItem> GetSessionAsync(ILoggingEnvironment environment)
        {
            // check...
            lock (_headersLock)
            {
                if (Headers.ContainsKey(environment.SessionId))
                {
                    return(Headers[environment.SessionId]);
                }
            }

            var conn   = GetConnection();
            var header = await conn.Table <SessionHeaderItem>().Where(v => v.SessionGuid == environment.SessionId).FirstOrDefaultAsync();

            if (header == null)
            {
                header = SessionHeaderItem.CreateForEnvironment(environment);
                await conn.InsertAsync(header);
            }

            // set...
            lock (_headersLock)
            {
                if (!(Headers.ContainsKey(environment.SessionId)))
                {
                    Headers[environment.SessionId] = header;
                }
            }

            // return...
            return(header);
        }