~elambert/gearmanij/gearman_java_library

« back to all changes in this revision

Viewing changes to src/org/gearman/client/Status.java

  • Committer: Eric Lambert
  • Date: 2009-07-10 04:17:49 UTC
  • Revision ID: eric.d.lambert@gmail.com-20090710041749-7800f8km0ibkmfj0
removed unused job classes

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
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.
7
 
 */
8
 
package org.gearman.client;
9
 
 
10
 
import java.util.List;
11
 
 
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;
19
 
 
20
 
public class Status {
21
 
    private PacketConnection conn;
22
 
    private byte[] handle;
23
 
    private long lastUpdate;
24
 
 
25
 
    private boolean isRunning;
26
 
    private boolean isKnown;
27
 
    private long numerator;
28
 
    private long denominator;
29
 
 
30
 
    public Status(PacketConnection conn) {
31
 
        this.conn = conn;
32
 
        this.handle = ByteUtils.EMPTY;
33
 
    }
34
 
 
35
 
    public void setHandle(byte[] handle) {
36
 
        this.handle = handle;
37
 
    }
38
 
 
39
 
    public void update() {
40
 
        conn.open();
41
 
        try {
42
 
            Packet req = newGetStatusPacket();
43
 
            conn.write(req);
44
 
            GearmanPacket resp = conn.read();
45
 
            update(resp);
46
 
        } finally {
47
 
            conn.close();
48
 
        }
49
 
    }
50
 
 
51
 
    private Packet newGetStatusPacket() {
52
 
        return new Packet(PacketMagic.REQ, PacketType.GET_STATUS, handle);
53
 
    }
54
 
 
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);
60
 
 
61
 
        isKnown = parseBoolean(parts.get(1));
62
 
        isRunning = parseBoolean(parts.get(2));
63
 
        numerator = parseLong(parts.get(3));
64
 
        denominator = parseLong(parts.get(4));
65
 
 
66
 
        lastUpdate = System.currentTimeMillis();
67
 
    }
68
 
 
69
 
    private long parseLong(byte[] bytes) {
70
 
        return Long.parseLong(ByteUtils.fromUTF8Bytes(bytes));
71
 
    }
72
 
 
73
 
    private boolean parseBoolean(byte[] bytes) {
74
 
        return bytes[0] == '0' ? false : true;
75
 
    }
76
 
 
77
 
    public boolean isRunning() {
78
 
        return isRunning;
79
 
    }
80
 
 
81
 
    public boolean isKnown() {
82
 
        return isKnown;
83
 
    }
84
 
 
85
 
    public long getNumerator() {
86
 
        return numerator;
87
 
    }
88
 
 
89
 
    public long getDenominator() {
90
 
        return denominator;
91
 
    }
92
 
 
93
 
    public long getLastUpdate() {
94
 
        return lastUpdate;
95
 
    }
96
 
 
97
 
}