| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef REMOTING_IOS_BRIDGE_CLIENT_PROXY_H_ |
| #define REMOTING_IOS_BRIDGE_CLIENT_PROXY_H_ |
| |
| #import <Foundation/Foundation.h> |
| #import <UIKit/UIKit.h> |
| |
| #include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h" |
| |
| #import "remoting/ios/bridge/client_proxy_delegate_wrapper.h" |
| |
| namespace remoting { |
| class ClientInstance; |
| class ClientProxy; |
| } // namespace remoting |
| |
| // HostProxy is one channel of a bridge from the UI Application (CLIENT) and the |
| // common Chromoting protocol (HOST). HostProxy proxies message from the UI |
| // application to the host. The reverse channel, ClientProxy, is owned by the |
| // HostProxy to control deconstruction order, but is shared with the |
| // ClientInstance to perform work. |
| |
| @interface HostProxy : NSObject { |
| @private |
| // Host to Client channel |
| scoped_ptr<remoting::ClientProxy> _hostToClientChannel; |
| // Client to Host channel, must be released before |_hostToClientChannel| |
| scoped_refptr<remoting::ClientInstance> _clientToHostChannel; |
| // Connection state |
| BOOL _isConnected; |
| } |
| |
| // TRUE when a connection has been established successfully. |
| - (BOOL)isConnected; |
| |
| // Forwards credentials from CLIENT and to HOST and begins establishing a |
| // connection. |
| - (void)connectToHost:(NSString*)username |
| authToken:(NSString*)token |
| jabberId:(NSString*)jid |
| hostId:(NSString*)hostId |
| publicKey:(NSString*)hostPublicKey |
| delegate:(id<ClientProxyDelegate>)delegate; |
| |
| // Report from CLIENT with the user's PIN. |
| - (void)authenticationResponse:(NSString*)pin createPair:(BOOL)createPair; |
| |
| // CLIENT initiated disconnection |
| - (void)disconnectFromHost; |
| |
| // Report from CLIENT of mouse input |
| - (void)mouseAction:(const webrtc::DesktopVector&)position |
| wheelDelta:(const webrtc::DesktopVector&)wheelDelta |
| whichButton:(NSInteger)buttonPressed |
| buttonDown:(BOOL)buttonIsDown; |
| |
| // Report from CLIENT of keyboard input |
| - (void)keyboardAction:(NSInteger)keyCode keyDown:(BOOL)keyIsDown; |
| |
| @end |
| |
| #endif // REMOTING_IOS_BRIDGE_CLIENT_PROXY_H_ |