2
* Copyright (C) 2009 by Eric Herman <eric@freesa.org>
3
* Copyright (C) 2009 by Eric Lambert
4
* Use and distribution licensed under the
5
* GNU Lesser General Public License (LGPL) version 2.1.
6
* See the COPYING file in the parent directory for full text.
8
package org.gearman.client;
10
import java.util.List;
12
import org.gearman.common.PacketConnection;
13
import org.gearman.common.GearmanPacket;
14
import org.gearman.common.Packet;
15
import org.gearman.common.PacketMagic;
16
import org.gearman.common.PacketType;
17
import org.gearman.util.ByteArrayBuffer;
18
import org.gearman.util.ByteUtils;
21
private PacketConnection conn;
22
private byte[] handle;
23
private long lastUpdate;
25
private boolean isRunning;
26
private boolean isKnown;
27
private long numerator;
28
private long denominator;
30
public Status(PacketConnection conn) {
32
this.handle = ByteUtils.EMPTY;
35
public void setHandle(byte[] handle) {
39
public void update() {
42
Packet req = newGetStatusPacket();
44
GearmanPacket resp = conn.read();
51
private Packet newGetStatusPacket() {
52
return new Packet(PacketMagic.REQ, PacketType.GET_STATUS, handle);
55
public void update(GearmanPacket fromServer) {
56
ByteArrayBuffer buf = new ByteArrayBuffer(fromServer.getData());
57
byte[] pattern = new byte[] { ByteUtils.NULL };
58
int numberOfparts = 5;
59
List<byte[]> parts = buf.split(pattern, numberOfparts);
61
isKnown = parseBoolean(parts.get(1));
62
isRunning = parseBoolean(parts.get(2));
63
numerator = parseLong(parts.get(3));
64
denominator = parseLong(parts.get(4));
66
lastUpdate = System.currentTimeMillis();
69
private long parseLong(byte[] bytes) {
70
return Long.parseLong(ByteUtils.fromUTF8Bytes(bytes));
73
private boolean parseBoolean(byte[] bytes) {
74
return bytes[0] == '0' ? false : true;
77
public boolean isRunning() {
81
public boolean isKnown() {
85
public long getNumerator() {
89
public long getDenominator() {
93
public long getLastUpdate() {