static void Main(string[] args)
 {
   SessionBase.DoWindowsAuthentication = false; // Make sure to use the same setting when starting VelocityDBServer, see http://www.velocitydb.com/UserGuide.aspx
   try
   {                                                           // initial DatabaseLocation directory and hostname
     using (ServerClientSession session = new ServerClientSession(systemDir, System.Net.Dns.GetHostName()))
     {
       session.BeginUpdate();
       // your code here
       Person robinHood = new Person("Robin", "Hood", 30);
       Person billGates = new Person("Bill", "Gates", 56, robinHood);
       Person steveJobs = new Person("Steve", "Jobs", 56, billGates);
       robinHood.BestFriend = billGates;
       session.Persist(steveJobs);
       steveJobs.Friends.Add(billGates);
       steveJobs.Friends.Add(robinHood);
       billGates.Friends.Add(billGates);
       robinHood.Friends.Add(steveJobs);
       session.Commit();
     }
   }
   catch (Exception ex)
   {
     Console.WriteLine(ex.ToString());
   }
 }
示例#2
0
 private void session2locking(object sender, RoutedEventArgs e)
 {
     if (session != null)
     {
         try
         {
             if (session[1].InTransaction == false)
             {
                 if (session2server.IsChecked.Value)
                 {
                     session[1] = new ServerClientSession(systemDir, null, int.Parse(session2LockTimeout.Text), session2optimistic.IsChecked.Value);
                 }
                 else
                 {
                     session[1] = new SessionNoServer(systemDir, int.Parse(session2LockTimeout.Text), session2optimistic.IsChecked.Value);
                 }
             }
             else
             {
                 session2messages.Content = "Can only set OptimisticLocking attribute while not in a transaction";
             }
         }
         catch (Exception ex)
         {
             session2messages.Content = ex.Message;
         }
     }
 }
示例#3
0
        public void CreateMoreDataWithBackupServer()
        {
            int loops = 1000;
            int j;

            using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
            {
                Man   aMan   = null;
                Woman aWoman = null;
                session.BeginUpdate();
                for (j = 1; j <= loops; j++)
                {
                    aMan = new Man(null, aMan, DateTime.Now);
                    session.Persist(aMan);
                    aWoman = new Woman(aMan, aWoman);
                    session.Persist(aWoman);
                    aMan.m_spouse = new VelocityDb.WeakIOptimizedPersistableReference <VelocityDbSchema.Person>(aWoman);
                    if (j % 1000000 == 0)
                    {
                        Console.WriteLine("Loop # " + j);
                    }
                }
                UInt64 id = aWoman.Id;
                Console.WriteLine("Commit, done Loop # " + j);
                session.FlushUpdates();
                ReadSomeData(); // read some with uncommited cached server data
                session.Commit();
            }
        }
示例#4
0
        public void CreateDataWithBackupServer()
        {
            int loops = 30000;
            int j;

            using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
            {
                Man        aMan             = null;
                Woman      aWoman           = null;
                const bool isBackupLocation = true;
                session.BeginUpdate();
                // we need to have backup locations special since server is not supposed to do encryption or compression
                DatabaseLocation backupLocation = new DatabaseLocation(backupHost, backupDir, backupLocationStartDbNum, UInt32.MaxValue, session,
                                                                       PageInfo.compressionKind.LZ4, PageInfo.encryptionKind.noEncryption, isBackupLocation, session.DatabaseLocations.Default());
                session.NewLocation(backupLocation);
                session.Commit();
                session.BeginUpdate();
                for (j = 1; j <= loops; j++)
                {
                    aMan = new Man(null, aMan, DateTime.Now);
                    session.Persist(aMan);
                    aWoman = new Woman(aMan, aWoman);
                    session.Persist(aWoman);
                    aMan.m_spouse = new VelocityDb.WeakIOptimizedPersistableReference <VelocityDbSchema.Person>(aWoman);
                    if (j % 1000000 == 0)
                    {
                        Console.WriteLine("Loop # " + j);
                    }
                }
                UInt64 id = aWoman.Id;
                Console.WriteLine("Commit, done Loop # " + j);
                session.Commit();
            }
        }
示例#5
0
        public void fCreateDatabasesPreSizeServer()
        {
            Database database;

            using (ServerClientSession session = new ServerClientSession(systemDir))
            {
                session.BeginUpdate();
                for (uint i = 50000100; i < 50000200; i++)
                {
                    database = session.NewDatabase(i, i - 50000100, "myServerSetDbName");
                    Assert.NotNull(database);
                }
                session.Commit();
            }
            using (ServerClientSession session = new ServerClientSession(systemDir))
            {
                session.BeginUpdate();
                for (uint i = 50000000; i < 50000200; i++)
                {
                    database = session.OpenDatabase(i);
                    Assert.NotNull(database);
                }
                session.Commit();
            }
        }
示例#6
0
        public void CreateMoreDataWithBackupServer()
        {
            int    loops            = 30000;
            UInt16 objectsPerPage   = 350;
            UInt16 pagesPerDatabase = 65000;
            int    j;

            using (ServerClientSession session = new ServerClientSession(systemDir, Dns.GetHostName()))
            {
                Placement place  = new Placement(11, 1, 1, objectsPerPage, pagesPerDatabase);
                Man       aMan   = null;
                Woman     aWoman = null;
                session.BeginUpdate();
                for (j = 1; j <= loops; j++)
                {
                    aMan = new Man(null, aMan, DateTime.Now);
                    aMan.Persist(place, session);
                    aWoman = new Woman(aMan, aWoman);
                    aWoman.Persist(place, session);
                    aMan.m_spouse = new WeakIOptimizedPersistableReference <VelocityDbSchema.Person>(aWoman);
                    if (j % 1000000 == 0)
                    {
                        Console.WriteLine("Loop # " + j);
                    }
                }
                UInt64 id = aWoman.Id;
                Console.WriteLine("Commit, done Loop # " + j);
                session.Commit();
            }
        }
示例#7
0
 public void CreateMoreDataWithBackupServer()
 {
   int loops = 1000;
   int j;
   using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
   {
     Man aMan = null;
     Woman aWoman = null;
     session.BeginUpdate();
     for (j = 1; j <= loops; j++)
     {
       aMan = new Man(null, aMan, DateTime.Now);
       session.Persist(aMan);
       aWoman = new Woman(aMan, aWoman);
       session.Persist(aWoman);
       aMan.m_spouse = new VelocityDb.WeakIOptimizedPersistableReference<VelocityDbSchema.Person>(aWoman);
       if (j % 1000000 == 0)
         Console.WriteLine("Loop # " + j);
     }
     UInt64 id = aWoman.Id;
     Console.WriteLine("Commit, done Loop # " + j);
     session.FlushUpdates();
     ReadSomeData(); // read some with uncommited cached server data
     session.Commit();
   }
 }
示例#8
0
        /// <summary>
        /// Tests the caching and re using of sessiosn to increase perfomance by avoding
        /// creating new sessions for each client request
        /// </summary>
        // [Test]
        public void CachedSessionTest()
        {
            ServerClientSession lSession = GetCachedSession();

            //lets simulate that we did some prior work, return the session and get it again
            ReturnSessionToCache(lSession);
            lSession = GetCachedSession();
            TestClass lTestClass = new TestClass();

            lTestClass.SomeIntVar    = 123;
            lTestClass.SomeStringVar = "test";
            lTestClass.Persist(lSession, lTestClass);
            lSession.Commit();
            //return to cache, get it again and query the object
            //as this test is to verify it does not hang we do it in separate therad and kill after timeout
            ReturnSessionToCache(lSession);
            Thread lThread = new Thread(new ThreadStart(() =>
            {
                lSession = GetCachedSession();
                counter  = lSession.AllObjects <TestClass>(true, false).Count();
                ReturnSessionToCache(lSession);
            }));

            lThread.Start();
            lEvent.WaitOne(5000);
            if (lThread.IsAlive)
            {
                lThread.Abort();
            }
            Assert.AreNotEqual(0, counter, "Invalid nr of objects retreived");
        }
示例#9
0
 public void schemaUpdateMultipleSessions()
 {
     Assert.Throws <OptimisticLockingFailed>(() =>
     {
         using (ServerClientSession session = new ServerClientSession(systemDir))
         {
             session.BeginUpdate();
             Placement place = new Placement(555, 1, 1, 10, 10);
             Simple1 s1      = new Simple1(1);
             s1.Persist(place, session);
             s1 = null;
             using (ServerClientSession session2 = new ServerClientSession(systemDir))
             {
                 Placement place2 = new Placement(556, 1, 1, 10, 10);
                 session2.BeginUpdate();
                 Simple2 s2 = new Simple2(2);
                 s2.Persist(place2, session2);
                 s2 = null;
                 session.Commit();
                 session2.Commit(); // optemistic locking will fail due to session2 working with a stale schema (not the one updated by session 1)
                 session.BeginUpdate();
                 s1 = (Simple1)session.Open(555, 1, 1, false);
                 s2 = (Simple2)session.Open(556, 1, 1, false);
                 session.Commit();
                 session2.BeginUpdate();
                 s1 = (Simple1)session2.Open(555, 1, 1, false);
                 s2 = (Simple2)session2.Open(556, 1, 1, false);
                 session2.Commit();
             }
         }
     });
 }
示例#10
0
 public void CreateDataWithBackupServer()
 {
   int loops = 30000;
   int j;
   using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
   {
     Man aMan = null;
     Woman aWoman = null;
     const bool isBackupLocation = true;
     session.BeginUpdate();
     // we need to have backup locations special since server is not supposed to do encryption or compression
     DatabaseLocation backupLocation = new DatabaseLocation(backupHost, backupDir, backupLocationStartDbNum, UInt32.MaxValue, session,
       PageInfo.compressionKind.LZ4, PageInfo.encryptionKind.noEncryption, isBackupLocation, session.DatabaseLocations.Default());
     session.NewLocation(backupLocation);
     session.Commit();
     session.BeginUpdate();
     for (j = 1; j <= loops; j++)
     {
       aMan = new Man(null, aMan, DateTime.Now);
       session.Persist(aMan);
       aWoman = new Woman(aMan, aWoman);
       session.Persist(aWoman);
       aMan.m_spouse = new VelocityDb.WeakIOptimizedPersistableReference<VelocityDbSchema.Person>(aWoman);
       if (j % 1000000 == 0)
         Console.WriteLine("Loop # " + j);
     }
     UInt64 id = aWoman.Id;
     Console.WriteLine("Commit, done Loop # " + j);
     session.Commit();
   }
 }
示例#11
0
        public static void WatchUser()
        {
            using (ServerClientSession session = new ServerClientSession(systemDir, systemHost, 1000, true, false))
            {
                session.BeginRead();
                session.SubscribeToChanges(typeof(Vertex));
                Graph g = Graph.Open(session);
                session.Commit();
                Thread.Sleep(5000);

                for (int i = 0; i < 50; i++)
                {
                    List <Oid> changes = session.BeginReadWithEvents();
                    if (changes.Count == 0)
                    {
                        Console.WriteLine("No changes events at: " + DateTime.Now.ToString("HH:mm:ss:fff"));
                        Thread.Sleep(1000);
                    }
                    foreach (Oid id in changes)
                    {
                        object obj = session.Open(id);
                        Console.WriteLine("Received change event for: " + obj + " at: " + DateTime.Now.ToString("HH:mm:ss:fff"));;
                        //session.UnsubscribeToChanges(typeof(Person));
                    }
                    session.Commit();
                    Thread.Sleep(2000);
                }
            }
        }
示例#12
0
 public void CreateLocationSameHostServer(bool optimisticLocking)
 {
     using (ServerClientSession session = new ServerClientSession(systemDir, Dns.GetHostName(), 2000, optimisticLocking))
     {
         session.BeginUpdate();
         DatabaseLocation remoteLocation = new DatabaseLocation(Dns.GetHostName(), location2Dir, locationStartDbNum, locationEndDbNum, session, PageInfo.compressionKind.LZ4, 0);
         remoteLocation = session.NewLocation(remoteLocation);
         Database database = session.NewDatabase(remoteLocation.StartDatabaseNumber);
         Assert.NotNull(database);
         session.Commit();
     }
     using (ServerClientSession session = new ServerClientSession(systemDir, Dns.GetHostName(), 2000, optimisticLocking))
     {
         session.BeginUpdate();
         Database database = session.OpenDatabase(locationStartDbNum, false);
         Assert.NotNull(database);
         session.DeleteDatabase(database);
         session.Commit();
     }
     using (ServerClientSession session = new ServerClientSession(systemDir, Dns.GetHostName(), 2000, optimisticLocking))
     {
         session.BeginUpdate();
         foreach (DatabaseLocation loc in session.DatabaseLocations)
         {
             Console.WriteLine(loc.ToStringDetails(session, false));
         }
         session.DeleteLocation(session.DatabaseLocations.LocationForDb(locationStartDbNum));
         foreach (DatabaseLocation loc in session.DatabaseLocations)
         {
             Console.WriteLine(loc.ToStringDetails(session, false));
         }
         session.Commit();
     }
 }
示例#13
0
        void BtnOkClick(object pSender, RoutedEventArgs pEvents)
        {
            m_federationInfo.UsesServerClient      = (bool)RadioServer.IsChecked;
            m_federationInfo.ClassesFilenames      = (from ListViewItem lItem in AssemblyList.Items select(string) lItem.Content).ToArray();
            m_federationInfo.DependencyFiles       = (from ListViewItem lItem in DependencyList.Items select(string) lItem.Content).ToArray();
            m_federationInfo.SystemDbsPath         = DBDirTextBox.Text;
            m_federationInfo.HostName              = HostTextBox.Text;
            m_federationInfo.UsePessimisticLocking = (bool)PessimisticBox.IsChecked;
            m_federationInfo.WindowsAuthentication = (bool)WindowsAuthenticationBox.IsChecked;
            bool createNew = (bool)CreateNewBox.IsChecked;

            if (createNew)
            {
                SessionBase session;
                if (m_federationInfo.UsesServerClient || (m_federationInfo.HostName.Length > 0 && m_federationInfo.HostName != Dns.GetHostName()))
                {
                    session = new ServerClientSession(m_federationInfo.SystemDbsPath, m_federationInfo.HostName);
                }
                else
                {
                    session = new SessionNoServer(m_federationInfo.SystemDbsPath);
                }
                session.BeginUpdate();
                session.Commit();
            }
            DialogResult = true;
        }
示例#14
0
 static void Main(string[] args)
 {
     SessionBase.s_serverTcpIpPortNumber = 7032;
     SessionBase.DoWindowsAuthentication = false; // Make sure to use the same setting when starting VelocityDBServer, see http://www.velocitydb.com/UserGuide.aspx
     try
     {                                            // initial DatabaseLocation directory and hostname
         using (ServerClientSession session = new ServerClientSession(systemDir, System.Net.Dns.GetHostName()))
         {
             session.BeginUpdate();
             // your code here
             Person robinHood = new Person("Robin", "Hood", 30);
             Person billGates = new Person("Bill", "Gates", 56, robinHood);
             Person steveJobs = new Person("Steve", "Jobs", 56, billGates);
             robinHood.BestFriend = billGates;
             session.Persist(steveJobs);
             steveJobs.Friends.Add(billGates);
             steveJobs.Friends.Add(robinHood);
             billGates.Friends.Add(billGates);
             robinHood.Friends.Add(steveJobs);
             session.Commit();
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
     }
 }
示例#15
0
 public void schemaUpdateMultipleSessions()
 {
   using (ServerClientSession session = new ServerClientSession(systemDir))
   {
     session.BeginUpdate();
     Placement place = new Placement(555, 1, 1, 10, 10);
     Simple1 s1 = new Simple1(1);
     s1.Persist(place, session);
     s1 = null;
     using (ServerClientSession session2 = new ServerClientSession(systemDir))
     {
       Placement place2 = new Placement(556, 1, 1, 10, 10);
       session2.BeginUpdate();
       Simple2 s2 = new Simple2(2);
       s2.Persist(place2, session2);
       s2 = null;
       session.Commit();
       session2.Commit(); // optemistic locking will fail due to session2 working with a stale schema (not the one updated by session 1)
       session.BeginUpdate();
       s1 = (Simple1)session.Open(555, 1, 1, false);
       s2 = (Simple2)session.Open(556, 1, 1, false);
       session.Commit();
       session2.BeginUpdate();
       s1 = (Simple1)session2.Open(555, 1, 1, false);
       s2 = (Simple2)session2.Open(556, 1, 1, false);
       session2.Commit();
     }
   }
 }
示例#16
0
        public void DatabaseVersion(bool standalone, UInt32 dbNumber)
        {
            SessionBase session;

            if (standalone)
            {
                session = new SessionNoServer(systemDir);
            }
            else
            {
                session = new ServerClientSession(systemDir);
            }
            session.BeginUpdate();
            Placement place = new Placement(dbNumber);
            int       i     = 0;

            UInt64[] ids = new UInt64[10];
            VelocityDbSchema.Samples.Sample1.Person person = new VelocityDbSchema.Samples.Sample1.Person("Bill" + i, "Gates", 56);
            person.Persist(place, session);
            ids[i++] = person.Id;
            Database db = session.OpenDatabase(dbNumber);

            Assert.AreEqual(0, db.PersistentVersion());
            session.Commit();
            Assert.AreEqual(1, db.PersistentVersion());
            session.BeginUpdate();
            Assert.AreEqual(1, db.PersistentVersion());
            person = new VelocityDbSchema.Samples.Sample1.Person("Bill" + i, "Gates", 56);
            person.Persist(place, session);
            ids[i++] = person.Id;
            person   = new VelocityDbSchema.Samples.Sample1.Person("Bill" + i, "Gates", 56);
            person.Persist(place, session);
            ids[i++] = person.Id;
            Assert.AreEqual(1, db.PersistentVersion());
            session.Commit();
            Assert.AreEqual(2, db.PersistentVersion());
            session.BeginRead();
            Assert.AreEqual(2, db.PersistentVersion());
            session.Commit();
            session.BeginUpdate();
            person = new VelocityDbSchema.Samples.Sample1.Person("Bill" + i, "Gates", 56);
            person.Persist(place, session);
            ids[i++] = person.Id;
            session.Commit();
            Assert.AreEqual(3, db.PersistentVersion());
            session.BeginUpdate();
            for (int j = 0; j < i; j++)
            {
                session.DeleteObject(ids[j]);
            }
            session.Commit();
            Assert.AreEqual(4, db.PersistentVersion());
            session.BeginRead();
            Assert.AreEqual(4, db.PersistentVersion());
            session.Commit();
            session.BeginUpdate();
            session.DeleteDatabase(db);
            session.Commit();
            session.Dispose();
        }
 public void CreateLocationSameHostServer(bool optimisticLocking)
 {
   using (ServerClientSession session = new ServerClientSession(systemDir, Dns.GetHostName(), 2000, optimisticLocking))
   {
     session.BeginUpdate();
     DatabaseLocation remoteLocation = new DatabaseLocation(Dns.GetHostName(), location2Dir, locationStartDbNum, locationEndDbNum, session, PageInfo.compressionKind.LZ4, 0);
     remoteLocation = session.NewLocation(remoteLocation);
     Database database = session.NewDatabase(remoteLocation.StartDatabaseNumber);
     Assert.NotNull(database);
     session.Commit();
   }
   using (ServerClientSession session = new ServerClientSession(systemDir, Dns.GetHostName(), 2000, optimisticLocking))
   {
     session.BeginUpdate();
     Database database = session.OpenDatabase(locationStartDbNum, false);
     Assert.NotNull(database);
     session.DeleteDatabase(database);
     session.Commit();
   }
   using (ServerClientSession session = new ServerClientSession(systemDir, Dns.GetHostName(), 2000, optimisticLocking))
   {
     session.BeginUpdate();
     foreach (DatabaseLocation loc in session.DatabaseLocations)
       Console.WriteLine(loc.ToStringDetails(session, false));
     session.DeleteLocation(session.DatabaseLocations.LocationForDb(locationStartDbNum));
     foreach (DatabaseLocation loc in session.DatabaseLocations)
       Console.WriteLine(loc.ToStringDetails(session, false));
     session.Commit();
   }
 }
示例#18
0
 /// <summary>
 /// Returns a session to the cache.To be sure we have no transactiona ctive we abort in case
 /// the caller of this method did not commit or abort
 /// </summary>
 void ReturnSessionToCache(ServerClientSession pSession)
 {
     pSession.Abort();
     lock (sessions)
     {
         sessions.Add(pSession);
     }
 }
示例#19
0
 /// <summary>
 /// Returns a session to the cache.To be sure we have no transactiona ctive we abort in case
 /// the caller of this method did not commit or abort
 /// </summary>
 void ReturnSessionToCache(ServerClientSession pSession)
 {
     pSession.Abort();
     lock (sessions)
     {
         sessions.Add(pSession);
     }
 }
示例#20
0
        void VersionManagerTest(SessionBase sess)
        {
            VelocityDbSchema.Samples.Sample1.Person person;
            sess.BeginUpdate();
            foreach (DatabaseLocation loc in sess.DatabaseLocations)
            {
                Console.WriteLine(loc.ToStringDetails(sess, false));
            }
            Console.WriteLine();
            var count      = 10000;
            var vm         = GetVersionManager(sess) ?? new VersionManager <VelocityDbSchema.Samples.Sample1.Person>(RecordType.Person);
            var startCount = vm.Count;
            var tw         = new Stopwatch();

            tw.Start();
            for (int i = startCount; i < count + startCount; i++)
            {
                person = new VelocityDbSchema.Samples.Sample1.Person("Bill" + i, "Gates", 56);
                person.Persist(sess, person);
                vm.Add(new WeakIOptimizedPersistableReference <VelocityDbSchema.Samples.Sample1.Person>(person));
            }
            vm.Persist(sess, vm);
            tw.Stop();
            Console.WriteLine("{0} records in {1} ms.", count, tw.ElapsedMilliseconds);
            sess.Commit();

            // Now go get the vm and lookup the items
            if (sess is SessionNoServer)
            {
                sess = new SessionNoServer(systemDir);
            }
            else
            {
                sess = new ServerClientSession(systemDir);
            }
            sess.BeginRead();
            var vm2 = GetVersionManager(sess);

            if (vm2 != null)
            {
                Assert.IsTrue(vm2.Count > count - 1);
                person = vm2.Tip.GetTarget(false, sess);
                Assert.IsNotNull(person);
                var person2 = vm2.Tip.GetTarget(false, sess);
                Assert.AreSame(person, person2);
                Console.WriteLine("{0} records in version manager and tip is {1}.", vm2.Count, person2);
            }
            sess.Commit();
            sess.BeginUpdate();
            Database db = sess.OpenDatabase(VersionManager <VelocityDbSchema.Samples.Sample1.Person> .versionMangerDatabase, false, false);

            if (db != null)
            {
                sess.DeleteDatabase(db);
            }
            sess.Dispose();
        }
示例#21
0
 public void b2ServerIterateDatabases()
 {
   using (ServerClientSession session = new ServerClientSession(systemDir))
   {
     session.BeginRead();
     session.OpenAllDatabases();
     session.Commit();
   }
 }
示例#22
0
 public void dServerIterateDatabases()
 {
     using (ServerClientSession session = new ServerClientSession(systemDir))
     {
         session.BeginRead();
         session.OpenAllDatabases();
         session.Commit();
     }
 }
示例#23
0
 public void UseManyFederations()
 {
     for (int i = 0; i < 50; i++)
     {
         using (SessionBase session = new ServerClientSession("Federation" + i))
         {
             session.BeginUpdate();
             session.Commit();
         }
     }
 }
示例#24
0
    static void UpdaterThread()
    {
      using (ServerClientSession session = new ServerClientSession(s_systemDir))
      {
        session.BeginUpdate();
        Person Mats = new Person("Mats", "Persson", 22, 1234, null, null);
        session.Persist(Mats);
        Woman Kinga = new Woman("Kinga", "Persson", 56, 234, null, Mats);
        foreach (Person p in session.AllObjects<Person>(true))
        {
          p.Age = (ushort) (p.Age + 1); 
        }
        session.Persist(Kinga);
        session.Commit();
// 5 events
        Thread.Sleep(5000);

        session.BeginUpdate();
        Woman Lidia = new Woman("Lidia", "Persson", 22, 1234, null, null);
        session.Persist(Lidia);
        session.Commit();
// 0 events 
        Thread.Sleep(500);

        session.BeginUpdate();
        Woman Margareta = new Woman("Margareta", "Persson", 98, 1234, null, null);
        session.Persist(Margareta);
        session.Commit();
// 1 event
        Thread.Sleep(500);

        session.BeginUpdate();
        Woman Oliwia = new Woman("Oliwia", "Persson", 50, 1234, null, null);
        session.Persist(Oliwia);
        session.Commit();
// 0 events
        Thread.Sleep(500);

        session.BeginUpdate();
        foreach (Woman p in session.AllObjects<Woman>())
        {
          p.Age = (ushort) (p.Age + 1); 
        }
        session.Commit();
// 3 events
        session.BeginUpdate();
        foreach (Woman p in session.AllObjects<Woman>())
        {
          p.Age = (ushort)(p.Age + 1);
        }
        session.Commit();
// 3 events
      }
    }
示例#25
0
 public void OneMillionFindSingleRecordInTheMiddleServer()
 {
     using (ServerClientSession session = new ServerClientSession(systemDir))
     {
         session.BeginRead();
         var result = (from ComputerFileData computerFileData in session.AllObjects <ComputerFileData>()
                       where computerFileData.FileID == 500000
                       select computerFileData).First();
         session.Commit();
     }
 }
示例#26
0
 public void bServerIterateDatabases()
 {
   Database database;
   using (ServerClientSession session = new ServerClientSession(systemDir))
   {
     session.BeginRead();
     for (uint i = 50000000; i < 50001000; i++)
       database = session.OpenDatabase(i);
     session.Commit();
   }
 }
示例#27
0
 public void serverSessionOverhead(int numberOfSessions)
 {
     for (int i = 0; i < numberOfSessions; i++)
     {
         using (ServerClientSession session = new ServerClientSession(systemDir2, systemHost3))
         {
             session.BeginUpdate();
             session.Commit();
         }
     }
 }
 public void UseManyFederations()
 {
   for (int i = 0; i < 50; i++)
   {
     using (SessionBase session = new ServerClientSession("Federation" + i))
     {
       session.BeginUpdate();
       session.Commit();
     }
   }
 }
示例#29
0
 public void RestoreAllViaServer()
 {
     using (ServerClientSession session = new ServerClientSession(systemDir, null, 2000, false)) // don't use optimistic locking for restore
     {
         session.BeginUpdate();
         DatabaseLocation backupLocation = new DatabaseLocation(Dns.GetHostName(), backupDir, backupLocationStartDbNum, UInt32.MaxValue, session,
                                                                PageInfo.compressionKind.None, PageInfo.encryptionKind.noEncryption, true, session.DatabaseLocations.Default());
         session.RestoreFrom(backupLocation, DateTime.Now);
         session.Commit(false);
     }
 }
示例#30
0
        static void UpdaterThread()
        {
            using (ServerClientSession session = new ServerClientSession(s_systemDir))
            {
                session.BeginUpdate();
                Person Mats = new Person("Mats", "Persson", 22, 1234, null, null);
                session.Persist(Mats);
                Woman Kinga = new Woman("Kinga", "Persson", 56, 234, null, Mats);
                foreach (Person p in session.AllObjects <Person>(true))
                {
                    p.Age = (ushort)(p.Age + 1);
                }
                session.Persist(Kinga);
                session.Commit();
// 5 events
                Thread.Sleep(5000);

                session.BeginUpdate();
                Woman Lidia = new Woman("Lidia", "Persson", 22, 1234, null, null);
                session.Persist(Lidia);
                session.Commit();
// 0 events
                Thread.Sleep(500);

                session.BeginUpdate();
                Woman Margareta = new Woman("Margareta", "Persson", 98, 1234, null, null);
                session.Persist(Margareta);
                session.Commit();
// 1 event
                Thread.Sleep(500);

                session.BeginUpdate();
                Woman Oliwia = new Woman("Oliwia", "Persson", 50, 1234, null, null);
                session.Persist(Oliwia);
                session.Commit();
// 0 events
                Thread.Sleep(500);

                session.BeginUpdate();
                foreach (Woman p in session.AllObjects <Woman>())
                {
                    p.Age = (ushort)(p.Age + 1);
                }
                session.Commit();
// 3 events
                session.BeginUpdate();
                foreach (Woman p in session.AllObjects <Woman>())
                {
                    p.Age = (ushort)(p.Age + 1);
                }
                session.Commit();
// 3 events
            }
        }
示例#31
0
 public void OneMillionFindSingleRecordInTheMiddleServer()
 {
   using (ServerClientSession session = new ServerClientSession(systemDir))
   {
     session.BeginRead();
     var result = (from ComputerFileData computerFileData in session.AllObjects<ComputerFileData>()
                   where computerFileData.FileID == 500000
                   select computerFileData).First();
     session.Commit();
   }
 }
示例#32
0
 public void Recover1()
 {
     using (SessionNoServer session = new SessionNoServer(systemDir))
     {
         Recover1(session);
     }
     using (ServerClientSession session = new ServerClientSession(systemDir))
     {
         Recover1(session);
     }
 }
示例#33
0
        public void test()
        {
            ServerClientSession VelocityServerSession = new ServerClientSession(systemDir, "localhost");
            Woman TmpSynchronizationData = new Woman();//APSSynchData TmpSynchronizationData = default(APSSynchData);

            // APSSynchData();
            //TmpSynchronizationData.SyncedElections = new VelocityDbList<Man>();
            VelocityServerSession.BeginUpdate();
            TmpSynchronizationData.Persist(VelocityServerSession, TmpSynchronizationData);
            VelocityServerSession.Commit();
            //SaveToDisk("4.odb", DatabasePath + "\\4.odb");
            VelocityServerSession.BeginUpdate();
        }
示例#34
0
        public void bServerIterateDatabases()
        {
            Database database;

            using (ServerClientSession session = new ServerClientSession(systemDir))
            {
                session.BeginRead();
                for (uint i = 50000000; i < 50001000; i++)
                {
                    database = session.OpenDatabase(i);
                }
                session.Commit();
            }
        }
示例#35
0
 public void DeleteBackupLocation()
 {
     using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
     {
         session.BeginUpdate();
         DatabaseLocation backupLocation = session.DatabaseLocations.LocationForDb(backupLocationStartDbNum);
         List <Database>  dbList         = session.OpenLocationDatabases(backupLocation, true);
         foreach (Database db in dbList)
         {
             session.DeleteDatabase(db);
         }
         session.DeleteLocation(backupLocation);
         session.Commit();
     }
 }
示例#36
0
        public void ReadSomeData()
        {
            int ct = 0;

            using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
            {
                session.BeginRead();
                foreach (Man man in session.AllObjects <Man>())
                {
                    ct++;
                }
                Console.WriteLine("Commit, number of Men found: " + ct);
                session.Commit();
            }
        }
示例#37
0
        public void gDeleteDatabasesServer()
        {
            Database database;

            using (ServerClientSession session = new ServerClientSession(systemDir))
            {
                session.BeginUpdate();
                for (uint i = 50000000; i < 50000100; i++)
                {
                    database = session.OpenDatabase(i);
                    session.DeleteDatabase(database);
                }
                session.Commit();
            }
        }
示例#38
0
        public void RestoreToBackupServer()
        {
            using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost))
            {
                session.ClearServerCache(); // normally don't use this function but use it here to simulate a server going down and restarting
            }

            using (ServerClientSession session = new ServerClientSession(s_systemDir, backupHost, 1000, true, inMemoryOnly))
            {
                session.BeginUpdate();
                DatabaseLocation backupLocation = new DatabaseLocation(backupHost, backupDir, backupLocationStartDbNum, UInt32.MaxValue, session,
                                                                       PageInfo.compressionKind.LZ4, PageInfo.encryptionKind.noEncryption, true, session.DatabaseLocations.Default());
                session.RestoreFrom(backupLocation, DateTime.MaxValue);
                session.Commit(false, true);
            }
        }
示例#39
0
 public void DeleteDefaultLocation()
 {
     using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
     {
         session.BeginUpdate();
         DatabaseLocation defaultLocation = session.DatabaseLocations.Default();
         List <Database>  dbList          = session.OpenLocationDatabases(defaultLocation, true);
         foreach (Database db in dbList)
         {
             if (db.DatabaseNumber > Database.InitialReservedDatabaseNumbers)
             {
                 session.DeleteDatabase(db);
             }
         }
         session.DeleteLocation(defaultLocation);
         session.Commit();
     }
 }
 private void session1locking(object sender, RoutedEventArgs e)
 {
   if (session != null)
   try
   {
     if (session[0].InTransaction == false)
       if (session1server.IsChecked.Value)
         session[0] = new ServerClientSession(systemDir, null, int.Parse(session1LockTimeout.Text), session1optimistic.IsChecked.Value);
       else
         session[0] = new SessionNoServer(systemDir, int.Parse(session1LockTimeout.Text), session1optimistic.IsChecked.Value);
     else
       session1messages.Content = "Can only set OptimisticLocking attribute while not in a transaction";
   }
   catch (Exception ex)
   {
     session1messages.Content = ex.Message;
   }
 }
示例#41
0
        /// <summary>
        /// Gets a cached session.If no session is available in the cache, a new one will be created.
        /// </summary>
        /// <returns></returns>
        ServerClientSession GetCachedSession()
        {
            ServerClientSession lSession = null;
            lock (sessions)
            {
                //if this is the fiirst call or we are out of sesssions create a new one
                if (sessions.Count == 0)
                {
                    lSession= new ServerClientSession(GetDBDIrectory(), Environment.MachineName);

                }
                else
                {
                    lSession = sessions[0];
                    sessions.RemoveAt(0);
                }
            }
            lSession.BeginUpdate();
            return lSession;
        }
示例#42
0
        /// <summary>
        /// Gets a cached session.If no session is available in the cache, a new one will be created.
        /// </summary>
        /// <returns></returns>
        ServerClientSession GetCachedSession()
        {
            ServerClientSession lSession = null;

            lock (sessions)
            {
                //if this is the fiirst call or we are out of sesssions create a new one
                if (sessions.Count == 0)
                {
                    lSession = new ServerClientSession(GetDBDIrectory(), Environment.MachineName);
                }
                else
                {
                    lSession = sessions[0];
                    sessions.RemoveAt(0);
                }
            }
            lSession.BeginUpdate();
            return(lSession);
        }
示例#43
0
        public void multipleServersOKCleanup()
        {
            using (ServerClientSession session = new ServerClientSession(systemDir, systemHost, 2000, false)) // TO DO, change back to use optimistic locking
            {
                //session.SetTraceDbActivity(0);
                session.BeginUpdate();
                Database db = session.OpenDatabase(10000, true, false);
                if (db != null)
                {
                    session.DeleteDatabase(db);
                }
                db = session.OpenDatabase(20001, true, false);
                if (db != null)
                {
                    session.DeleteDatabase(db);
                }
                db = session.OpenDatabase(30001, true, false);
                if (db != null)
                {
                    session.DeleteDatabase(db);
                }
                db = session.OpenDatabase(40001, true, false);
                if (db != null)
                {
                    session.DeleteDatabase(db);
                }
                session.Commit();
                if (Directory.Exists(copyDir))
                {
                    Directory.Delete(copyDir, true);
                }
            }

            System.GC.Collect();
            System.GC.WaitForPendingFinalizers();

            using (ServerClientSession session = new ServerClientSession(systemDir, systemHost))
            {
                Assert.True(session.OptimisticLocking);
            }
        }
示例#44
0
 static void Main(string[] args)
 {
   using (ServerClientSession session = new ServerClientSession(s_systemDir))
   {
     session.BeginUpdate();
     File.Copy(s_licenseDbFile, Path.Combine(s_systemDir, "4.odb"), true);
     session.RegisterClass(typeof(Woman));
     session.RegisterClass(typeof(Man));
     session.SubscribeToChanges(typeof(Person));
     session.SubscribeToChanges(typeof(Woman), "OlderThan50");
     Person robinHood = new Person("Robin", "Hood", 30, 1234, null, null);
     session.Persist(robinHood);
     Person billGates = new Person("Bill", "Gates", 56, 234, robinHood, null);
     session.Persist(billGates);
     Person steveJobs = new Person("Steve", "Jobs", 56, 456, billGates, null);
     session.Persist(steveJobs);
     session.Commit();
     Thread t = new Thread(UpdaterThread);
     t.Start();
     Thread.Sleep(600);
     
     for (int i = 0; i < 50; i++)
     {
       List<Oid> changes = session.BeginReadWithEvents();
       if (changes.Count == 0)
       {
         Console.WriteLine("No changes events at: " + DateTime.Now.ToString("HH:mm:ss:fff"));
         Thread.Sleep(250);
       }
       foreach (Oid id in changes)
       {
         object obj = session.Open(id);
         Console.WriteLine("Received change event for: " + obj + " at: " + DateTime.Now.ToString("HH:mm:ss:fff"));;
         //session.UnsubscribeToChanges(typeof(Person));
       }
       Console.WriteLine();
       session.Commit();
     }       
     t.Join();
   }
 }
示例#45
0
 public void AppendFile()
 {
   Placement place = new Placement(798, 1, 1, 1, UInt16.MaxValue);
   using (ServerClientSession session = new ServerClientSession(systemDir))
   {
     session.BeginUpdate();
     ObjWithArray a = new ObjWithArray(10);
     a.Persist(place, session);
     session.Commit(); // commit Database 798
   }
   place = new Placement(798, 2, 1, 100, UInt16.MaxValue);
   for (int i = 0; i < 25; i++)
   {
     using (ServerClientSession session = new ServerClientSession(systemDir))
     {
       //session.SetTraceAllDbActivity();
       session.BeginUpdate();
       for (int j = 0; j < 1000; j++)
       {
         ObjWithArray a = new ObjWithArray(j * 10);
         a.Persist(place, session);
       }
       session.FlushUpdates();
       session.FlushUpdatesServers(); // check if this will cause file to be appended
       Database db = session.NewDatabase(3567);
       using (ServerClientSession session2 = new ServerClientSession(systemDir))
       {
         session2.BeginUpdate();
         ObjWithArray a = new ObjWithArray(10);
         a.Persist(place, session2);
         session2.Commit();
       }
       session.Abort(); // appended page space now unused? Need tidy?
     }
   }
 }
示例#46
0
 public void DeleteDefaultLocation()
 {
   using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
   {
     session.BeginUpdate();
     DatabaseLocation defaultLocation = session.DatabaseLocations.Default();
     List<Database> dbList = session.OpenLocationDatabases(defaultLocation, true);
     foreach (Database db in dbList)
       if (db.DatabaseNumber > Database.InitialReservedDatabaseNumbers)
         session.DeleteDatabase(db);
     session.DeleteLocation(defaultLocation);
     session.Commit();
   }
 }
示例#47
0
 public void DeleteBackupLocation()
 {
   using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
   {
     session.BeginUpdate();
     DatabaseLocation backupLocation = session.DatabaseLocations.LocationForDb(backupLocationStartDbNum);
     List<Database> dbList = session.OpenLocationDatabases(backupLocation, true);
     foreach (Database db in dbList)
       session.DeleteDatabase(db);
     session.DeleteLocation(backupLocation);
     session.Commit();
   }
 }
 public void SingleServerReaderSingleServerUpdater1()
 {
   ServerClientSession updater = new ServerClientSession(systemDir);
   ServerClientSession reader = new ServerClientSession(systemDir);
   const UInt32 dbNum = 345;
   try
   {
     updater.BeginUpdate();
     Man man;
     Placement place = new Placement(dbNum, 1, 1, 2);
     for (int i = 0; i < 100; i++)
     {
       man = new Man();
       man.Persist(place, updater);
     }
     updater.Commit();
     reader.BeginRead();
     Database db = reader.OpenDatabase(dbNum);
     foreach (Page page in db)
       Assert.True(page.PageInfo.VersionNumber == 1);
     reader.Commit();
     updater.BeginUpdate();
     reader.BeginRead();
     for (int i = 1; i < 25; i++)
     {
       db = reader.OpenDatabase(dbNum);
       foreach (Page page in db)
       {
         if (page.PageNumber > 0)
         {
           Assert.True(page.PageInfo.VersionNumber == (ulong)i);
           Man man2 = (Man)reader.Open(dbNum, page.PageNumber, 1, false);
           Man manUpdated = (Man)updater.Open(dbNum, page.PageNumber, 1, true);
         }
       }
       reader.Commit();
       reader.BeginRead();
       updater.Commit();
       updater.BeginUpdate();
       reader.ForceDatabaseCacheValidation(); // we now validate on BeginRead so to make this test pass, we need to add this call after updater commit.
     }
     Database db2 = reader.OpenDatabase(dbNum);
     db = updater.OpenDatabase(dbNum);
     for (int i = 25; i < 50; i++)
     {
       foreach (Page page in db)
       {
         if (page.PageNumber > 0)
         {
           Assert.True(page.PageInfo.VersionNumber == (ulong)i);
           Man manUpdated = (Man)updater.Open(dbNum, page.PageNumber, 1, true);
         }
       }
       updater.Commit();
       updater.BeginUpdate();
       foreach (Page page in db2)
       {
         if (page.PageNumber > 0)
         {
           Assert.True(page.PageInfo.VersionNumber == (ulong)i + 1);
           Man man2 = (Man)reader.Open(dbNum, page.PageNumber, 1, false);
         }
       }
       reader.ClearPageCache(); // required or else we will use cached page and Assert (see line above) will fail
       System.GC.Collect(); // force weak referenced pages to be garbage collected (again to avoid Assert failure)
     }
     reader.Commit();
     updater.DeleteDatabase(db);
     updater.Commit();
   }
   finally
   {
     updater.Dispose();
     reader.Dispose();
   }
 }
示例#49
0
 public void gDeleteDatabasesServer()
 {
   Database database;
   using (ServerClientSession session = new ServerClientSession(systemDir))
   {
     session.BeginUpdate();
     for (uint i = 50000000; i < 50000100; i++)
     {
       database = session.OpenDatabase(i);
       session.DeleteDatabase(database);
     }
     session.Commit();
   }
 }
 public void SingleServerReaderSingleServerUpdater2(bool useReaderCommit)
 {
   const UInt32 dbNum = 567;
   using (ServerClientSession updater = new ServerClientSession(systemDir))
   using (ServerClientSession reader = new ServerClientSession(systemDir, null, 2000, true, false, CacheEnum.No)) // CacheEnum.No or cache validating on session.Begin() - makes test fail
   {
     updater.BeginUpdate();
     Database db = updater.OpenDatabase(dbNum, true, false);
     if (db != null)
       updater.DeleteDatabase(db);
     updater.Commit();
     updater.BeginUpdate();
     Man man;
     Placement place = new Placement(dbNum, 1, 1, 2);
     for (int i = 0; i < 100; i++)
     {
       man = new Man();
       man.Persist(place, updater);
     }
     updater.Commit();
     reader.BeginRead();
     db = reader.OpenDatabase(dbNum);
     foreach (Page page in db)
       Assert.True(page.PageInfo.VersionNumber == 1);
     if (useReaderCommit)
       reader.Commit();
     updater.BeginUpdate();
     if (useReaderCommit)
       reader.BeginRead();
     else
       reader.ForceDatabaseCacheValidation();
     for (int i = 1; i < 25; i++)
     {
       db = reader.OpenDatabase(dbNum);
       foreach (Page page in db)
       {
         if (page.PageNumber > 0)
         {
           Assert.True(page.PageInfo.VersionNumber == (ulong)i);
           Man man2 = (Man)reader.Open(dbNum, page.PageNumber, 1, false);
           Man manUpdated = (Man)updater.Open(dbNum, page.PageNumber, 1, true);
         }
       }
       if (useReaderCommit)
       {
         reader.Commit();
         reader.BeginRead();
       }
       else
         reader.ForceDatabaseCacheValidation();
       updater.Commit();
       updater.BeginUpdate();
     }
     Database db2 = reader.OpenDatabase(dbNum);
     db = updater.OpenDatabase(dbNum);
     for (int i = 25; i < 50; i++)
     {
       foreach (Page page in db)
       {
         if (page.PageNumber > 0)
         {
           Assert.True(page.PageInfo.VersionNumber == (ulong)i);
           Man manUpdated = (Man)updater.Open(dbNum, page.PageNumber, 1, true);
         }
       }
       updater.FlushUpdates(); // now server will see updated version of pages
       foreach (Page page in db2)
       {
         if (page.PageNumber > 0)
         {                           // BUG Nov 8, 2011 1.0.4.0 reader sees version 28 when it should see version 27 
           Assert.True(page.PageInfo.VersionNumber == (ulong)i); // reader should see the commited version of the page, not the uncommited updated version
           Man man2 = (Man)reader.Open(dbNum, page.PageNumber, 1, false);
         }
       }
       reader.ClearPageCache(); // required or else we will use cached page and Assert (see line above) will fail
       System.GC.Collect(); // force weak referenced pages to be garbage collected (again to avoid Assert failure)
       updater.Commit();
       updater.BeginUpdate();
     }
     reader.Commit();
     updater.DeleteDatabase(db);
     updater.Commit();
   }
 }
示例#51
0
    public static void CreateUser()
    {
      using (ServerClientSession session = new ServerClientSession(systemDir, systemHost))
      {
        session.BeginUpdate();
        Graph g = Graph.Open(session);
        VertexType movieType = g.FindVertexType("MOVIE");
        PropertyType movieTitleType = movieType.FindProperty("TITLE");
        PropertyType movieYearType = movieType.FindProperty("YEAR");

        for (int i = 1; i < 50; i++)
        {
          Vertex mVickyCB = movieType.NewVertex();
          mVickyCB.SetProperty(movieTitleType, "Vicky Cristina Barcelona" + i);
          mVickyCB.SetProperty(movieYearType, (int)(2008 + i));
          session.Commit();
          session.BeginUpdate();
          Thread.Sleep(1000);
        }
      }
    }
示例#52
0
 public void Recover1()
 {
   using (SessionNoServer session = new SessionNoServer(systemDir))
   {
     Recover1(session);
   }
   using (ServerClientSession session = new ServerClientSession(systemDir))
   {
     Recover1(session);
   }
 }
示例#53
0
    public static void WatchUser()
    {
      using (ServerClientSession session = new ServerClientSession(systemDir, systemHost, 1000, true, false))
      {
        session.BeginRead();
        session.SubscribeToChanges(typeof(Vertex));
        Graph g = Graph.Open(session);
        session.Commit();
        Thread.Sleep(5000);

        for (int i = 0; i < 50; i++)
        {
          List<Oid> changes = session.BeginReadWithEvents();
          if (changes.Count == 0)
          {
            Console.WriteLine("No changes events at: " + DateTime.Now.ToString("HH:mm:ss:fff"));
            Thread.Sleep(1000);
          }
          foreach (Oid id in changes)
          {
            object obj = session.Open(id);
            Console.WriteLine("Received change event for: " + obj + " at: " + DateTime.Now.ToString("HH:mm:ss:fff")); ;
            //session.UnsubscribeToChanges(typeof(Person));
          }
          session.Commit();
          Thread.Sleep(2000);
        }
      }
    }
示例#54
0
 public void fCreateDatabasesPreSizeServer()
 {
   Database database;
   using (ServerClientSession session = new ServerClientSession(systemDir))
   {
     session.BeginUpdate();
     for (uint i = 50000100; i < 50000200; i++)
     {
       database = session.NewDatabase(i, i - 50000100, "myServerSetDbName");
       Assert.NotNull(database);
     }
     session.Commit();
   }
   using (ServerClientSession session = new ServerClientSession(systemDir))
   {
     session.BeginUpdate();
     for (uint i = 50000000; i < 50000200; i++)
     {
       database = session.OpenDatabase(i);
       Assert.NotNull(database);
     }
     session.Commit();
   }
 }
示例#55
0
 public void CreateMoreDataWithBackupServer()
 {
   int loops = 30000;
   UInt16 objectsPerPage = 350;
   UInt16 pagesPerDatabase = 65000;
   int j;
   using (ServerClientSession session = new ServerClientSession(systemDir, Dns.GetHostName()))
   {
     Placement place = new Placement(11, 1, 1, objectsPerPage, pagesPerDatabase);
     Man aMan = null;
     Woman aWoman = null;
     session.BeginUpdate();
     for (j = 1; j <= loops; j++)
     {
       aMan = new Man(null, aMan, DateTime.UtcNow);
       aMan.Persist(place, session);
       aWoman = new Woman(aMan, aWoman);
       aWoman.Persist(place, session);
       aMan.m_spouse = new WeakIOptimizedPersistableReference<VelocityDbSchema.Person>(aWoman);          
       if (j % 1000000 == 0)
         Console.WriteLine("Loop # " + j);
     }
     UInt64 id = aWoman.Id;
     Console.WriteLine("Commit, done Loop # " + j);
     session.Commit();
   }
 }
示例#56
0
 public void ReadSomeData()
 {
   int ct = 0;
   using (ServerClientSession session = new ServerClientSession(s_systemDir, systemHost, 1000, true, inMemoryOnly))
   {
     session.BeginRead();
     foreach (Man man in session.AllObjects<Man>())
     {
       ct++;
     }
     Console.WriteLine("Commit, number of Men found: " + ct);
     session.Commit();
   }
 }
    //int WaitForMilliSeconds { get; set; }

    void BtnOkClick(object pSender, RoutedEventArgs pEvents)
    {
      m_federationInfo.UsesServerClient = (bool)RadioServer.IsChecked;
      m_federationInfo.ClassesFilenames = (from ListViewItem lItem in AssemblyList.Items select (string)lItem.Content).ToArray();
      m_federationInfo.DependencyFiles = (from ListViewItem lItem in DependencyList.Items select (string)lItem.Content).ToArray();
      m_federationInfo.SystemDbsPath = DBDirTextBox.Text;
      m_federationInfo.HostName = HostTextBox.Text;
      m_federationInfo.UsePessimisticLocking = (bool) PessimisticBox.IsChecked;
      m_federationInfo.WindowsAuthentication = (bool) WindowsAuthenticationBox.IsChecked;
      m_federationInfo.EnableSyncByTrackingChanges = (bool) EnableChangeTrackingBox.IsChecked;
      m_federationInfo.WaitForMilliSeconds = int.Parse(WaitForMilliSecondsTextBox.Text);
      bool createNew = (bool)CreateNewBox.IsChecked;
      string restoreFromPath = BackupDirTextBox.Text;
      string restoreFromHost = BackupHostTextBox.Text;
      if (createNew || (restoreFromPath != null && restoreFromPath.Length > 0))
      {
        SessionBase session;
        if (m_federationInfo.UsesServerClient || (m_federationInfo.HostName.Length > 0 && m_federationInfo.HostName != Dns.GetHostName()))
          session = new ServerClientSession(m_federationInfo.SystemDbsPath, m_federationInfo.HostName);
        else
          session = new SessionNoServer(m_federationInfo.SystemDbsPath);
        if (m_federationInfo.EnableSyncByTrackingChanges)
          session.EnableSyncByTrackingChanges = true;
        session.BeginUpdate();
        if (restoreFromPath != null && restoreFromPath.Length > 0)
        {
          UInt32 restoreFromRootDbNum = UInt32.Parse(BackupRootDbNumTextBox.Text);
          DateTime? restoreUpToDateTime = RestoreUpToDateTime.SelectedDate;
          session.RestoreFrom(restoreFromHost, restoreFromPath, restoreFromRootDbNum, restoreUpToDateTime == null ? DateTime.Now : restoreUpToDateTime.Value);
        }
        session.Commit();
      }
      DialogResult = true;
    }
示例#58
0
 public void test()
 {
   ServerClientSession VelocityServerSession = new ServerClientSession(systemDir, "localhost");
   Woman TmpSynchronizationData = new Woman();//APSSynchData TmpSynchronizationData = default(APSSynchData);     
    // APSSynchData();
   //TmpSynchronizationData.SyncedElections = new VelocityDbList<Man>();
   VelocityServerSession.BeginUpdate();
   TmpSynchronizationData.Persist(VelocityServerSession, TmpSynchronizationData);
   VelocityServerSession.Commit();
   //SaveToDisk("4.odb", DatabasePath + "\\4.odb");
   VelocityServerSession.BeginUpdate();
 }
示例#59
0
 public void RestoreAllViaServer()
 {
   using (ServerClientSession session = new ServerClientSession(systemDir, null, 2000, false)) // don't use optimistic locking for restore
   {
     session.BeginUpdate();
     DatabaseLocation backupLocation = new DatabaseLocation(Dns.GetHostName(), backupDir, backupLocationStartDbNum, UInt32.MaxValue, session,
       PageInfo.compressionKind.None, PageInfo.encryptionKind.noEncryption, true, session.DatabaseLocations.Default());
     session.RestoreFrom(backupLocation, DateTime.UtcNow);
     session.Commit(false, true);
   }
 }
 void BtnOkClick(object pSender, RoutedEventArgs pEvents)
 {
   m_federationInfo.UsesServerClient = (bool)RadioServer.IsChecked;
   m_federationInfo.ClassesFilenames = (from ListViewItem lItem in AssemblyList.Items select (string)lItem.Content).ToArray();
   m_federationInfo.DependencyFiles = (from ListViewItem lItem in DependencyList.Items select (string)lItem.Content).ToArray();
   m_federationInfo.SystemDbsPath = DBDirTextBox.Text;
   m_federationInfo.HostName = HostTextBox.Text;
   m_federationInfo.UsePessimisticLocking = (bool) PessimisticBox.IsChecked;
   m_federationInfo.WindowsAuthentication = (bool) WindowsAuthenticationBox.IsChecked;
   bool createNew = (bool)CreateNewBox.IsChecked;
   if (createNew)
   {
     SessionBase session;
     if (m_federationInfo.UsesServerClient || (m_federationInfo.HostName.Length > 0 && m_federationInfo.HostName != Dns.GetHostName()))
       session = new ServerClientSession(m_federationInfo.SystemDbsPath, m_federationInfo.HostName);
     else
       session = new SessionNoServer(m_federationInfo.SystemDbsPath);
     session.BeginUpdate();
     session.Commit();
   }
   DialogResult = true;
 }