X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/600683ca0561c9d56e73f1faa3f21d8a6670936b..9696657f22ee2f10017c0bc305ae1843ee8fe768:/samples/ipc/server.h diff --git a/samples/ipc/server.h b/samples/ipc/server.h index 6f65c463ba..a81a4421cc 100644 --- a/samples/ipc/server.h +++ b/samples/ipc/server.h @@ -9,16 +9,28 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +#include "connection.h" + +enum +{ + ID_START = 10000, + ID_DISCONNECT, + ID_ADVISE, + ID_SERVERNAME, +}; + // Define a new application class MyServer; +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,53 +41,64 @@ class MyFrame : public wxFrame public: MyFrame(wxFrame *frame, const wxString& title); - void OnListBoxClick(wxCommandEvent& event); - void OnExit(wxCommandEvent& event); + void OnClose(wxCloseEvent& event); -private: - wxPanel *panel; + void UpdateUI(); + void Disconnect(); - DECLARE_EVENT_TABLE() -}; +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 ); } -class IPCDialogBox; -class MyConnection : public wxConnection -{ -public: - MyConnection(); - ~MyConnection(); - bool OnExecute(const wxString& topic, wxChar *data, int size, wxIPCFormat format); - wxChar *OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format); - bool OnPoke(const wxString& topic, const wxString& item, wxChar *data, int size, wxIPCFormat format); - bool OnStartAdvise(const wxString& topic, const wxString& item); + MyServer *m_server; + + void OnStart( wxCommandEvent &event ); + void OnServerName( wxCommandEvent &event ); + void OnDisconnect( wxCommandEvent &event ); + void OnAdvise( wxCommandEvent &event ); - IPCDialogBox *dialog; + DECLARE_EVENT_TABLE() }; -class MyServer: public wxServer +class MyConnection : public MyConnectionBase { public: - wxConnectionBase *OnAcceptConnection(const wxString& topic); + 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(); + + // topic for which we advise the client or empty if none + wxString m_advise; + +protected: + // the data returned by last OnRequest(): we keep it in this buffer to + // ensure that the pointer we return from OnRequest() stays valid + wxCharBuffer m_requestData; }; -class IPCDialogBox: public wxDialog +class MyServer : public wxServer { public: - IPCDialogBox(wxWindow *parent, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - MyConnection *the_connection); - ~IPCDialogBox( ); + MyServer(); + virtual ~MyServer(); - void OnQuit(wxCommandEvent& event); + void Disconnect(); + bool IsConnected() { return m_connection != NULL; } + MyConnection *GetConnection() { return m_connection; } - MyConnection *m_connection; + void Advise(); + bool CanAdvise() { return m_connection && !m_connection->m_advise.empty(); } - DECLARE_EVENT_TABLE() + virtual wxConnectionBase *OnAcceptConnection(const wxString& topic); + +protected: + MyConnection *m_connection; }; -#define SERVER_EXIT wxID_EXIT -#define SERVER_LISTBOX 500 -#define SERVER_QUIT_BUTTON 501