Skip to content

Commit

Permalink
rewrite
Browse files Browse the repository at this point in the history
  • Loading branch information
Niap committed Jun 1, 2020
1 parent 905cec5 commit 47bc5a0
Show file tree
Hide file tree
Showing 23 changed files with 277 additions and 300 deletions.
13 changes: 7 additions & 6 deletions binding.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
"rdp.cc",
"bridge.cc",
"generator.cc",
"channel.cc",
"rail.cc",
"clipboard.cc",
"context.cc",
"pointer.cc",
"node-freerdp2.cc"
"node-freerdp2.cc",
"channels/channel.cc",
"channels/rail.cc",
"channels/clipboard.cc",
"channels/pointer.cc",
],
"libraries": [
"-lfreerdp-client2",
Expand All @@ -24,7 +24,7 @@
"conditions":[
["OS=='win'", {
"library_dirs":[
"libs/win64/libs"
"libs/win64/libs"
],
"include_dirs" : [
"<!(node -e \"require('nan')\")",
Expand All @@ -39,6 +39,7 @@
"libs/win64/dll/winpr2.dll",
"libs/win64/dll/libcrypto-1_1-x64.dll",
"libs/win64/dll/libssl-1_1-x64.dll",
"libs/win64/dll/libusb-1.0.dll",
]
}
]}]
Expand Down
1 change: 0 additions & 1 deletion bridge.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

#include "bridge.h"
#include "rdp.h"
#include "clipboard.h"

using v8::Function;
using v8::Local;
Expand Down
2 changes: 1 addition & 1 deletion channel.cc → channels/channel.cc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "context.h"
#include "../context.h"
#include "rail.h"
#include "clipboard.h"

Expand Down
File renamed without changes.
8 changes: 4 additions & 4 deletions clipboard.cc → channels/clipboard.cc
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,12 @@ BOOL node_cliprdr_init(nodeContext* swfc, CliprdrClientContext* cliprdr) {
clipboard->length = (wcslen(defaultClip)+1)*2;
clipboard->buffer = (byte *)defaultClip;
swfc->clipboard = clipboard;
swfc->clipboard_context = cliprdr;
swfc->clipboardContext = cliprdr;
cliprdr->custom = swfc;

cliprdr->MonitorReady = node_cliprdr_monitor_ready;
cliprdr->ServerFormatDataRequest = node_cliprdr_server_format_data_request;
cliprdr->ServerFormatDataResponse = node_cliprdr_server_format_data_response;
cliprdr->MonitorReady = reinterpret_cast<pcCliprdrMonitorReady>(node_cliprdr_monitor_ready);
cliprdr->ServerFormatDataRequest = reinterpret_cast<pcCliprdrServerFormatDataRequest>(node_cliprdr_server_format_data_request);
cliprdr->ServerFormatDataResponse = reinterpret_cast<pcCliprdrServerFormatDataResponse>(node_cliprdr_server_format_data_response);

return TRUE;
}
Expand Down
2 changes: 1 addition & 1 deletion clipboard.h → channels/clipboard.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "context.h"
#include "../context.h"

BOOL node_cliprdr_init(nodeContext* swfc, CliprdrClientContext* cliprdr);
void node_cliprdr_uninit(nodeContext* swfc, CliprdrClientContext* cliprdr);
Expand Down
File renamed without changes.
5 changes: 1 addition & 4 deletions pointer.h → channels/pointer.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,2 @@

#include "context.h"


#include "../context.h"
BOOL node_register_pointer(rdpGraphics* graphics);
2 changes: 1 addition & 1 deletion rail.cc → channels/rail.cc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "context.h"
#include "rail.h"

static UINT node_rail_server_handshake(RailClientContext* context,
RAIL_HANDSHAKE_ORDER* handshake)
Expand Down
2 changes: 1 addition & 1 deletion rail.h → channels/rail.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "context.h"
#include "../context.h"

void node_rail_init(nodeContext* nctx, RailClientContext* rail);
void node_rail_uninit(nodeContext* nctx, RailClientContext* rail);
25 changes: 9 additions & 16 deletions context.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#ifndef NODE_FREERDP_CONTEXT_H
#define NODE_FREERDP_CONTEXT_H

#pragma comment(lib, "DbgHelp.lib")

#include <winsock2.h>
#include <Windows.h>
Expand Down Expand Up @@ -37,6 +38,11 @@ using Nan::New;
using Nan::Null;


typedef struct _SessionData
{
freerdp* instance;
bool stopping;
}SessionData;
typedef struct _NodePointer
{
rdpPointer pointer;
Expand All @@ -50,28 +56,15 @@ typedef struct _NodeClipboard {
int length;
} NodeClipboard;


struct node_info
{
void* data;
};
typedef struct node_info nodeInfo;

struct node_context
{
rdpContext context;
DEFINE_RDP_CLIENT_COMMON();

nodeInfo* nodei;
DEFINE_RDP_CLIENT_COMMON();
SessionData * session;
GeneratorContext *generatorContext;

//ANDROID_EVENT_QUEUE* event_queue;
//pthread_t thread;
//BOOL is_connected;

RailClientContext* rail;
NodeClipboard * clipboard;
CliprdrClientContext* clipboard_context;
CliprdrClientContext* clipboardContext;
bool keyframe;
};
typedef struct node_context nodeContext;
Expand Down
37 changes: 37 additions & 0 deletions generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
using Nan::Callback;
using Nan::HandleScope;
using Nan::New;
using Nan::Null;
using v8::Array;
using v8::Local;
using v8::String;
using v8::Value;
using v8::Number;
using v8::Object;

struct GeneratorBaton {
uv_work_t request; // libuv
Expand Down Expand Up @@ -50,3 +53,37 @@ void generator_emit(GeneratorContext *generator, const GeneratorType *type, void

uv_queue_work(uv_default_loop(), &baton->request, DelayAsync, DelayAsyncAfter);
}

Local<Array> connect_args_parser(void *generic) {
connect_args *args = static_cast<connect_args *>(generic);
Local<Array> argv = New<Array>();
free(args);
return argv;
}
Local<Array> close_args_parser(void *generic) {
close_args *args = static_cast<close_args *>(generic);
Local<Array> argv = New<Array>();
Local<Object> obj = New<Object>();
obj->Set(New<String>("msg").ToLocalChecked(), New<String>(args->msg).ToLocalChecked());
argv->Set(0, obj);
free(args);
return argv;
}

Local<Array> draw_args_parser(void *generic) {
draw_args *args = static_cast<draw_args *>(generic);
Local<Object> obj = New<Object>();
obj->Set(New<String>("x").ToLocalChecked(), New<Number>(args->x));
obj->Set(New<String>("y").ToLocalChecked(), New<Number>(args->y));
obj->Set(New<String>("w").ToLocalChecked(), New<Number>(args->w));
obj->Set(New<String>("h").ToLocalChecked(), New<Number>(args->h));
obj->Set(New<String>("bpp").ToLocalChecked(), New<Number>(args->bpp));
int size = args->w * args->h * args->bpp;
Nan::MaybeLocal<v8::Object> buffer = Nan::CopyBuffer((const char *)args->buffer, size);
obj->Set(New<String>("buffer").ToLocalChecked(), buffer.ToLocalChecked());
Local<Array> argv = New<Array>();
argv->Set(0, obj);
delete[] args->buffer;
delete args;
return argv;
}
22 changes: 22 additions & 0 deletions generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,26 @@ struct GeneratorType {

void generator_emit(GeneratorContext *generator, const GeneratorType *type, void *data);

struct connect_args {};
Local<Array> connect_args_parser(void *generic);
const struct GeneratorType CONNECT_GENERATOR_TYPE = {"connect",connect_args_parser};

struct close_args {
char * msg;
};
Local<Array> close_args_parser(void *generic);
const struct GeneratorType CLOSE_GENERATOR_TYPE = {"close",close_args_parser };

struct draw_args {
int x;
int y;
int w;
int h;
int bpp;
BYTE* buffer;
};
Local<Array> draw_args_parser(void *generic) ;
const struct GeneratorType DRAW_GENERATOR_TYPE = {"bitmap",draw_args_parser};


#endif // NODE_ASYNC_LEARN_GENERATOR_H
Binary file modified libs/win64/dll/freerdp-client2.dll
Binary file not shown.
Binary file modified libs/win64/dll/freerdp2.dll
Binary file not shown.
Binary file added libs/win64/dll/libusb-1.0.dll
Binary file not shown.
Binary file modified libs/win64/dll/winpr2.dll
Binary file not shown.
Binary file modified libs/win64/libs/cliprdr-client.lib
Binary file not shown.
Binary file modified libs/win64/libs/freerdp-client2.lib
Binary file not shown.
Binary file modified libs/win64/libs/freerdp2.lib
Binary file not shown.
Binary file modified libs/win64/libs/winpr2.lib
Binary file not shown.
Loading

0 comments on commit 47bc5a0

Please sign in to comment.