Example #1
0
        public void UpdateProject()
        {
            while (true)
            {
                Thread.Sleep(30);  // this sleep time actually controls sync frequency
                if (!threadRunningFlag || !window.IsProjectSynchronizationEnabled)
                {
                    continue;
                }
                threadRunningFlag = false;
                Connect();
                if (State == ConnectionState.Connected)
                {
                    // try to push update to server
                    try {
                        if (Project.Current == null)
                        {
                            continue;
                        }
                        string data = DataSerializer <Project> .Serialize(Project.Current);

                        clientProxy.Broadcast(data);
                    }
                    catch (Exception ex) {  // unable to connect
                        clientProxy = null;
                        State       = ConnectionState.Disconnected;
                        new ErrorHandler(ex);   // log error
                        continue;
                    }
                }
            }
        }
Example #2
0
        public void Connect()
        {
            if (clientProxy == null)    // create channel here
            {
                State = ConnectionState.Connecting;
                SyncServiceClientCallback callback = new SyncServiceClientCallback(window);
                // Read server address from configuration
                string serverAddress = System.Configuration.ConfigurationManager.AppSettings["SyncServiceAddress"];
#if DEBUG_ON
                Console.WriteLine("serverAddress {0}", serverAddress);
#endif
                DuplexChannelFactory <ISyncServiceClient> factory = new DuplexChannelFactory <ISyncServiceClient>(callback, new NetTcpBinding(), new EndpointAddress(serverAddress));
                factory.Open();
                clientProxy = factory.CreateChannel();
                // try sign in
                try {
                    SessionInfo info = new SessionInfo();
                    info.UserName = Environment.UserName;
                    clientProxy.SignIn(info);
                    State = ConnectionState.Connected;
                }
                catch (Exception ex) {  // unable to connect
                    clientProxy = null;
                    State       = ConnectionState.Disconnected;
                    new ErrorHandler(ex);
                }
            }
        }