Back to index

lightning-sunbird  0.9+nobinonly
PhRemoteClient.cpp
Go to the documentation of this file.
00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00003  *
00004  * The contents of this file are subject to the Mozilla Public License Version
00005  * 1.1 (the "License"); you may not use this file except in compliance with
00006  * the License. You may obtain a copy of the License at
00007  * http://www.mozilla.org/MPL/
00008  *
00009  * Software distributed under the License is distributed on an "AS IS" basis,
00010  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00011  * for the specific language governing rights and limitations under the
00012  * License.
00013  *
00014  * The Original Code is mozilla.org code.
00015  *
00016  * The Initial Developer of the Original Code is
00017  * Christopher Blizzard and Jamie Zawinski.
00018  * Portions created by the Initial Developer are Copyright (C) 1994-2000
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *   Adrian Mardare ( amardare@qnx.com )
00023  *
00024  * Alternatively, the contents of this file may be used under the terms of
00025  * either the GNU General Public License Version 2 or later (the "GPL"), or
00026  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00027  * in which case the provisions of the GPL or the LGPL are applicable instead
00028  * of those above. If you wish to allow use of your version of this file only
00029  * under the terms of either the GPL or the LGPL, and not to allow others to
00030  * use your version of this file under the terms of the MPL, indicate your
00031  * decision by deleting the provisions above and replace them with the notice
00032  * and other provisions required by the GPL or the LGPL. If you do not delete
00033  * the provisions above, a recipient may use your version of this file under
00034  * the terms of any one of the MPL, the GPL or the LGPL.
00035  *
00036  * ***** END LICENSE BLOCK ***** */
00037 
00038 #include "PhRemoteClient.h"
00039 #include "prmem.h"
00040 #include "prprf.h"
00041 #include "plstr.h"
00042 #include "prsystem.h"
00043 #include "prlog.h"
00044 #include "prenv.h"
00045 #include <stdlib.h>
00046 #include <unistd.h>
00047 #include <strings.h>
00048 #include <sys/time.h>
00049 #include <sys/types.h>
00050 #include <unistd.h>
00051 #include <Pt.h>
00052 
00053 #define MOZ_REMOTE_MSG_TYPE                             100
00054 
00055 XRemoteClient::XRemoteClient()
00056 {
00057        mInitialized = PR_FALSE;
00058 }
00059 
00060 XRemoteClient::~XRemoteClient()
00061 {
00062   if (mInitialized)
00063     Shutdown();
00064 }
00065 
00066 nsresult
00067 XRemoteClient::Init (void)
00068 {
00069 
00070   if (mInitialized)
00071     return NS_OK;
00072 
00073        /* we have to initialize the toolkit since we use PtConnection stuff to send messages */
00074        PtInit( NULL );
00075 
00076   mInitialized = PR_TRUE;
00077 
00078   return NS_OK;
00079 }
00080 
00081 nsresult
00082 XRemoteClient::SendCommand (const char *aProgram, const char *aUsername,
00083                             const char *aProfile, const char *aCommand,
00084                             char **aResponse, PRBool *aWindowFound)
00085 {
00086   *aWindowFound = PR_TRUE;
00087 
00088        char RemoteServerName[128];
00089 
00090        sprintf( RemoteServerName, "%s_RemoteServer", aProgram ? aProgram : "mozilla" );
00091 
00092        PtConnectionClient_t *cnt = PtConnectionFindName( RemoteServerName, 0, 0 );
00093        if( !cnt ) {
00094               /* no window has registered for the remote service */
00095               *aWindowFound = PR_FALSE;
00096               return NS_OK;
00097               }
00098 
00099        if( PtConnectionSend( cnt, MOZ_REMOTE_MSG_TYPE, aCommand, NULL, strlen( aCommand ), 0 ) < 0 )
00100               return NS_ERROR_FAILURE;
00101 
00102   return NS_OK;
00103 }
00104 
00105 nsresult
00106 XRemoteClient::SendCommandLine (const char *aProgram, const char *aUsername,
00107                                 const char *aProfile,
00108                                 PRInt32 argc, char **argv,
00109                                 char **aResponse, PRBool *aWindowFound)
00110 {
00111   return NS_ERROR_FAILURE;
00112 }
00113 
00114 void
00115 XRemoteClient::Shutdown (void)
00116 {
00117 
00118   if (!mInitialized)
00119     return;
00120 
00121   // shut everything down
00122   mInitialized = PR_FALSE;
00123 
00124   return;
00125 }