Skip to content

Commit

Permalink
Move job reservation logic into its own module.
Browse files Browse the repository at this point in the history
  • Loading branch information
Keith Rarick committed Oct 1, 2007
1 parent b9270f3 commit a19c8eb
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 52 deletions.
1 change: 1 addition & 0 deletions beanstalkd.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "pq.h"
#include "util.h"
#include "prot.h"
#include "reserve.h"

/* job body cannot be greater than this */
#define JOB_DATA_SIZE_LIMIT ((1 << 16) - 1)
Expand Down
1 change: 1 addition & 0 deletions conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "net.h"
#include "util.h"
#include "prot.h"
#include "reserve.h"

/* Doubly-linked list of free connections. */
static struct conn pool = { &pool, &pool, 0 };
Expand Down
46 changes: 1 addition & 45 deletions prot.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "job.h"
#include "conn.h"
#include "util.h"
#include "reserve.h"

static pq ready_q;

Expand Down Expand Up @@ -64,51 +65,6 @@ reserve_job(conn c, job j)
return reply_job(c, j, MSG_RESERVED);
}

int
has_reserved_job(conn c)
{
return !!c->reserved_job;
}

/* return the reserved job with the earliest deadline,
* or NULL if there's no reserved job */
job
soonest_job(conn c)
{
return c->reserved_job;
}

void
enqueue_reserved_jobs(conn c)
{
enqueue_job(c->reserved_job);
c->reserved_job = NULL;
}

int
has_reserved_this_job(conn c, job j)
{
return c->reserved_job == j;
}

job
remove_reserved_job(conn c, unsigned long long int id)
{
job j;

if (!c->reserved_job) return NULL;
if (id != c->reserved_job->id) return NULL;
j = c->reserved_job;
c->reserved_job = NULL;
return j;
}

void
job_remove(conn c, job j)
{
if (c->reserved_job == j) c->reserved_job = NULL;
}

int
count_reserved_jobs()
{
Expand Down
7 changes: 0 additions & 7 deletions prot.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,6 @@ void process_queue();

job peek_job(unsigned long long int id);

int has_reserved_job(conn c);
job soonest_job(conn c);
void enqueue_reserved_jobs(conn c);
int has_reserved_this_job(conn c, job j);
job remove_reserved_job(conn c, unsigned long long int id);
void job_remove(conn c, job j);

int count_reserved_jobs();
unsigned int count_ready_jobs();

Expand Down
50 changes: 50 additions & 0 deletions reserve.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/* reserve.c - job reservations */

#include "prot.h"
#include "reserve.h"

int
has_reserved_job(conn c)
{
return !!c->reserved_job;
}

/* return the reserved job with the earliest deadline,
* or NULL if there's no reserved job */
job
soonest_job(conn c)
{
return c->reserved_job;
}

void
enqueue_reserved_jobs(conn c)
{
enqueue_job(c->reserved_job);
c->reserved_job = NULL;
}

int
has_reserved_this_job(conn c, job j)
{
return c->reserved_job == j;
}

job
remove_reserved_job(conn c, unsigned long long int id)
{
job j;

if (!c->reserved_job) return NULL;
if (id != c->reserved_job->id) return NULL;
j = c->reserved_job;
c->reserved_job = NULL;
return j;
}

void
job_remove(conn c, job j)
{
if (c->reserved_job == j) c->reserved_job = NULL;
}

17 changes: 17 additions & 0 deletions reserve.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/* reserve.h - job reservations header */

#ifndef reserve_h
#define reserve_H

#include "job.h"
#include "conn.h"

int has_reserved_job(conn c);
job soonest_job(conn c);
void enqueue_reserved_jobs(conn c);
int has_reserved_this_job(conn c, job j);
job remove_reserved_job(conn c, unsigned long long int id);
void job_remove(conn c, job j);


#endif /*reserve_h*/
Empty file added tests/test_reserve.c
Empty file.

0 comments on commit a19c8eb

Please sign in to comment.