1 package org.vamsas.client.simpleclient;
2 import org.vamsas.client.*;
4 import java.io.BufferedInputStream;
5 import java.io.BufferedOutputStream;
7 import java.io.FileInputStream;
8 import java.io.FileNotFoundException;
9 import java.io.FileOutputStream;
10 import java.io.IOException;
11 import java.io.InputStreamReader;
12 import java.io.ObjectInputStream;
13 import java.io.ObjectOutput;
14 import java.io.ObjectOutputStream;
15 import java.io.OutputStream;
16 import java.util.Vector;
20 * Handler for the clientsFile within a vamsas session.
22 public class ClientsFile {
23 private File filelist;
25 * number of my client in list
26 * (not known at start but used when known to make lock)
28 private int syncnum=1;
30 ClientsFile(File filelist) {
31 this.filelist=filelist;
33 public ClientHandle[] retrieveClientList() {
35 if (filelist.exists()) {
38 listlock = new Lock(filelist); // TODO: wait around if we can't get the lock.
39 } while (!listlock.isLocked());
41 ObjectInputStream is = new ObjectInputStream(new BufferedInputStream(new java.io.FileInputStream(filelist)));
42 ClientHandle[] clients;
43 clients = (ClientHandle[]) ((Vector) is.readObject()).toArray();
46 catch (FileNotFoundException e) {
47 // TODO Auto-generated catch block
49 } catch (Exception e) {
55 throw new Error("Tried to retrieve a clientList without specifying client list filename");
60 public boolean putClientList(ClientHandle[] clients) {
62 if (filelist.exists()) {
65 listlock = new Lock(filelist); // TODO: wait around if we can't get the lock? should return and make client wait until write has finished so it can read new client info...
66 } while (!listlock.isLocked());
68 File templist=File.createTempFile(filelist.getName(),".temp",filelist);
69 ObjectOutputStream os = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(templist)));
70 os.writeObject(clients);
73 catch (FileNotFoundException e) {
74 // TODO Auto-generated catch block
76 } catch (Exception e) {
82 throw new Error("Tried to retrieve a clientList without specifying client list filename");