]> git.saurik.com Git - wxWidgets.git/commitdiff
* Added a small wxHTTP description
authorGuilhem Lavaux <lavaux@easynet.fr>
Thu, 25 Feb 1999 20:13:10 +0000 (20:13 +0000)
committerGuilhem Lavaux <lavaux@easynet.fr>
Thu, 25 Feb 1999 20:13:10 +0000 (20:13 +0000)
* Added some example/description to wxFTP
* Some more on wxURL

* Added missing file in wxMMedia

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1795 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/classes.tex
docs/latex/wx/ftp.tex
docs/latex/wx/url.tex
src/common/ftp.cpp
src/common/http.cpp
utils/wxMMedia/sndadpcm.h [new file with mode: 0644]
utils/wxMMedia/sndfrmt.h
utils/wxMMedia/sndwav.cpp

index f54db8af7826b077b3140b596b3f0a5b08b80c59..7699ac12fa313bbb1206bf27aac2f2e5b7b1c421 100644 (file)
@@ -80,6 +80,7 @@
 \input grid.tex
 \input hash.tex
 \input helpinst.tex
+\input http.tex
 \input idleevt.tex
 \input icon.tex
 \input image.tex
index 2b8b6c5ec661c6efddebdaf3801f32b9ef1088ea..039bb10cd127b504b66f5b37e822c816a400a006 100644 (file)
@@ -6,7 +6,7 @@
 
 \wxheading{Include files}
 
-<wx/ftp.h>
+<wx/protocol/ftp.h>
 
 \wxheading{See also}
 
@@ -84,6 +84,68 @@ Delete the file specified by \it{path}. Returns TRUE if successful.
 
 % ----------------------------------------------------------------------------
 
+\membersection{wxFTP::SetUser}
+\func{void}{SetUser}{\param{const wxString\&}{ user}}
+
+Sets the user name to be sent to the FTP server to be allowed to log in.
+
+\wxheading{Default value}
+
+The default value of the user name is "anonymous".
+
+\wxheading{Remark}
+
+This parameter can be included in a URL if you want to use the URL manager.
+For example, you can use: "ftp://a_user:a_password@a.host:service/a_directory/a_file"
+to specify a user and a password.
+
+\membersection{wxFTP::SetPassword}
+\func{void}{SetPassword}{\param{const wxString\&}{ passwd}}
+
+Sets the password to be sent to the FTP server to be allowed to log in.
+
+\wxheading{Default value}
+
+The default value of the user name is your email address. For example, it could
+be "username@userhost.domain". This password is built by getting the current
+user name and the host name of the local machine from the system.
+
+\wxheading{Remark}
+
+This parameter can be included in a URL if you want to use the URL manager.
+For example, you can use: "ftp://a_user:a_password@a.host:service/a_directory/a_
+file"
+to specify a user and a password.
+
+% ----------------------------------------------------------------------------
+\membersection{wxFTP::GetList}
+\func{wxList *}{GetList}{\param{const wxString\&}{ wildcard}}
+
+The GetList function is quite low-level. It returns the list of the files in
+the current directory. The list can be filtered using the \it{wildcard} string.
+If \it{wildcard} is a NULL string, it will return all files in directory.
+
+The form of the list can change from one peer system to another. For example,
+for a UNIX peer system, it will look like this:
+\begin{verbatim}
+-r--r--r--   1 guilhem  lavaux      12738 Jan 16 20:17 cmndata.cpp
+-r--r--r--   1 guilhem  lavaux      10866 Jan 24 16:41 config.cpp
+-rw-rw-rw-   1 guilhem  lavaux      29967 Dec 21 19:17 cwlex_yy.c
+-rw-rw-rw-   1 guilhem  lavaux      14342 Jan 22 19:51 cwy_tab.c
+-r--r--r--   1 guilhem  lavaux      13890 Jan 29 19:18 date.cpp
+-r--r--r--   1 guilhem  lavaux       3989 Feb  8 19:18 datstrm.cpp
+\end{verbatim}
+
+But on Windows system, it will look like this:
+\begin{verbatim}
+winamp~1 exe    520196 02-25-1999  19:28  winamp204.exe
+        1 file(s)           520 196 bytes
+\end{verbatim}
+
+The list is a string list and one node corresponds to a line sent by the peer.
+
+% ----------------------------------------------------------------------------
+
 \membersection{wxFTP::GetOutputStream}
 
 \func{wxOutputStream *}{GetOutputStream}{\param{const wxString\&}{ file}}
@@ -100,3 +162,51 @@ An initialized write-only stream.
 
 \helpref{wxOutputStream}{wxoutputstream}
 
+% ----------------------------------------------------------------------------
+
+\membersection{wxFTP::GetInputStream}\label{wxftpgetinput}
+
+\func{wxInputStream *}{GetInputStream}{\param{const wxString\&}{ path}}
+
+Creates a new input stream on the the specified path. You can use all but seek
+functionnality of wxStream. Seek isn't available on all stream. For example,
+http or ftp streams doesn't deal with it. Other functions like Tell
+aren't available for the moment for this sort of stream.
+You will be notified when the EOF is reached by an error.
+
+\wxheading{Return value}
+
+Returns NULL if an error occured (it could be a network failure or the fact
+that the file doesn't exist).
+
+Returns the initialized stream. You will have to delete it yourself once you
+don't use it anymore. The destructor close the DATA stream connection but
+will leave the COMMAND stream connection opened. It means that you still
+can send new commands without reconnecting.
+
+\wxheading{Example of a standalone connection (without wxURL)}
+
+\begin{verbatim}
+  wxFTP ftp;
+  wxInputStream *in\_stream;
+  char *data;
+
+  ftp.Connect("a.host.domain");
+  ftp.ChDir("a\_directory");
+  in\_stream = ftp.GetInputStream("a\_file\_to\_get");
+
+  data = new char[in\_stream->StreamSize()];
+
+  in\_stream->Read(data, in\_stream->StreamSize());
+  if (in\_stream->LastError() != wxStream\_NOERROR) {
+    // Do something.
+  }
+
+  delete in\_stream; /* Close the DATA connection */
+
+  ftp.Close(); /* Close the COMMAND connection */
+\end{verbatim}
+
+\wxheading{See also}
+
+\helpref{wxInputStream}{wxinputstream}
index 56a55a318c8e914b0fa6d1de5b58f8416eb2d421..4d40753f8353370918889b8f1cfdc980898c5cfa 100644 (file)
 
 \helpref{wxSocketBase}{wxsocketbase}, \helpref{wxProtocol}{wxprotocol}
 
+\wxheading{Example}
+
+\begin{verbatim}
+  wxURL url("http://a.host/a.dir/a.file");
+  wxInputStream *in\_stream;
+
+  in\_stream = url.GetInputStream();
+  /* Then, you can use all IO calls of in\_stream (See wxStream) */
+\end{verbatim}
+
 % ----------------------------------------------------------------------------
 % Members
 % ----------------------------------------------------------------------------
index 28aad19f7f4b274cfdd30f18962c4f2c504cb379..d0b2a80211366cb6a46014c6f99d8231fa83a051 100644 (file)
@@ -249,9 +249,11 @@ bool wxFTP::RmFile(const wxString& path)
 class wxInputFTPStream : public wxSocketInputStream {
 public:
   wxFTP *m_ftp;
+  size_t m_ftpsize;
 
   wxInputFTPStream(wxFTP *ftp_clt, wxSocketBase *sock)
     : wxSocketInputStream(*sock), m_ftp(ftp_clt) {}
+  size_t StreamSize() { return m_ftpsize; }
   virtual ~wxInputFTPStream(void)
   { 
      if (LastError() != wxStream_NOERROR)
@@ -328,6 +330,8 @@ bool wxFTP::Abort(void)
 wxInputStream *wxFTP::GetInputStream(const wxString& path)
 {
   wxString tmp_str;
+  int pos_size;
+  wxInputFTPStream *in_stream;
 
   if (!SendCommand("TYPE I", '2'))
     return NULL;
@@ -343,7 +347,16 @@ wxInputStream *wxFTP::GetInputStream(const wxString& path)
   if (!SendCommand(tmp_str, '1'))
     return NULL;
 
-  return new wxInputFTPStream(this, sock);
+  in_stream = new wxInputFTPStream(this, sock);
+
+  pos_size = m_lastResult.Index('(');
+  if (pos_size != wxNOT_FOUND) {
+    wxString str_size = m_lastResult(pos_size, m_lastResult.Index(')'));
+
+    in_stream->m_ftpsize = atoi(WXSTRINGCAST str_size);
+  }
+
+  return in_stream;
 }
 
 wxOutputStream *wxFTP::GetOutputStream(const wxString& path)
index 80c8bf09e848954e5edeb23e38cfc7595d2a29f6..d92ac8436b6b9cf5f3db53b28c6219cd99c94edf 100644 (file)
@@ -231,7 +231,10 @@ bool wxHTTP::BuildRequest(const wxString& path, wxHTTP_Req req)
 class wxHTTPStream : public wxSocketInputStream {
 public:
   wxHTTP *m_http;
+  size_t m_httpsize;
+
   wxHTTPStream(wxHTTP *http) : wxSocketInputStream(*http), m_http(http) {}
+  size_t StreamSize() { return m_httpsize; }
   virtual ~wxHTTPStream(void) { m_http->Abort(); }
 };
 
@@ -255,5 +258,8 @@ wxInputStream *wxHTTP::GetInputStream(const wxString& path)
   if (!BuildRequest(path, wxHTTP_GET))
     return NULL;
 
+  if (GetHeader("Content-Length").IsEmpty())
+    inp_stream->m_httpsize = atoi(WXSTRINGCAST GetHeader("Content-Length"));
+
   return inp_stream;
 }
diff --git a/utils/wxMMedia/sndadpcm.h b/utils/wxMMedia/sndadpcm.h
new file mode 100644 (file)
index 0000000..465958c
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __MEDIA_SNDADPCM_H__
+#define __MEDIA_SNDADPCM_H__
+
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+#include "sndfrmt.h"
+
+class wxSoundAdpcmCodec : public wxSoundCodec {
+  DECLARE_DYNAMIC_CLASS(wxSoundAdpcmCodec)
+ public:
+  wxSoundAdpcmCodec();
+  ~wxSoundAdpcmCodec();
+
+  size_t GetByteRate() const;
+  wxSoundDataFormat GetPreferredFormat(int codec = 0) const;
+  int GetBits(int bits);
+
+  void Decode();
+  void Encode();
+
+  void InitWith(const wxSoundDataFormat& format);
+ protected:
+  struct g72x_state *m_codec_state;
+  int m_bits_waiting, m_current_byte;
+  int m_srate;
+};
+
+#endif
index ee686f175381bc7835785cecd9ad7dddcb23ba01..6a67db7de2f23ea3fd0117499cbfc7901bce6d3b 100644 (file)
@@ -36,6 +36,7 @@ class wxSoundDataFormat {
   void SetChannels(int channels);
   void SetStereo(bool on);
   void SetCodecNo(int no);
+  int GetCodecNo() { return m_codno; }
   void SetCodecCreate(bool create) { m_codcreate = create; }
 
   int GetSampleRate() const { return m_srate; }
index 05d8019cc62a6b709528ed547a822e2f13a40352..23857f15c181fa033db64b8036f99f238b7a27aa 100644 (file)
@@ -140,13 +140,12 @@ bool wxSndWavCodec::PrepareToRecord(wxUint32 m_fsize)
   if (!riff_codec.CreateChunk("fmt ", sizeof(wav_hdr)))
     return FALSE;
 
-  wav_hdr.format = 1; // PCM_WAV_FORMAT
+  wav_hdr.format = m_sndformat.GetCodecNo(); // PCM_WAV_FORMAT
   wav_hdr.channels = m_sndformat.GetChannels();
   wav_hdr.sample_fq = m_sndformat.GetSampleRate();
   wav_hdr.byte_p_spl = (m_sndformat.GetBps() / 8) * wav_hdr.channels;
   wav_hdr.byte_p_sec = m_sndformat.GetCodec()->GetByteRate();
   wav_hdr.bits_p_spl = m_sndformat.GetBps();
-  ChangeCodec(WXSOUND_PCM);
 
   if (wav_hdr.format == WXSOUND_PCM) {
     m_sndformat.SetSign(wxSND_SAMPLE_SIGNED);