annotate src/net.cpp @ 8:82f9af6aa7e4

add net.cpp
author pyon@macmini
date Tue, 30 Oct 2018 17:26:02 +0900
parents
children ae89ce4793d8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
1 // Filename : net.cpp
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
2 // Last Change: 2018-10-30 火 11:08:25.
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
3 //
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
4
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
5 #include <wx/datetime.h>
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
6 #include <wx/stream.h>
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
7 #include <wx/zstream.h>
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
8 #include <wx/tarstrm.h>
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
9 #include <wx/mstream.h>
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
10 #include "net.h"
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
11
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
12 RsHttp::RsHttp()
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
13 {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
14 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
15
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
16 RsHttp::~RsHttp()
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
17 {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
18 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
19
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
20 void RsHttp::Get( wxString url, wxString file )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
21 {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
22 wxHTTP get;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
23 while ( !get.Connect( m_server, m_port ) )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
24 wxSleep( 1 );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
25
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
26 wxInputStream *httpStream = get.GetInputStream( url );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
27 if ( get.GetError() == wxPROTO_NOERR ) {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
28 wxFileOutputStream out_stream( file );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
29 httpStream->Read( out_stream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
30 } else {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
31 wxMessageBox( wxT( "Re:Searcher Error: get err" ) );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
32 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
33
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
34 wxDELETE( httpStream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
35 get.Close();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
36 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
37
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
38 void RsHttp::GetDB( void )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
39 {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
40 Get( wxT( "/db/auth.db"), wxT( "auth.db") );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
41 Get( wxT( "/db/hhs.db"), wxT( "hhs.db") );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
42 wxDateTime now = wxDateTime::Now();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
43 if ( now.GetDay() % 14 == 0 )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
44 Get( wxT( "/db/index.db"), wxT( "index.db" ) );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
45 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
46
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
47 int RsHttp::GetImagesSize( wxString hhs, wxString date )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
48 {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
49 wxHTTP get;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
50 while ( !get.Connect( m_server, m_port ) )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
51 wxSleep( 1 );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
52
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
53 wxString url = wxT( "/images/" ) + date + wxT( "/" ) + hhs + wxT( ".tgz" );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
54
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
55 int size = -1;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
56 wxInputStream *http_istream = get.GetInputStream( url );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
57 if ( get.GetError() == wxPROTO_NOERR ) {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
58 size = http_istream->GetSize();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
59 } else {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
60 wxMessageBox( wxT( "Re:Searcher Error: Cannot get file size." ) );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
61 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
62
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
63 wxDELETE( http_istream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
64 get.Close();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
65 return size;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
66 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
67
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
68 void RsHttp::GetImages( wxString hhs, wxString date )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
69 {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
70 wxHTTP get;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
71 get.SetTimeout( 30 );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
72 get.SetFlags( wxSOCKET_WAITALL|wxSOCKET_BLOCK );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
73 while ( !get.Connect( m_server, m_port ) )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
74 wxSleep( 1 );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
75
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
76 wxString url = wxT( "/images/" ) + date + wxT( "/" ) + hhs + wxT( ".tgz" );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
77
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
78 wxInputStream *http_istream = get.GetInputStream( url );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
79 if ( get.GetError() == wxPROTO_NOERR ) {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
80 //int size = http_istream->GetSize();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
81 wxZlibInputStream zlib_istream( http_istream ); // 0: no cache : bad
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
82
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
83 /*
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
84 wxMemoryOutputStream mm_ostream; // 1: ok
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
85 http_istream->Read( mm_ostream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
86 wxMemoryInputStream mm_istream( mm_ostream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
87 wxZlibInputStream zlib_istream( mm_istream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
88 */
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
89
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
90 wxTarEntry* entry;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
91 wxTarInputStream tar_istream( zlib_istream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
92 int i = 1;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
93 while ( ( entry = tar_istream.GetNextEntry() ) != NULL ) {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
94 //wxString name = entry->GetName();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
95 wxFileOutputStream file_ostream( wxString::Format( wxT( ".cache/%s_%d" ), date, i++ ) );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
96 file_ostream.Write( tar_istream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
97 file_ostream.Close();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
98 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
99 } else {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
100 wxMessageBox( wxT( "Re:Searcher Error: get err" ) );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
101 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
102
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
103 //wxDELETE( http_istream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
104 get.Close();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
105 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
106