2013-02-14 17:59:12 +04:00
|
|
|
/*
|
|
|
|
RDP Session object
|
|
|
|
|
2013-12-04 14:37:57 +04:00
|
|
|
Copyright 2013 Thincast Technologies GmbH, Authors: Martin Fleisz, Dorian Johnson
|
2013-02-14 17:59:12 +04:00
|
|
|
|
|
|
|
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
|
|
If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#import <Foundation/Foundation.h>
|
2013-03-29 17:28:27 +04:00
|
|
|
#import <UIKit/UIKit.h>
|
2013-02-14 17:59:12 +04:00
|
|
|
|
|
|
|
#include <freerdp/freerdp.h>
|
|
|
|
|
|
|
|
// forward declaration
|
|
|
|
@class RDPSession;
|
|
|
|
@class ComputerBookmark;
|
|
|
|
@class ConnectionParams;
|
|
|
|
|
|
|
|
// notification handler for session disconnect
|
|
|
|
extern NSString* TSXSessionDidDisconnectNotification;
|
|
|
|
extern NSString* TSXSessionDidFailToConnectNotification;
|
|
|
|
|
|
|
|
// protocol for session notifications
|
|
|
|
@protocol RDPSessionDelegate <NSObject>
|
|
|
|
@optional
|
|
|
|
- (void)session:(RDPSession*)session didFailToConnect:(int)reason;
|
|
|
|
- (void)sessionWillConnect:(RDPSession*)session;
|
|
|
|
- (void)sessionDidConnect:(RDPSession*)session;
|
|
|
|
- (void)sessionWillDisconnect:(RDPSession*)session;
|
|
|
|
- (void)sessionDidDisconnect:(RDPSession*)session;
|
|
|
|
- (void)sessionBitmapContextWillChange:(RDPSession*)session;
|
|
|
|
- (void)sessionBitmapContextDidChange:(RDPSession*)session;
|
|
|
|
- (void)session:(RDPSession*)session needsRedrawInRect:(CGRect)rect;
|
|
|
|
- (CGSize)sizeForFitScreenForSession:(RDPSession*)session;
|
|
|
|
|
|
|
|
- (void)session:(RDPSession*)session requestsAuthenticationWithParams:(NSMutableDictionary*)params;
|
|
|
|
- (void)session:(RDPSession*)session verifyCertificateWithParams:(NSMutableDictionary*)params;
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
// rdp session
|
|
|
|
@interface RDPSession : NSObject
|
|
|
|
{
|
|
|
|
@private
|
|
|
|
freerdp* _freerdp;
|
|
|
|
|
|
|
|
ComputerBookmark* _bookmark;
|
|
|
|
|
|
|
|
ConnectionParams* _params;
|
|
|
|
|
|
|
|
NSObject<RDPSessionDelegate>* _delegate;
|
|
|
|
|
|
|
|
NSCondition* _ui_request_completed;
|
|
|
|
|
|
|
|
NSString* _name;
|
|
|
|
|
|
|
|
// flag if the session is suspended
|
|
|
|
BOOL _suspended;
|
|
|
|
|
|
|
|
// flag that specifies whether the RDP toolbar is visible
|
|
|
|
BOOL _toolbar_visible;
|
|
|
|
}
|
|
|
|
|
|
|
|
@property (readonly) ConnectionParams* params;
|
|
|
|
@property (readonly) ComputerBookmark* bookmark;
|
|
|
|
@property (assign) id <RDPSessionDelegate> delegate;
|
|
|
|
@property (assign) BOOL toolbarVisible;
|
|
|
|
@property (readonly) CGContextRef bitmapContext;
|
|
|
|
@property (readonly) NSCondition* uiRequestCompleted;
|
|
|
|
|
|
|
|
|
|
|
|
// initialize a new session with the given bookmark
|
|
|
|
- (id)initWithBookmark:(ComputerBookmark*)bookmark;
|
|
|
|
|
|
|
|
#pragma mark - session control functions
|
|
|
|
|
|
|
|
// connect the session
|
|
|
|
-(void)connect;
|
|
|
|
|
|
|
|
// disconnect session
|
|
|
|
-(void)disconnect;
|
|
|
|
|
|
|
|
// suspends the session
|
|
|
|
-(void)suspend;
|
|
|
|
|
|
|
|
// resumes a previously suspended session
|
|
|
|
-(void)resume;
|
|
|
|
|
|
|
|
// returns YES if the session is started
|
|
|
|
-(BOOL)isSuspended;
|
|
|
|
|
|
|
|
// send input event to the server
|
|
|
|
-(void)sendInputEvent:(NSDictionary*)event;
|
|
|
|
|
|
|
|
// session needs a refresh of its view
|
|
|
|
- (void)setNeedsDisplayInRectAsValue:(NSValue*)rect_value;
|
|
|
|
|
|
|
|
// get a small session screenshot
|
|
|
|
- (UIImage*)getScreenshotWithSize:(CGSize)size;
|
|
|
|
|
|
|
|
// returns the session's current paramters
|
|
|
|
- (rdpSettings*)getSessionParams;
|
|
|
|
|
|
|
|
// returns the session's name (usually the label of the bookmark the session was created with)
|
|
|
|
- (NSString*)sessionName;
|
|
|
|
|
|
|
|
@end
|