Mozilla/mozilla/xpfc/msg/src/nsSMTPServerCallback.cpp
dmose%mozilla.org ce50f7d151 updated license boilerplate to xPL 1.1, a=chofmann@netscape.com,r=endico@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@52900 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-06 02:47:15 +00:00

230 lines
8.7 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
#include "smtp.h"
#include "nsStream.h"
#include "nsString.h"
#include "nsSMTPServerCallback.h"
void setSink(smtpSink_t * pSink, nsISMTPObserver * aObserver)
{
pSink->bdat = SMTPServerCallback_bdat;
pSink->connect = SMTPServerCallback_connect;
pSink->data = SMTPServerCallback_data;
pSink->ehlo = SMTPServerCallback_ehlo;
pSink->ehloComplete = SMTPServerCallback_ehloComplete;
pSink->error = SMTPServerCallback_error;
pSink->expand = SMTPServerCallback_expand;
pSink->expandComplete = SMTPServerCallback_expandComplete;
pSink->help = SMTPServerCallback_help;
pSink->helpComplete = SMTPServerCallback_helpComplete;
pSink->mailFrom = SMTPServerCallback_mailFrom;
pSink->noop = SMTPServerCallback_noop;
pSink->quit = SMTPServerCallback_quit;
pSink->rcptTo = SMTPServerCallback_rcptTo;
pSink->reset = SMTPServerCallback_reset;
pSink->send = SMTPServerCallback_send;
pSink->sendCommand = SMTPServerCallback_sendCommand;
pSink->sendCommandComplete = SMTPServerCallback_sendCommandComplete;
pSink->verify = SMTPServerCallback_verify;
pSink->pOpaqueData = (void*)aObserver;
}
// XXX: what to do for responses that have no code or message from server (ie completion callbacks)?
// Right now, we send '0' to the observer for the code and a cusom message for the response.
/*Notification for the response to the BDAT command.*/
void SMTPServerCallback_bdat( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_bdat, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to the connection to the server.*/
void SMTPServerCallback_connect( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_connect, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to the DATA command.*/
void SMTPServerCallback_data( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_data, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to the EHLO command.*/
void SMTPServerCallback_ehlo( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_ehlo, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the completion of the EHLO command.*/
void SMTPServerCallback_ehloComplete(smtpSink_t * in_pSink)
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_ehloComplete, 0, nsString("EHLO complete\n"));
}
/*Notification for the response to a server error.*/
void SMTPServerCallback_error(smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_error, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to the EXPN command.*/
void SMTPServerCallback_expand( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_expand, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the completion of the EXPN command.*/
void SMTPServerCallback_expandComplete(smtpSink_t * in_pSink)
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_expandComplete, 0, nsString("EXPAND complete\n"));
}
/*Notification for the response to the HELP command.*/
void SMTPServerCallback_help( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_help, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the completion of the HELP command.*/
void SMTPServerCallback_helpComplete(smtpSink_t * in_pSink)
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_helpComplete, 0, nsString("HElp Complete\n"));
}
/*Notification for the response to the MAIL FROM command.*/
void SMTPServerCallback_mailFrom( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_mailFrom, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to the NOOP command.*/
void SMTPServerCallback_noop( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_noop, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to the QUIT command.*/
void SMTPServerCallback_quit( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_quit, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to the RCPT TO command.*/
void SMTPServerCallback_rcptTo( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_rcpTo, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to the RSET command.*/
void SMTPServerCallback_reset( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_reset, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to sending the message.*/
void SMTPServerCallback_send( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_send, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the response to sending a generic command.*/
void SMTPServerCallback_sendCommand( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_sendCommand, in_responseCode, nsString(in_responseMessage));
}
/*Notification for the completion of send a generic command.*/
void SMTPServerCallback_sendCommandComplete(smtpSink_t * in_pSink)
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_sendCommandComplete, 0, nsString("SENDCOMMAND complete\n"));
}
/*Notification for the response to the VRFY command.*/
void SMTPServerCallback_verify( smtpSink_t * in_pSink, int in_responseCode, const char * in_responseMessage )
{
nsISMTPObserver * obs = (nsISMTPObserver *) in_pSink->pOpaqueData;
if (nsnull != obs)
obs->ServerResponse(nsSMTPMethod_verify, in_responseCode, nsString(in_responseMessage));
}