def freeze(process_id):
    processId = int(process_id)
    process = sharedData.GetProcessByID(processId)
    if process != None:
        result = process.DSSocket.SendMessage(DSMessage(DSMessageType.Freeze))
        click.echo(result)
    else:
        click.echo("Process is not found")
def ping(process_id):
    """This is an additional command to check the status of a specific process."""
    processId = int(process_id)
    process = sharedData.GetProcessByID(processId)
    if process != None:
        result = process.DSSocket.SendMessage(DSMessage(DSMessageType.Ping))
        click.echo(result)
    else:
        click.echo("ProcessId is not valid, the process wasn't found.")
def set_time(process_id, clock):
    processId = int(process_id)
    process = sharedData.GetProcessByID(processId)
    if process != None:
        msg = DSMessage(DSMessageType.SetTime)
        msg.Argument = clock
        result = process.DSSocket.SendMessage(msg)
        click.echo(result)
    else:
        click.echo("ProcessId is not valid, the process wasn't found.")
def kill(process_id):
    processId = int(process_id)
    process = sharedData.GetProcessByID(processId)
    if process != None:
        result = process.DSSocket.SendMessage(DSMessage(DSMessageType.Kill))
        if result == None:
            click.echo("The process is killed now.")
        else:
            click.echo("The process is killed now - the process with ID '" +
                       str(result) + "' started election.")

    else:
        click.echo("Process is not found")
def reload():
    defaultProcesses = getProcessesFromFile()

    newProcesses = []
    for process in defaultProcesses:
        existedProc = sharedData.GetProcessByID(process.Id)
        if existedProc == None:
            newProcesses.append(process)

    if len(newProcesses) == 0:
        click.echo("No new process(es) initialized")
        return

    initializeFromProcesses(newProcesses, True)
    BullyProcess.StartElectionFromFirstProcess(sharedData)
    coordinatorProcess = BullyProcess.GetCoordinator(sharedData)

    click.echo("New process(es) initialized - the process with ID '" +
               str(coordinatorProcess.Id) + "' is the new coordinator.")