aboutsummaryrefslogtreecommitdiff
path: root/samples/OpenEdge ABL/SocketReader.p
diff options
context:
space:
mode:
Diffstat (limited to 'samples/OpenEdge ABL/SocketReader.p')
-rw-r--r--samples/OpenEdge ABL/SocketReader.p118
1 files changed, 118 insertions, 0 deletions
diff --git a/samples/OpenEdge ABL/SocketReader.p b/samples/OpenEdge ABL/SocketReader.p
new file mode 100644
index 0000000..0f7add8
--- /dev/null
+++ b/samples/OpenEdge ABL/SocketReader.p
@@ -0,0 +1,118 @@
+
+/*------------------------------------------------------------------------
+ File : SocketReader.p
+ Purpose :
+ Author(s) : Abe Voelker
+ Created : Sat Aug 21 08:31:38 CDT 2010
+ Notes : Based on code from smtpmail.p
+ ----------------------------------------------------------------------*/
+
+/* *************************** Definitions ************************** */
+DEFINE INPUT PARAMETER objSendEmailAlg AS email.SendEmailSocket NO-UNDO.
+DEFINE VARIABLE vbuffer AS MEMPTR NO-UNDO.
+DEFINE VARIABLE vstatus AS LOGICAL NO-UNDO.
+DEFINE VARIABLE vState AS INTEGER NO-UNDO.
+
+
+ASSIGN vstate = 1.
+
+/* ******************** Preprocessor Definitions ******************** */
+
+
+/* *************************** Main Block *************************** */
+
+FUNCTION getHostname RETURNS CHARACTER():
+ DEFINE VARIABLE cHostname AS CHARACTER NO-UNDO.
+ INPUT THROUGH hostname NO-ECHO.
+ IMPORT UNFORMATTED cHostname.
+ INPUT CLOSE.
+ RETURN cHostname.
+END FUNCTION.
+
+/*
+ Status:
+ 0 - No Connection to the server
+ 1 - Waiting for 220 connection to SMTP server
+ 2 - Waiting for 250 OK status to start sending email
+ 3 - Waiting for 250 OK status for sender
+ 4 - Waiting for 250 OK status for recipient
+ 5 - Waiting for 354 OK status to send data
+ 6 - Waiting for 250 OK status for message received
+ 7 - Quiting
+*/
+
+PROCEDURE newState:
+ DEFINE INPUT PARAMETER newState AS INTEGER.
+ DEFINE INPUT PARAMETER pstring AS CHARACTER.
+ vState = newState.
+ IF pstring = "" THEN
+ RETURN.
+ SET-SIZE(vbuffer) = LENGTH(pstring) + 1.
+ PUT-STRING(vbuffer,1) = pstring.
+ SELF:WRITE(vbuffer, 1, LENGTH(pstring)).
+ SET-SIZE(vbuffer) = 0.
+END PROCEDURE.
+
+PROCEDURE ReadSocketResponse:
+ DEFINE VARIABLE vlength AS INTEGER NO-UNDO.
+ DEFINE VARIABLE str AS CHARACTER NO-UNDO.
+ DEFINE VARIABLE v AS INTEGER NO-UNDO.
+
+ MESSAGE SELF:GET-BYTES-AVAILABLE() VIEW-AS ALERT-BOX.
+ vlength = SELF:GET-BYTES-AVAILABLE().
+ IF vlength > 0 THEN DO:
+ SET-SIZE(vbuffer) = vlength + 1.
+ SELF:READ(vbuffer, 1, vlength, 1).
+ str = GET-STRING(vbuffer,1).
+ SET-SIZE(vbuffer) = 0.
+ objSendEmailAlg:handleResponse(str).
+ /*
+ v = INTEGER(ENTRY(1, str," ")).
+ CASE vState:
+ WHEN 1 THEN
+ IF v = 220 THEN
+ RUN newState(2, "HELO " + getHostname() + "~r~n").
+ ELSE
+ vState = -1.
+ WHEN 2 THEN
+ IF v = 250 THEN
+ RUN newState(3, "MAIL From: " + "hardcoded@gmail.com" + "~r~n").
+ ELSE
+ vState = -1.
+ WHEN 3 THEN
+ IF v = 250 THEN
+ RUN newState(4, "RCPT TO: " + "hardcoded@gmail.com" + "~r~n").
+ ELSE
+ vState = -1.
+ WHEN 4 THEN
+ IF v = 250 THEN
+ RUN newState(5, "DATA ~r~n").
+ ELSE
+ vState = -1.
+ WHEN 5 THEN
+ IF v = 354 THEN
+ RUN newState(6, "From: " + "hardcoded@gmail.com" + "~r~n" +
+ "To: " + "hardcoded@gmail.com" + " ~r~n" +
+ "Subject: " + "Test Subject" +
+ " ~r~n~r~n" +
+ "Test Body" + "~r~n" +
+ ".~r~n").
+ ELSE
+ vState = -1.
+
+ WHEN 6 THEN
+ IF v = 250 THEN
+ RUN newState(7,"QUIT~r~n").
+ ELSE
+ vState = -1.
+ END CASE.
+ */
+ END.
+ /*
+ IF vState = 7 THEN
+ MESSAGE "Email has been accepted for delivery.".
+ IF vState < 0 THEN
+ MESSAGE "Email has been aborted".
+ */
+END PROCEDURE.
+