ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/cfperl.h
(Generate patch)

Comparing deliantra/server/include/cfperl.h (file contents):
Revision 1.76 by root, Mon Jun 4 12:19:08 2007 UTC vs.
Revision 1.79 by root, Sat Jun 9 22:54:03 2007 UTC

92void cfperl_cleanup (int make_core); 92void cfperl_cleanup (int make_core);
93void cfperl_make_book (object *book, int level); 93void cfperl_make_book (object *book, int level);
94 94
95////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 95//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
96 96
97// virtual server time, excluding time jumps and lag 97extern tstamp runtime; // virtual server time, excluding time jumps and lag
98extern double runtime; 98extern tstamp NOW; // real time of current server tick
99 99
100enum event_klass 100enum event_klass
101{ 101{
102 KLASS_NONE, 102 KLASS_NONE,
103 KLASS_GLOBAL, 103 KLASS_GLOBAL,
263 263
264 add ('\n'); 264 add ('\n');
265 } 265 }
266 266
267 template<typename T> 267 template<typename T>
268 void put_string (keyword k, const T &v) 268 void put_kw_string (keyword k, const T &v)
269 { 269 {
270 int klen = keyword_len [k]; 270 int klen = keyword_len [k];
271 int vlen = v ? strlen (v) + 1 : 0; 271 int vlen = v ? strlen (v) + 1 : 0;
272 272
273 char *p = (char *)alloc (klen + vlen + 1); 273 char *p = (char *)alloc (klen + vlen + 1);
283 *p = '\n'; 283 *p = '\n';
284 } 284 }
285 285
286 void put (keyword k, const char *v = 0) 286 void put (keyword k, const char *v = 0)
287 { 287 {
288 put_string (k, v); 288 put_kw_string (k, v);
289 } 289 }
290 290
291 void put (keyword k, const shstr &v) 291 void put (keyword k, const shstr &v)
292 { 292 {
293 put_string (k, v); 293 put_kw_string (k, v);
294 } 294 }
295 295
296 void put (keyword k, double v) 296 void put (keyword k, double v)
297 { 297 {
298 force (MAX_KEYWORD_LEN + 2 + 32); 298 force (MAX_KEYWORD_LEN + 2 + 32);
345 345
346 force (MAX_KEYWORD_LEN + 1); 346 force (MAX_KEYWORD_LEN + 1);
347 fadd (keyword_str [kend], keyword_len [kend]); fadd ('\n'); 347 fadd (keyword_str [kend], keyword_len [kend]); fadd ('\n');
348 } 348 }
349 349
350 template<typename T> 350 void put (keyword k, archetype *v);
351 void put (keyword k, treasurelist *v);
351 void put (keyword k, const T *v) 352 void put (keyword k, faceinfo *v);
352 {
353 put (k, v ? &v->name : (const char *)0);
354 }
355 353
356 template<typename T> 354 template<typename T>
357 void put (keyword k, const refptr<T> &v) 355 void put (keyword k, const refptr<T> &v)
358 { 356 {
359 put (k, (T *)v); 357 put (k, (T *)v);
427 static struct CoroAPI *GCoroAPI; 425 static struct CoroAPI *GCoroAPI;
428 426
429 static int nready () { return CORO_NREADY; } 427 static int nready () { return CORO_NREADY; }
430 static int cede () { return CORO_CEDE ; } 428 static int cede () { return CORO_CEDE ; }
431 429
432 static double (*time)();
433 static double next_cede; 430 static tstamp next_cede;
434 static int cede_counter; 431 static int cede_counter;
435 432
436 static void do_cede_every (); 433 static void do_cede_every ();
437 static void do_cede_to_tick (); 434 static void do_cede_to_tick ();
438 static void do_cede_to_tick_every (); 435 static void do_cede_to_tick_every ();
441 { 438 {
442 if (expect_false (++cede_counter >= count)) 439 if (expect_false (++cede_counter >= count))
443 do_cede_every (); 440 do_cede_every ();
444 } 441 }
445 442
446 static void cede_to_tick () 443 static bool cede_to_tick ()
447 { 444 {
448 if (expect_false (time () >= next_cede)) 445 if (expect_true (now () < next_cede))
446 return false;
447
449 do_cede_to_tick (); 448 do_cede_to_tick ();
449 return true;
450 } 450 }
451 451
452 static void cede_to_tick_every (int count) 452 static bool cede_to_tick_every (int count)
453 { 453 {
454 if (expect_false (++cede_counter >= count)) 454 if (expect_true (++cede_counter < count))
455 return false;
456
455 cede_to_tick (); 457 return cede_to_tick ();
456 } 458 }
457 459
458 static void wait_for_tick (); 460 static void wait_for_tick ();
459 static void wait_for_tick_begin (); 461 static void wait_for_tick_begin ();
460}; 462};

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines