Mozilla/mozilla/calendar/modules/test/inc/nsTrexTestShell.h
eyork%netscape.com d10846bc53 First pass at DataCollection Manager
git-svn-id: svn://10.0.0.236/trunk@13777 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-31 00:55:23 +00:00

130 lines
3.9 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.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef _nsTrexTestShell_h__
#define _nsTrexTestShell_h__
#include "nsITrexTestShell.h"
#include "nsIFactory.h"
#include "nsRepository.h"
#include "nsIShellInstance.h"
#include "nsIWidget.h"
#include "nsGUIEvent.h"
#include "nsRect.h"
#include "nsApplicationManager.h"
#include "nsIContentViewer.h"
#include "nsCRT.h"
#include "plstr.h"
#include "nsIWidget.h"
#include "nsITextWidget.h"
#include "nsITextAreaWidget.h"
#include "nspr.h"
#include "jsapi.h"
#include "nsIStreamListener.h"
#define TCP_MESG_SIZE 1024
#define TCP_SERVER_PORT 666
#define NUM_TCP_CLIENTS 10
#define NUM_TCP_CONNECTIONS_PER_CLIENT 5
#define NUM_TCP_MESGS_PER_CONNECTION 10
#define SERVER_MAX_BIND_COUNT 100
typedef struct buffer {
char data[TCP_MESG_SIZE * 2];
} buffer;
class nsIURL;
class nsTrexTestShell : public nsITrexTestShell,
public nsIStreamListener
{
public:
nsTrexTestShell();
~nsTrexTestShell();
NS_DECL_ISUPPORTS
NS_IMETHOD Init();
// nsIAppShell interfaces
NS_IMETHOD Create(int* argc, char ** argv) ;
NS_IMETHOD SetDispatchListener(nsDispatchListener* aDispatchListener) ;
NS_IMETHOD Exit();
virtual nsresult Run();
virtual void* GetNativeData(PRUint32 aDataType) ;
NS_IMETHOD_(nsEventStatus) HandleEvent(nsGUIEvent *aEvent) ;
NS_IMETHOD GetWebViewerContainer(nsIWebViewerContainer ** aWebViewerContainer) ;
NS_IMETHOD StartCommandServer();
NS_IMETHOD ReceiveCallback(nsICollectedData& aReply);
NS_IMETHOD SendCommand(nsString& aCommand);
NS_IMETHOD ExecuteJS();
private:
NS_METHOD RegisterFactories();
NS_IMETHOD SendJS(nsString& aCommand);
NS_IMETHOD LoadScript(nsString& aScript);
NS_IMETHOD ReceiveCommand(nsString& aCommand, nsString& aReply);
NS_METHOD ParseCommandLine();
NS_IMETHOD LoadUI();
NS_IMETHOD InitNetwork();
private:
nsIShellInstance * mShellInstance ;
nsITextAreaWidget * mDisplay;
nsITextWidget * mInput;
public:
NS_IMETHOD RunThread();
NS_IMETHOD ExitThread();
private:
PRMonitor * mExitMon; /* monitor to signal on exit */
PRInt32 * mExitCounter; /* counter to decrement, before exit */
PRInt32 mDatalen; /* bytes of data transfered in each read/write */
PRInt32 mNumThreads;
PRMonitor * mClientMon;
PRNetAddr mClientAddr;
nsString mCommand;
JSRuntime * mJSRuntime ;
JSContext * mJSContext;
JSObject * mJSGlobal;
JSObject * mJSZuluObject;
nsString mScript;
nsIURL * mURL;
nsIStreamListener * mListener;
nsString mJSData;
PRBool mQuiet;
PRBool mVerbose;
PRBool mStdOut;
// nsIStreamListener interfaces
public:
NS_IMETHOD GetBindInfo(nsIURL* aURL);
NS_IMETHOD OnDataAvailable(nsIURL* aURL, nsIInputStream *aIStream, PRInt32 aLength) ;
NS_IMETHOD OnStartBinding(nsIURL* aURL, const char *aContentType);
NS_IMETHOD OnProgress(nsIURL* aURL, PRInt32 aProgress, PRInt32 aProgressMax);
NS_IMETHOD OnStatus(nsIURL* aURL, const nsString &aMsg);
NS_IMETHOD OnStopBinding(nsIURL* aURL, PRInt32 aStatus, const nsString &aMsg);
};
#endif