]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/ipc/client.h
return 0 (meaning the file is not seekable, as the docs now explain) instead of 4KB...
[wxWidgets.git] / samples / ipc / client.h
index 5131e1ca4545e6d3256410ea44f55f4dab6d919b..b4a3ac051539b45e62ff3e0d95b556d8ad7e6b39 100644 (file)
@@ -9,12 +9,33 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+#include "connection.h"
+
+#define ID_START         10000
+#define ID_DISCONNECT    10001
+#define ID_STARTADVISE    10002
+#define ID_LOG          10003
+#define ID_SERVERNAME    10004
+#define ID_STOPADVISE    10005
+#define ID_POKE            10006
+#define ID_REQUEST        10007
+#define ID_EXECUTE        10008
+#define ID_TOPIC        10009
+#define ID_HOSTNAME        10010
+
 // Define a new application
+class MyClient;
+class MyFrame;
+
 class MyApp: public wxApp
 {
 public:
     virtual bool OnInit();
     virtual int OnExit();
+    MyFrame *GetFrame() { return m_frame; };
+
+protected:
+    MyFrame        *m_frame;
 };
 
 // Define a new frame
@@ -24,31 +45,61 @@ public:
     MyFrame(wxFrame *frame, const wxString& title);
 
     void OnExit(wxCommandEvent& event);
+    void OnClose(wxCloseEvent& event);
+    void EnableControls();
+    void Disconnect();
+
+protected:
+    wxButton* GetStart()  { return (wxButton*) FindWindow( ID_START ); }
+    wxChoice* GetServername()  { return (wxChoice*) FindWindow( ID_SERVERNAME ); }
+    wxChoice* GetHostname()  { return (wxChoice*) FindWindow( ID_HOSTNAME ); }
+    wxChoice* GetTopic()  { return (wxChoice*) FindWindow( ID_TOPIC ); }
+    wxButton* GetDisconnect()  { return (wxButton*) FindWindow( ID_DISCONNECT ); }
+    wxButton* GetStartAdvise()  { return (wxButton*) FindWindow( ID_STARTADVISE ); }
+    wxButton* GetStopAdvise()  { return (wxButton*) FindWindow( ID_STOPADVISE ); }
+    wxButton* GetRequest()  { return (wxButton*) FindWindow( ID_REQUEST ); }
+    wxButton* GetPoke()  { return (wxButton*) FindWindow( ID_POKE ); }
+    wxButton* GetExecute()  { return (wxButton*) FindWindow( ID_EXECUTE ); }
+    wxTextCtrl* GetLog()  { return (wxTextCtrl*) FindWindow( ID_LOG ); }
+
+    MyClient         *m_client;
+
+    void OnStart( wxCommandEvent &event );
+    void OnServername( wxCommandEvent &event );
+    void OnHostname( wxCommandEvent &event );
+    void OnTopic( wxCommandEvent &event );
+    void OnDisconnect( wxCommandEvent &event );
+    void OnStartAdvise( wxCommandEvent &event );
+    void OnStopAdvise( wxCommandEvent &event );
     void OnExecute(wxCommandEvent& event);
     void OnPoke(wxCommandEvent& event);
     void OnRequest(wxCommandEvent& event);
 
-private:
-    wxPanel *panel;
-
+protected:
     DECLARE_EVENT_TABLE()
 };
 
-class MyConnection: public wxConnection
+class MyConnection : public MyConnectionBase
 {
 public:
-    bool OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format);
-    bool OnDisconnect();
+    virtual bool DoExecute(const void *data, size_t size, wxIPCFormat format);
+    virtual const void *Request(const wxString& item, size_t *size = NULL, wxIPCFormat format = wxIPC_TEXT);
+    virtual bool DoPoke(const wxString& item, const void* data, size_t size, wxIPCFormat format);
+    virtual bool OnAdvise(const wxString& topic, const wxString& item, const void *data, size_t size, wxIPCFormat format);
+    virtual bool OnDisconnect();
 };
 
 class MyClient: public wxClient
 {
 public:
+    MyClient();
+    ~MyClient();
+    bool Connect(const wxString& sHost, const wxString& sService, const wxString& sTopic);
+    void Disconnect();
     wxConnectionBase *OnMakeConnection();
-};
+    bool IsConnected() { return m_connection != NULL; };
+    MyConnection *GetConnection() { return m_connection; };
 
-#define CLIENT_QUIT     wxID_EXIT
-#define CLIENT_EXECUTE  2
-#define CLIENT_REQUEST  3
-#define CLIENT_POKE     4
-#define CLIENT_LISTBOX  200
+protected:
+    MyConnection     *m_connection;
+};