Instance.cc File Reference
#include "squid.h"
#include "base/File.h"
#include "debug/Messages.h"
#include "fs_io.h"
#include "Instance.h"
#include "md5.h"
#include "parser/Tokenizer.h"
#include "sbuf/Stream.h"
#include "SquidConfig.h"
#include "tools.h"
#include <cerrno>
Include dependency graph for Instance.cc:

Go to the source code of this file.

Functions

static SBuf PidFilenameCalc ()
 
static SBuf PidFileDescription (const SBuf &filename)
 
static SBuf PidFilename ()
 
static pid_t GetOtherPid (File &pidFile)
 
static bool ProcessIsRunning (const pid_t pid)
 determines whether a given process is running at the time of the call More...
 
static void ThrowIfAlreadyRunningWith (File &pidFile)
 quits if another Squid instance (that owns the given PID file) is running More...
 
static void RemoveInstance ()
 atexit() handler; removes the PID file created with Instance::WriteOurPid() More...
 
static SBuf PidFilenameHash ()
 

Variables

static SBuf TheFile
 
static SBuf ThePidFileToRemove
 ties Instance::WriteOurPid() scheduler and RemoveInstance(void) handler More...
 

Function Documentation

◆ GetOtherPid()

static pid_t GetOtherPid ( File pidFile)
static
Returns
the PID of another Squid instance (or throws)

Definition at line 70 of file Instance.cc.

References CharacterSet::CR, debugs, CharacterSet::LF, File::readSmall(), TexcHere, TheFile, and ToSBuf().

Referenced by Instance::Other(), and ThrowIfAlreadyRunningWith().

◆ PidFileDescription()

static SBuf PidFileDescription ( const SBuf filename)
static
Returns
PID file description for debugging messages and error reporting

Definition at line 53 of file Instance.cc.

References ToSBuf().

Referenced by PidFilename(), and RemoveInstance().

◆ PidFilename()

static SBuf PidFilename ( )
static

Instance entry points are expected to call this first.

Returns
PidFilenameCalc() result while updating TheFile context

Definition at line 61 of file Instance.cc.

References PidFileDescription(), PidFilenameCalc(), and TheFile.

Referenced by Instance::Other(), Instance::ThrowIfAlreadyRunning(), and Instance::WriteOurPid().

◆ PidFilenameCalc()

static SBuf PidFilenameCalc ( )
static

PidFilename() helper

Returns
PID file name or, if PID signaling was disabled, an empty SBuf

Definition at line 31 of file Instance.cc.

References SBuf::append(), SquidConfig::chroot_dir, Chrooted, Config, debugs, and SquidConfig::pidFilename.

Referenced by PidFilename(), and PidFilenameHash().

◆ PidFilenameHash()

static SBuf PidFilenameHash ( )
static

A hash that is likely to be unique across instances running on the same host because such concurrent instances should use unique PID filenames. All instances with disabled PID file maintenance have the same hash value.

Returns
a 4-character string suitable for use in file names and similar contexts

Definition at line 231 of file Instance.cc.

References SBuf::appendf(), hash, PidFilenameCalc(), SQUID_MD5_DIGEST_LENGTH, SquidMD5Final(), SquidMD5Init(), and SquidMD5Update().

Referenced by Instance::NamePrefix().

◆ ProcessIsRunning()

static bool ProcessIsRunning ( const pid_t  pid)
static

Definition at line 96 of file Instance.cc.

References debugs, pid, and xstrerr().

Referenced by ThrowIfAlreadyRunningWith().

◆ RemoveInstance()

◆ ThrowIfAlreadyRunningWith()

static void ThrowIfAlreadyRunningWith ( File pidFile)
static

Variable Documentation

◆ TheFile

SBuf TheFile
static

Describes the (last) instance PID file being processed. This hack shortens reporting code while keeping its messages consistent.

Definition at line 26 of file Instance.cc.

Referenced by GetOtherPid(), PidFilename(), Instance::ThrowIfAlreadyRunning(), ThrowIfAlreadyRunningWith(), and Instance::WriteOurPid().

◆ ThePidFileToRemove

SBuf ThePidFileToRemove
static

Definition at line 159 of file Instance.cc.

Referenced by RemoveInstance(), and Instance::WriteOurPid().

 

Introduction

Documentation

Support

Miscellaneous