Changeset 64:29a745311929 in xplra
- Timestamp:
- 04/07/13 06:25:41 (12 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/client/python/xplra.py
r57 r64 110 110 #------------------------------------------------------------------------------- 111 111 112 if os.name=="nt": 113 import win32file 114 import io 115 116 class Win32NamedPipe(io.RawIOBase): 117 """A stream object to represent a Win32 named pipe.""" 118 def __init__(self, name): 119 """Construct the pipe with the given name.""" 120 self._handle = win32file.CreateFile(name, 121 win32file.GENERIC_READ | 122 win32file.GENERIC_WRITE, 123 0, None, 124 win32file.OPEN_EXISTING, 0, None) 125 126 def close(self): 127 """Close the pipe, if not closed already.""" 128 if self._handle is not None: 129 win32file.CloseHandle(self._handle) 130 self._handle = None 131 132 @property 133 def closed(self): 134 """Determine if the pipe is closed or not.""" 135 return self._handle is None 136 137 def fileno(self): 138 """Get the file number, which is impossible.""" 139 raise IOError("Win32NamedPipe.fileno: not supported") 140 141 def flush(self): 142 """Flush the stream.""" 143 pass 144 145 def isatty(self): 146 """Determine if the stream is a terminal, which it is not.""" 147 return False 148 149 def read(self, n = -1): 150 """Read at most the given number of bytes from the stream.""" 151 if n==-1: 152 return self.readall() 153 else: 154 (error, data) = win32file.ReadFile(self._handle, n) 155 return data 156 157 def readable(self): 158 """Determine if the stream is readable, which it is.""" 159 return self._handle is not None 160 161 def readall(self): 162 """Read all bytes from the stream, which is not supported.""" 163 raise IOError("Win32NamedPipe.readall: not supported") 164 165 def readinto(self, buffer): 166 """Read into the given buffer.""" 167 (error, data) = win32file.ReadFile(self._handle, len(buffer)) 168 length = len(data) 169 buffer[:length] = data 170 return length 171 172 def readline(self, limit = -1): 173 """Read a line, which is currently not supported.""" 174 raise IOError("Win32NamedPipe.readline: not supported") 175 176 def readlines(self, hint = -1): 177 """Read lines, which is currently not supported.""" 178 raise IOError("Win32NamedPipe.readlines: not supported") 179 180 def seek(self, offset, whence = io.SEEK_SET): 181 """Seek in the stream, which is not supported.""" 182 raise IOError("Win32NamedPipe.seek: not supported") 183 184 def seekable(self): 185 """Determine if the stream is seekable, which it is not.""" 186 return False 187 188 def tell(self): 189 """Get the current position, which is not supported.""" 190 raise IOError("Win32NamedPipe.tell: not supported") 191 192 def truncate(self, size = None): 193 """Truncate the stream, which is not supported.""" 194 raise IOError("Win32NamedPipe.truncate: not supported") 195 196 def writable(self): 197 """Determine if the stream is writable, which it is.""" 198 return self._handle is not None 199 200 def write(self, buffer): 201 """Write the given buffer into the stream.""" 202 (error, written) = win32file.WriteFile(self._handle, buffer.tobytes()) 203 return written 204 205 def writelines(self, lines): 206 """Write the given lines, which is not supported.""" 207 raise IOError("Win32NamedPipe.writelines: not supported") 208 209 #------------------------------------------------------------------------------- 210 112 211 class XPlane(object): 113 212 """The main class representing the connection to X-Plane.""" … … 141 240 142 241 if os.name=="nt": 143 self._stream = open(r'\\.\pipe\\xplra', "b") 242 pipe = Win32NamedPipe(r'\\.\pipe\\xplra') 243 self._stream = io.BufferedRWPair(pipe, pipe) 144 244 else: 145 245 import socket
Note:
See TracChangeset
for help on using the changeset viewer.