File: ipcbase.h

package info (click to toggle)
wxwindows2.2 2.2.9.2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 41,560 kB
  • ctags: 74,577
  • sloc: cpp: 450,408; ansic: 69,935; python: 30,297; sh: 2,646; makefile: 2,459; lex: 192; yacc: 129; xml: 95; pascal: 67
file content (146 lines) | stat: -rw-r--r-- 5,129 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/////////////////////////////////////////////////////////////////////////////
// Name:        ipcbase.h
// Purpose:     Base classes for IPC
// Author:      Julian Smart
// Modified by:
// Created:     4/1/98
// RCS-ID:      $Id: ipcbase.h,v 1.11.2.1 2000/03/21 20:34:06 GRG Exp $
// Copyright:   (c) Julian Smart and Markus Holzem
// Licence:   	wxWindows license
/////////////////////////////////////////////////////////////////////////////

#ifndef _WX_IPCBASEH__
#define _WX_IPCBASEH__

#ifdef __GNUG__
#pragma interface "ipcbase.h"
#endif

#include "wx/defs.h"
#include "wx/object.h"
#include "wx/string.h"

enum wxIPCFormat
{
  wxIPC_INVALID =          0,
  wxIPC_TEXT =             1,  /* CF_TEXT */
  wxIPC_BITMAP =           2,  /* CF_BITMAP */
  wxIPC_METAFILE =         3,  /* CF_METAFILEPICT */
  wxIPC_SYLK =             4,
  wxIPC_DIF =              5,
  wxIPC_TIFF =             6,
  wxIPC_OEMTEXT =          7,  /* CF_OEMTEXT */
  wxIPC_DIB =              8,  /* CF_DIB */
  wxIPC_PALETTE =          9,
  wxIPC_PENDATA =          10,
  wxIPC_RIFF =             11,
  wxIPC_WAVE =             12,
  wxIPC_UNICODETEXT =      13,
  wxIPC_ENHMETAFILE =      14,
  wxIPC_FILENAME =         15, /* CF_HDROP */
  wxIPC_LOCALE =           16,
  wxIPC_PRIVATE =          20
};

class WXDLLEXPORT wxServerBase;
class WXDLLEXPORT wxClientBase;

class WXDLLEXPORT wxConnectionBase: public wxObject
{
  DECLARE_CLASS(wxConnectionBase)

public:
  inline wxConnectionBase(void) {}
  inline ~wxConnectionBase(void) {}

  // Calls that CLIENT can make
  virtual bool Execute(const wxChar *data, int size = -1, wxIPCFormat format = wxIPC_TEXT ) = 0;
  virtual bool Execute(const wxString& str) { return Execute(str, -1, wxIPC_TEXT); }
  virtual char *Request(const wxString& item, int *size = (int *) NULL, wxIPCFormat format = wxIPC_TEXT) = 0;
  virtual bool Poke(const wxString& item, wxChar *data, int size = -1, wxIPCFormat format = wxIPC_TEXT) = 0;
  virtual bool StartAdvise(const wxString& item) = 0;
  virtual bool StopAdvise(const wxString& item) = 0;

  // Calls that SERVER can make
  virtual bool Advise(const wxString& item, wxChar *data, int size = -1, wxIPCFormat format = wxIPC_TEXT) = 0;

  // Calls that both can make
  virtual bool Disconnect(void) = 0;

  // Callbacks to SERVER - override at will
  virtual bool OnExecute     ( const wxString& WXUNUSED(topic),
                               char *WXUNUSED(data),
                               int WXUNUSED(size),
                               wxIPCFormat WXUNUSED(format) )
                             { return FALSE; };

  virtual char *OnRequest    ( const wxString& WXUNUSED(topic),
                               const wxString& WXUNUSED(item),
                               int *WXUNUSED(size),
                               wxIPCFormat WXUNUSED(format) )
                             { return (char *) NULL; };

  virtual bool OnPoke        ( const wxString& WXUNUSED(topic),
                               const wxString& WXUNUSED(item),
                               wxChar *WXUNUSED(data),
                               int WXUNUSED(size),
                               wxIPCFormat WXUNUSED(format) )
                             { return FALSE; };

  virtual bool OnStartAdvise ( const wxString& WXUNUSED(topic),
                               const wxString& WXUNUSED(item) )
                             { return FALSE; };

  virtual bool OnStopAdvise  ( const wxString& WXUNUSED(topic),
                               const wxString& WXUNUSED(item) )
                             { return FALSE; };

  // Callbacks to CLIENT - override at will
  virtual bool OnAdvise      ( const wxString& WXUNUSED(topic),
                               const wxString& WXUNUSED(item),
                               char *WXUNUSED(data),
                               int WXUNUSED(size),
                               wxIPCFormat WXUNUSED(format) )
                             { return FALSE; };

  // Callbacks to BOTH - override at will
  // Default behaviour is to delete connection and return TRUE
  virtual bool OnDisconnect(void) = 0;
};

class WXDLLEXPORT wxServerBase: public wxObject
{
  DECLARE_CLASS(wxServerBase)

public:
  inline wxServerBase(void) {}
  inline ~wxServerBase(void) {};

  // Returns FALSE on error (e.g. port number is already in use)
  virtual bool Create(const wxString& serverName) = 0;

  // Callbacks to SERVER - override at will
  virtual wxConnectionBase *OnAcceptConnection(const wxString& topic) = 0;
};

class WXDLLEXPORT wxClientBase: public wxObject
{
  DECLARE_CLASS(wxClientBase)

public:
  inline wxClientBase(void) {};
  inline ~wxClientBase(void) {};

  virtual bool ValidHost(const wxString& host) = 0;

  // Call this to make a connection. Returns NULL if cannot.
  virtual wxConnectionBase *MakeConnection(const wxString& host,
                                           const wxString& server,
                                           const wxString& topic) = 0;

  // Callbacks to CLIENT - override at will
  virtual wxConnectionBase *OnMakeConnection(void) = 0;
};

#endif
    // _WX_IPCBASEH__