/// <summary> /// </summary> private void CommandThreadEntry() { while (!CommandQueue.IsCompleted) { // Server name valid? if (Server == string.Empty) { Thread.Sleep(1 * 1000); continue; } // Connect to repro. if (Repository == null || !Repository.Connection.connectionEstablished()) { try { ServerInstance = new global::Perforce.P4.Server(new ServerAddress(Server)); Repository = new Repository(ServerInstance); Repository.Connection.UserName = Username; Options options = new Options(); options["Password"] = Password; Logger.Log(LogLevel.Info, LogCategory.Scm, "Connecting to perforce: {0}", Server); Repository.Connection.Connect(options); if (Repository.Connection.connectionEstablished()) { Logger.Log(LogLevel.Info, LogCategory.Scm, "Connected to perforce server."); UpdateClientName(); } } catch (P4Exception Ex) { Logger.Log(LogLevel.Error, LogCategory.Scm, "Failed to connect to perforce server with error: {0}", Ex.Message); Thread.Sleep(5 * 1000); continue; } } // Execute next command. PerforceCommandHandler Handler = CommandQueue.Take(); try { Handler(Repository); } catch (Exception Ex) { Logger.Log(LogLevel.Error, LogCategory.Scm, "Encountered exception while running perforce command: {0}", Ex.Message); } } }
/// <summary> /// </summary> public void Terminate() { CommandQueue.CompleteAdding(); CommandThread.Join(); CommandThread = null; if (Repository != null) { Repository.Connection.Disconnect(null); } Repository = null; ServerInstance = null; }