summaryrefslogtreecommitdiff
path: root/sources/client/ServerRequester.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2009-02-18 17:33:22 +0000
committerPaul Buetow <paul@buetow.org>2009-02-18 17:33:22 +0000
commit4722100cba287b164957c658c2e035783e20c963 (patch)
tree35733fd3e50aeeb493e38ceaea83521a4710f0ac /sources/client/ServerRequester.java
parent61f7175cc3e51c0afaf63e380d03824a77464ba8 (diff)
moved sources
Diffstat (limited to 'sources/client/ServerRequester.java')
-rw-r--r--sources/client/ServerRequester.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/sources/client/ServerRequester.java b/sources/client/ServerRequester.java
new file mode 100644
index 0000000..9cd7485
--- /dev/null
+++ b/sources/client/ServerRequester.java
@@ -0,0 +1,82 @@
+/**
+ *
+ */
+package client;
+
+
+import java.io.*;
+import java.net.*;
+import java.security.*;
+import javax.net.*;
+import javax.net.ssl.*;
+
+import shared.*;
+import shared.remotecall.*;
+
+/**
+ * This class only has static members. Its used for creating a client socket to connect and
+ * communicate with the calendar server.
+ * @author buetow
+ */
+public class ServerRequester {
+ /**
+ * This method creates a new client socket.
+ * @return Returns a client socket object.
+ * @throws IOException
+ */
+ private static Socket makeClientSocket() throws IOException {
+ if (!Config.getBooleanValue("use_ssl")) {
+ Main.statusMessage("Making non-SSL Socket...");
+ return new Socket(Config.getServerAddress(), Config.getIntValue("server_port"));
+ }
+
+ Main.statusMessage("Making SSL Socket...");
+ //Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
+ SocketFactory socketFactory = SSLSocketFactory.getDefault();
+ return socketFactory.createSocket(Config.getServerAddress(), Config.getIntValue("server_port"));
+ }
+
+ /**
+ * Sends a client request to the netcalendar server end receives a server response object.
+ * @param clientRequest Specifies the client request to send to the calendar server.
+ * @return Returns the server response. It returns null if no response is available.
+ */
+ public final static ServerResponse sendClientRequest(ClientRequest clientRequest) {
+ Main.statusMessage("Sending client request to server...");
+
+ ServerResponse serverResponse = null;
+
+ try {
+ Socket socket = makeClientSocket();
+ socket.setKeepAlive(true);
+
+ // Send the client request to the server
+ OutputStream outputStream = socket.getOutputStream();
+ ObjectOutput objectOutput = new ObjectOutputStream(outputStream);
+
+ objectOutput.writeObject(clientRequest);
+ objectOutput.flush();
+
+ // We only want to receive data if the request new events, not if we only send
+ // changed events!
+ if (clientRequest.requestsNewEvents()) {
+ // Recieve the server's response
+ InputStream inputStream = socket.getInputStream();
+ ObjectInput objectInput = new ObjectInputStream(inputStream);
+ serverResponse = (ServerResponse) objectInput.readObject();
+ }
+
+ objectOutput.close();
+ socket.close();
+
+ } catch (Exception e) {
+ Main.infoMessage("Client error during serialization: " + e.getMessage());
+ Main.statusMessage("Error: Client request did not succeed! Server down?");
+ return serverResponse;
+ }
+
+ Main.statusMessage("Last client request succeeded");
+ // Returns null if no response is available!
+ return serverResponse;
+ }
+}