예제 #1
0
 public SendContentPackages(Int64 clientId, Int64 sessionId, SqlConnection cnn, ReplicationService.ReplicationServiceClient client, Int32 lastPkgId)
 {
     _cnn       = cnn;
     _client    = client;
     _lastPkgId = lastPkgId;
     _clientId  = clientId;
     _sessionId = sessionId;
 }
예제 #2
0
 public ReceivePackages(Int64 clientId, Int64 sessionId, SqlConnection cnn, ReplicationService.ReplicationServiceClient client, Int32 lastPkgId)
     : base(cnn)
 {
     _client    = client;
     _lastPkgId = lastPkgId;
     _clientId  = clientId;
     _sessionId = sessionId;
 }
예제 #3
0
 public SendPackages(Int64 clientId, Int64 sessionId, SqlConnection cnn, ReplicationService.ReplicationServiceClient client, Int32 lastPkgId)
 {
     _cnn       = cnn;
     _client    = client;
     _lastPkgId = lastPkgId;
     _clientId  = clientId;
     _sessionId = sessionId;
     _counters  = new Dictionary <String, Int32>();
 }
예제 #4
0
        static void DoMain()
        {
            String _cnnStr = GetConnectionString();

            if (String.IsNullOrEmpty(_cnnStr))
            {
                return; // ошибка уже выведена
            }
            Log.WriteLine("Подключение: {0}", _cnnStr);

            var client = new ReplicationService.ReplicationServiceClient();

            try
            {
                using (var cnn = new SqlConnection(_cnnStr))
                {
                    cnn.Open();
                    Int32 dbVer = 0;
                    if (!CheckDbVersion(cnn, out dbVer))
                    {
                        return; // ошибка уже выведена
                    }
                    Int32 clientId = GetLongSysParam(cnn, "DB_ID");
                    Log.WriteLine("Идентификатор клиентской БД:\t\t{0}", clientId);
                    if (clientId == -1)
                    {
                        Log.WriteLine("Ошибка. В клиентской базе данных не установлено значение DB_ID");
                        return;
                    }
                    else if (clientId == 0)
                    {
                        Log.WriteLine("Ошибка. База данных не является клиентской БД (DB_ID = 0)");
                        return;
                    }

                    Int64 sessionId = client.StartSession(clientId);
                    Log.WriteLine("Идентификатор сеанса репликации:\t{0}", sessionId);

                    StartClientSession(cnn, sessionId);

                    /* ВХОДЯЩИЕ СПРАВОЧНИКИ */
                    Int32 lastPkgId = GetLongSysParam(cnn, "LAST_PKG_ID");
                    (new ReceivePackages(clientId, sessionId, cnn, client, lastPkgId)).Run();

                    /* ВХОДЯЩИЕ ДОКУМЕНТЫ */
                    (new GetPackages(clientId, sessionId, cnn, client, lastPkgId)).Run();

                    /* ИСХОДЯЩИЕ ДОКУМЕНТЫ, ЧЕКИ, Z-ОТЧЕТЫ и т.д.*/
                    (new SendPackages(clientId, sessionId, cnn, client, lastPkgId)).Run();

                    /* ИСХОДЯЩИЕ ПАКЕТЫ */
                    (new SendContentPackages(clientId, sessionId, cnn, client, lastPkgId)).Run();

                    client.EndSession(clientId, sessionId);
                    EndClientSession(cnn, sessionId);
                }
            }
            catch (FaultException ex)
            {
                Log.WriteLine("Ошибка на сервере: " + ex.Message);
            }
            catch (SqlException sqex)
            {
                Log.WriteLine("SqlException: " + sqex.Message);
            }
            catch (Exception ex2)
            {
                Log.WriteLine("Exception: " + ex2.Message);
            }
            finally
            {
                client.Close();
            }
        }