An Inside Look At Warhammer Online's Server Setup 71
Comment Re:Firefighting (Score 1) 735
As a volunteer, I carry a pager. If it goes off (EMS-side), I respond if I can. If I can't, someone else has it covered. I put in my 40 for The Man. Then I put in another 10-15/wk because I want to. My brothers who volunteer at my station and are career down the road do the exact same thing. I get paid for when I'm ON-DUTY. They get paid for when they're ON-DUTY. For me, on-duty is sitting at my desk coding. For them, on-duty is either available-in-quarters, available-in-district, training, or on the scene. Their 40 is a bit different than mine. The point, though, is that duty hours are duty hours.
Comment Re:As a matter of accounting.... (Score 5, Insightful) 205
And, as has been proven, a company that can do one well can real screw up the other (hint: begins with a 'D' and rhymes with "re-told").
-J
Robot Swarm Shifts Heavy Objects 142
Charter Flight Websites / Services? 1020
The Next Three Days are the x86 Days 589
Comment Re:how do you upgrade persistent objects? (Score 1) 143
-
The upgrader stuns the old object by waiting until the old object is idle and demanding a fault capability to it. At this point, the old object is frozen and cannot be invoked by anyone else.
-
The upgrader now clones the process nodes of the old object's process. In effect, we have just copied the old object into a new process.
-
The upgrader now installs into the old process a new address space: the address space for the new object. It then sets the old process registers to the appropriate startup values to give the new object a chance to initialize itself. It also places a capability to the old object into a well-defined register in what is now the new object's process. Note that we've now effectively done a complete brain transplant on the original process. All holders of the old object still have capabilities to this process, which is now obeying new code.
-
The upgrader now lets the transplanted process start running. During initialization, the new object uses its capability to the old object to transfer any necessary data from the old object and then tells the old object to destroy itself.
-
Finally, the new object returns to the null capability, becoming available for new invocations.
It all sounds much more complicated than it is. Most of this can be built in a library.