X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..7379e47609b16a9fef59e1d2a6b2e47f216dd85c:/samples/ipc/server.h diff --git a/samples/ipc/server.h b/samples/ipc/server.h index ac85cd4b0d..c0450f99c4 100644 --- a/samples/ipc/server.h +++ b/samples/ipc/server.h @@ -9,16 +9,26 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +#define ID_START 10000 +#define ID_DISCONNECT 10001 +#define ID_ADVISE 10002 +#define ID_LOG 10003 +#define ID_SERVERNAME 10004 + // Define a new application class MyServer; +class MyConnection; +class MyFrame; + class MyApp : public wxApp { public: virtual bool OnInit(); virtual int OnExit(); + MyFrame *GetFrame() { return m_frame; }; -private: - MyServer *m_server; +protected: + MyFrame *m_frame; }; DECLARE_APP(MyApp) @@ -29,54 +39,65 @@ class MyFrame : public wxFrame public: MyFrame(wxFrame *frame, const wxString& title); - void OnListBoxClick(wxCommandEvent& event); void OnExit(wxCommandEvent& event); + void OnClose(wxCloseEvent& event); + + void Enable(); + void Disconnect(); + +protected: + wxButton* GetStart() { return (wxButton*) FindWindow( ID_START ); } + wxChoice* GetServername() { return (wxChoice*) FindWindow( ID_SERVERNAME ); } + wxButton* GetDisconnect() { return (wxButton*) FindWindow( ID_DISCONNECT ); } + wxButton* GetAdvise() { return (wxButton*) FindWindow( ID_ADVISE ); } + wxTextCtrl* GetLog() { return (wxTextCtrl*) FindWindow( ID_LOG ); } -private: - wxPanel *panel; + + MyServer *m_server; + + void OnStart( wxCommandEvent &event ); + void OnServerName( wxCommandEvent &event ); + void OnDisconnect( wxCommandEvent &event ); + void OnAdvise( wxCommandEvent &event ); DECLARE_EVENT_TABLE() }; -class IPCDialogBox; class MyConnection : public wxConnection { public: - MyConnection(char *buf, int size); + MyConnection(); ~MyConnection(); - bool OnExecute(const wxString& topic, char *data, int size, wxIPCFormat format); - char *OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format); - bool OnPoke(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format); - bool OnStartAdvise(const wxString& topic, const wxString& item); - -private: - IPCDialogBox *dialog; + virtual bool OnExecute(const wxString& topic, const void *data, size_t size, wxIPCFormat format); + virtual const void *OnRequest(const wxString& topic, const wxString& item, size_t *size, wxIPCFormat format); + virtual bool OnPoke(const wxString& topic, const wxString& item, const void *data, size_t size, wxIPCFormat format); + virtual bool OnStartAdvise(const wxString& topic, const wxString& item); + virtual bool OnStopAdvise(const wxString& topic, const wxString& item); + virtual bool DoAdvise(const wxString& item, const void *data, size_t size, wxIPCFormat format); + virtual bool OnDisconnect(); +protected: + void Log(const wxString& command, const wxString& topic, const wxString& item, const void *data, size_t size, wxIPCFormat format); +public: + wxString m_sAdvise; +protected: + wxString m_sRequestDate; + char m_achRequestBytes[3]; }; class MyServer: public wxServer { public: + MyServer(); + ~MyServer(); + void Disconnect(); + bool IsConnected() { return m_connection != NULL; }; + MyConnection *GetConnection() { return m_connection; }; + void Advise(); + bool CanAdvise() { return m_connection != NULL && !m_connection->m_sAdvise.IsEmpty(); }; wxConnectionBase *OnAcceptConnection(const wxString& topic); -}; - -class IPCDialogBox: public wxDialog -{ -public: - IPCDialogBox(wxWindow *parent, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - MyConnection *the_connection); - void OnQuit(wxCommandEvent& event); - -private: - MyConnection *m_connection; - - DECLARE_EVENT_TABLE() +protected: + MyConnection *m_connection; }; -#define SERVER_EXIT wxID_EXIT -#define SERVER_LISTBOX 500 -#define SERVER_QUIT_BUTTON 501