public void Install()
        {
            _trace.TraceInformation("Start installing SignalR Oracle objects");

            string script = null;

            using (var resourceStream = GetType().Assembly.GetManifestResourceStream(string.Concat(GetType().Namespace, ".", InstallScript)))
            {
                var reader = new StreamReader(resourceStream);
                script = reader.ReadToEnd();
            }

            DbConnectionStringBuilder builder = new DbConnectionStringBuilder();

            builder.ConnectionString = _connectionString;
            string userId = builder["User Id"].ToString();

            script = script.Replace("TABLESPACE &TBLSPC_TDS_TABLES", string.Empty)
                     .Replace("&DBOWNER", userId.ToUpperInvariant());

            using (
                new TransactionScope(TransactionScopeOption.Required,
                                     new TransactionOptions {
                IsolationLevel = IsolationLevel.Serializable
            }))
            {
                var command = _dbOperationFactory.CreateDbOperation(_connectionString, script, _trace, _dbProviderFactory);
                command.ExecuteNonQuery();
            }

            _trace.TraceInformation("SignalR Oracle objects installed");
        }
        public Task Send(IList <Message> messages)
        {
            if (messages == null || messages.Count == 0)
            {
                return(MakeEmptyTask());
            }

            IDataParameter parameter = _dbProviderFactory.CreateParameter();

            parameter.ParameterName = "iPayload";
            parameter.Value         = OraclePayload.ToBytes(messages);

            OracleParameter oracleParameter = parameter as OracleParameter;

            if (oracleParameter != null)
            {
                oracleParameter.OracleDbType = OracleDbType.Blob;
            }

            var operation = _dbOperationFactory.CreateDbOperation(_connectionString, _insertSql, _traceSource, _dbProviderFactory, parameter);

            return(operation.ExecuteNonQueryAsync());
        }
示例#3
0
        public void GetLastPayloadId()
        {
            if (!_lastPayloadId.HasValue)
            {
                IDataParameter parameter = _dbProviderFactory.CreateParameter();
                parameter.DbType        = DbType.Int64;
                parameter.Direction     = ParameterDirection.InputOutput;
                parameter.ParameterName = "oPayloadId";

                IDbOperation lastPayloadIdOperation = _dbOperationFactory.CreateDbOperation(_connectionString, _maxIdSql,
                                                                                            _traceSource, _dbProviderFactory, parameter);

                try
                {
                    lastPayloadIdOperation.ExecuteStoredProcedure();
                    _lastPayloadId = (long?)parameter.Value;

                    if (Queried != null)
                    {
                        Queried();
                    }

                    _traceSource.TraceVerbose("OracleReceiver started, initial payload id={0}", _lastPayloadId);
                }
                catch (Exception ex)
                {
                    if (Faulted != null)
                    {
                        Faulted(ex);
                    }

                    _traceSource.TraceError("OracleReceiver error starting: {0}", ex);

                    throw;
                }
            }
        }