annotate src/net.cpp @ 9:ae89ce4793d8

add satellite-view.
author pyon@macmini
date Wed, 31 Oct 2018 20:10:29 +0900
parents 82f9af6aa7e4
children 36811fd22bd2
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
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
2 // Last Change: 2018-10-31 水 10:42:06.
8
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
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
20 bool RsHttp::Get( wxString url, wxString file )
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
21 {
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
22 bool ret = false;
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
23 wxHTTP get;
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
24 get.SetFlags( wxSOCKET_WAITALL|wxSOCKET_BLOCK );
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
25 while ( !get.Connect( m_server, m_port ) )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
26 wxSleep( 1 );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
27
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
28 wxInputStream *httpStream = get.GetInputStream( url );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
29 if ( get.GetError() == wxPROTO_NOERR ) {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
30 wxFileOutputStream out_stream( file );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
31 httpStream->Read( out_stream );
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
32 ret = true;
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
33 } else {
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
34 wxMessageBox( wxT( "Re:Searcher Error: cannot get data." ) );
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
35 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
36
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
37 wxDELETE( httpStream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
38 get.Close();
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
39 return ret;
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
40 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
41
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
42 bool RsHttp::GetDB( void )
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
43 {
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
44 bool ret = false;
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
45 ret = Get( wxT( "/db/auth.db"), wxT( "auth.db") );
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
46 ret = Get( wxT( "/db/hhs.db"), wxT( "hhs.db") );
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
47 wxDateTime now = wxDateTime::Now();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
48 if ( now.GetDay() % 14 == 0 )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
49 Get( wxT( "/db/index.db"), wxT( "index.db" ) );
9
ae89ce4793d8 add satellite-view.
pyon@macmini
parents: 8
diff changeset
50 return ret;
8
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
51 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
52
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
53 int RsHttp::GetImagesSize( wxString hhs, wxString date )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
54 {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
55 wxHTTP get;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
56 while ( !get.Connect( m_server, m_port ) )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
57 wxSleep( 1 );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
58
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
59 wxString url = wxT( "/images/" ) + date + wxT( "/" ) + hhs + wxT( ".tgz" );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
60
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
61 int size = -1;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
62 wxInputStream *http_istream = get.GetInputStream( url );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
63 if ( get.GetError() == wxPROTO_NOERR ) {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
64 size = http_istream->GetSize();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
65 } else {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
66 wxMessageBox( wxT( "Re:Searcher Error: Cannot get file size." ) );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
67 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
68
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
69 wxDELETE( http_istream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
70 get.Close();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
71 return size;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
72 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
73
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
74 void RsHttp::GetImages( wxString hhs, wxString date )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
75 {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
76 wxHTTP get;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
77 get.SetTimeout( 30 );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
78 get.SetFlags( wxSOCKET_WAITALL|wxSOCKET_BLOCK );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
79 while ( !get.Connect( m_server, m_port ) )
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
80 wxSleep( 1 );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
81
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
82 wxString url = wxT( "/images/" ) + date + wxT( "/" ) + hhs + wxT( ".tgz" );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
83
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
84 wxInputStream *http_istream = get.GetInputStream( url );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
85 if ( get.GetError() == wxPROTO_NOERR ) {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
86 //int size = http_istream->GetSize();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
87 wxZlibInputStream zlib_istream( http_istream ); // 0: no cache : bad
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
88
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
89 wxTarEntry* entry;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
90 wxTarInputStream tar_istream( zlib_istream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
91 int i = 1;
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
92 while ( ( entry = tar_istream.GetNextEntry() ) != NULL ) {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
93 //wxString name = entry->GetName();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
94 wxFileOutputStream file_ostream( wxString::Format( wxT( ".cache/%s_%d" ), date, i++ ) );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
95 file_ostream.Write( tar_istream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
96 file_ostream.Close();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
97 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
98 } else {
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
99 wxMessageBox( wxT( "Re:Searcher Error: get err" ) );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
100 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
101
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
102 //wxDELETE( http_istream );
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
103 get.Close();
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
104 }
82f9af6aa7e4 add net.cpp
pyon@macmini
parents:
diff changeset
105