summaryrefslogtreecommitdiff
path: root/storage/ndb/src/cw/cpcc-win32/csharp/Computer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/src/cw/cpcc-win32/csharp/Computer.cs')
-rw-r--r--storage/ndb/src/cw/cpcc-win32/csharp/Computer.cs256
1 files changed, 256 insertions, 0 deletions
diff --git a/storage/ndb/src/cw/cpcc-win32/csharp/Computer.cs b/storage/ndb/src/cw/cpcc-win32/csharp/Computer.cs
new file mode 100644
index 00000000000..9763fac5622
--- /dev/null
+++ b/storage/ndb/src/cw/cpcc-win32/csharp/Computer.cs
@@ -0,0 +1,256 @@
+using System;
+using System.Drawing;
+using System.Collections;
+using System.ComponentModel;
+using System.Windows.Forms;
+using System.Data;
+using System.IO;
+using NDB_CPC.socketcomm;
+using NDB_CPC.simpleparser;
+
+
+namespace NDB_CPC
+{
+ /// <summary>
+ /// Summary description for Computer.
+ /// </summary>
+ public class Computer
+ {
+ public enum Status {Disconnected=1,Connected=2, Unknown=3}
+ private string m_ip;
+ private int m_cpcdPort;
+ private string m_name;
+ private Status m_status;
+ private ArrayList m_processes;
+ private SocketComm m_socket;
+ public Computer(string name, int port)
+ {
+ m_name = name;
+ m_status = Status.Disconnected;
+ m_processes = new ArrayList();
+ m_cpcdPort=port;
+ m_socket = new SocketComm(m_name,m_cpcdPort);
+ }
+
+ public Computer(string name, string ip)
+ {
+ m_ip = ip;
+ m_name = name;
+ m_status = Status.Disconnected;
+ m_processes = new ArrayList();
+ m_cpcdPort=1234; //default port
+ m_socket = new SocketComm(m_ip,m_cpcdPort);
+ }
+
+ public void connectToCpcd()
+ {
+ m_socket.doConnect();
+ }
+
+ private bool sendMessage(string str)
+ {
+ return m_socket.writeMessage(str);
+
+ }
+
+ public string getName() {return m_name;}
+ public string getIp() {return m_ip;}
+ public ArrayList getProcesses()
+ {
+ if(m_processes.Count>0)
+ return m_processes;
+ else
+ return null;
+ }
+ public string getStatusString()
+ {
+ try
+ {
+ if(m_socket.isConnected())
+ return "Connected";
+ else
+ return "Disconnected";
+ }
+ catch(Exception e)
+ {
+ return "Unknown";
+ }
+ }
+
+
+ public bool isConnected()
+ {
+ if(m_socket.isConnected())
+ return true;
+ return false;
+ }
+
+ public Status getStatus()
+ {
+ try
+ {
+ if(m_socket.isConnected())
+ return Status.Connected;
+ else
+ return Status.Disconnected;
+ }
+ catch(Exception e)
+ {
+ return Status.Unknown;
+ }
+ }
+
+ public void setStatus(Status status)
+ {
+ m_status=status;
+ }
+
+ public void addProcess(Process process)
+ {
+ m_processes.Add(process);
+ }
+
+ public Process getProcessByName(string name)
+ {
+ foreach(Process process in m_processes)
+ {
+ if(process.getName().Equals(name))
+ return process;
+ }
+ return null;
+ }
+
+
+ public bool removeProcess(string name, string database)
+ {
+ foreach(Process p in m_processes)
+ {
+ if(p.getName().Equals(name) && p.getDatabase().Equals(database))
+ {
+ m_processes.Remove(p);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void disconnect()
+ {
+ m_socket.disconnect();
+ }
+ public Process getProcess(string id)
+ {
+ foreach(Process process in m_processes)
+ {
+ if(process.getId().Equals(id))
+ return process;
+ }
+ return null;
+ }
+
+ public int listProcesses()
+ {
+ string list = "list processes\n\n";
+
+ if(!sendMessage(list))
+ return -2;
+
+ SimpleCPCParser.parse(m_processes, this, m_socket);
+ return 1;
+ }
+
+ public int defineProcess(Process p)
+ {
+ string define = "define process \n";
+ define = define + "name:" + p.getName() + "\n";
+ define = define + "group:" + p.getDatabase() + "\n";
+ define = define + "env:" + "NDB_CONNECTSTRING="+p.getConnectString() ;
+ if(p.getEnv().Equals(""))
+ define = define + "\n";
+ else
+ define = define + " " + p.getEnv() + "\n";
+
+ //if(p.getPath().EndsWith("\\"))
+ // define = define + "path:" + p.getPath()+ "ndb" + "\n";
+ //else
+ define = define + "path:" + p.getPath() + "\n";
+ define = define + "args:" + p.getArgs() + "\n";
+ define = define + "type:" + "permanent" + "\n";
+ define = define + "cwd:" + p.getCwd() + "\n";
+ define = define + "owner:" + "ejohson" + "\n\n";
+
+ if(!sendMessage(define))
+ return -2;
+
+ SimpleCPCParser.parse(p, m_socket);
+ if(p.isDefined())
+ return 1;
+ else
+ return -1;
+
+ }
+
+ public int startProcess(Process p)
+ {
+ if(!p.isDefined())
+ {
+ this.defineProcess(p);
+ if(!p.isDefined())
+ return -4; //process misconfigured
+
+ }
+ string start= "start process \n";
+ start = start + "id:" + p.getId() + "\n\n";
+ if(!sendMessage(start))
+ return -2;
+ SimpleCPCParser.parse(p, m_socket);
+ if(p.getStatus().Equals(Process.Status.Running))
+ return 1;
+ else
+ return -1;
+ }
+
+ public int stopProcess(Process p)
+ {
+ if(!p.isDefined())
+ {
+ return -4; //process not defined
+ }
+ string stop= "stop process \n";
+ stop = stop + "id:" + p.getId() + "\n\n";
+ if(!sendMessage(stop))
+ return -2;
+ SimpleCPCParser.parse(p, m_socket);
+
+ if(p.getStatus().Equals(Process.Status.Stopped))
+ return 1;
+ else
+ return -1;
+ }
+
+ public int undefineProcess(Process p)
+ {
+ if(!p.isDefined())
+ {
+ return -4; //process not defined
+ }
+ string undefine= "undefine process \n";
+ undefine = undefine + "id:" + p.getId() + "\n\n";
+ if(!sendMessage(undefine))
+ return -2;
+ SimpleCPCParser.parse(p, m_socket);
+ if(!p.isDefined())
+ {
+ return 1;
+
+ }
+ return -1;
+ }
+
+ public int getCpcdPort()
+ {
+ return this.m_cpcdPort;
+ }
+
+ }
+}