Skip to content

Commit d46f5b4

Browse files
committed
Harden native Bitcoin TraderModule C implementation
1 parent 253e6f5 commit d46f5b4

1 file changed

Lines changed: 77 additions & 40 deletions

File tree

linux/c/bitcoin/module/TraderModule.c

Lines changed: 77 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,143 @@
1-
/* Auto-generated C implementation stub for source/bitcoin/module/TraderModule.java */
1+
/*
2+
* TraderModule.c — native Bitcoin module boundary.
3+
*
4+
* This file intentionally does not duplicate Java-side trading logic. Native
5+
* entry points are limited to safe lifecycle/message boundaries until their
6+
* semantics can be implemented and tested independently. In particular,
7+
* wallet deletion and transaction broadcasting remain disabled here.
8+
*/
29
#include <stdio.h>
310
#include <stdlib.h>
411
#include <string.h>
512
#include "TraderModule.h"
613

714
struct TraderModule {
8-
/* TODO: fields translated from Java class */
9-
int _dummy;
15+
int initialized;
1016
};
1117

18+
static void unsupported(const char* operation)
19+
{
20+
fprintf(stderr, "[TraderModule] %s is not implemented in the native C layer.\n", operation);
21+
}
22+
1223
TraderModule* TraderModule_new(void)
1324
{
14-
TraderModule* self = malloc(sizeof(TraderModule));
15-
if(!self) return NULL;
16-
self->_dummy = 0;
25+
TraderModule* self = calloc(1, sizeof(*self));
26+
if (!self) return NULL;
27+
self->initialized = 1;
1728
return self;
1829
}
1930

2031
void TraderModule_free(TraderModule* self)
2132
{
22-
if(!self) return;
2333
free(self);
2434
}
2535

2636
void* TraderModule_MessageOrderer(TraderModule* self, void* arg)
2737
{
28-
// TODO: implement translated logic from Java
29-
return (void*)0;
38+
(void)self;
39+
(void)arg;
40+
unsupported("MessageOrderer");
41+
return NULL;
3042
}
3143

3244
void* TraderModule_BitcoinAsiaAndTokyoDate(TraderModule* self)
3345
{
34-
// TODO: implement translated logic from Java
35-
return (void*)0;
46+
(void)self;
47+
unsupported("BitcoinAsiaAndTokyoDate");
48+
return NULL;
3649
}
3750

3851
void* TraderModule_BitcoinAmericaAndNewYorkDate(TraderModule* self)
3952
{
40-
// TODO: implement translated logic from Java
41-
return (void*)0;
53+
(void)self;
54+
unsupported("BitcoinAmericaAndNewYorkDate");
55+
return NULL;
4256
}
4357

44-
void TraderModule_send_message(TraderModule* self, void* buffer)
58+
void TraderModule_send_message_buf(TraderModule* self, const void* buffer, size_t length)
4559
{
46-
// TODO: implement translated logic from Java
60+
(void)self;
61+
if (!buffer || length == 0) return;
62+
fwrite(buffer, 1, length, stdout);
63+
fputc('\n', stdout);
4764
}
4865

49-
void TraderModule_send_message(TraderModule* self, char* message)
66+
void TraderModule_send_message_str(TraderModule* self, const char* message)
5067
{
51-
// TODO: implement translated logic from Java
68+
(void)self;
69+
if (!message) return;
70+
fprintf(stdout, "[TraderModule] message: %s\n", message);
5271
}
5372

54-
void TraderModule_start_server_instance(TraderModule* self, void* url)
73+
void TraderModule_start_server_instance(TraderModule* self, const char* url)
5574
{
56-
// TODO: implement translated logic from Java
75+
(void)self;
76+
(void)url;
77+
unsupported("start_server_instance");
5778
}
5879

59-
void TraderModule_load_wallet(TraderModule* self, void* url)
80+
void TraderModule_load_wallet(TraderModule* self, const char* url)
6081
{
61-
// TODO: implement translated logic from Java
82+
(void)self;
83+
(void)url;
84+
unsupported("load_wallet; use BitcoinBase's authenticated Core boundary");
6285
}
6386

64-
char* TraderModule_get_wallet_name(TraderModule* self, void* url)
87+
char* TraderModule_get_wallet_name(TraderModule* self, const char* url)
6588
{
66-
// TODO: implement translated logic from Java
67-
return (char*)0;
89+
(void)self;
90+
(void)url;
91+
unsupported("get_wallet_name; use BitcoinBase's authenticated Core boundary");
92+
return NULL;
6893
}
6994

70-
void* TraderModule_BufferedReader(TraderModule* self, void* InputStreamReader_process_getInputStream_)
95+
void* TraderModule_BufferedReader(TraderModule* self, void* input_stream)
7196
{
72-
// TODO: implement translated logic from Java
73-
return (void*)0;
97+
(void)self;
98+
(void)input_stream;
99+
unsupported("BufferedReader");
100+
return NULL;
74101
}
75102

76103
void* TraderModule_StringBuilder(TraderModule* self)
77104
{
78-
// TODO: implement translated logic from Java
79-
return (void*)0;
105+
(void)self;
106+
unsupported("StringBuilder");
107+
return NULL;
80108
}
81109

82-
void TraderModule_delete_wallet(TraderModule* self, void* url)
110+
void TraderModule_delete_wallet(TraderModule* self, const char* url)
83111
{
84-
// TODO: implement translated logic from Java
112+
(void)self;
113+
(void)url;
114+
fprintf(stderr, "[TraderModule] delete_wallet is disabled.\n");
85115
}
86116

87-
void TraderModule_unload_wallet(TraderModule* self, void* url)
117+
void TraderModule_unload_wallet(TraderModule* self, const char* url)
88118
{
89-
// TODO: implement translated logic from Java
119+
(void)self;
120+
(void)url;
121+
unsupported("unload_wallet; use BitcoinBase's authenticated Core boundary");
90122
}
91123

92-
void TraderModule_rename_wallet(TraderModule* self, void* url)
124+
void TraderModule_rename_wallet(TraderModule* self, const char* url)
93125
{
94-
// TODO: implement translated logic from Java
126+
(void)self;
127+
(void)url;
128+
unsupported("rename_wallet; Bitcoin Core has no native rename RPC");
95129
}
96130

97-
void TraderModule_add_new_wallet(TraderModule* self, void* url)
131+
void TraderModule_add_new_wallet(TraderModule* self, const char* url)
98132
{
99-
// TODO: implement translated logic from Java
133+
(void)self;
134+
(void)url;
135+
unsupported("add_new_wallet; use BitcoinBase's authenticated Core boundary");
100136
}
101137

102-
void TraderModule_send_local_wallet_to_remote_wallet(TraderModule* self, void* url)
138+
void TraderModule_send_local_wallet_to_remote_wallet(TraderModule* self, const char* url)
103139
{
104-
// TODO: implement translated logic from Java
140+
(void)self;
141+
(void)url;
142+
fprintf(stderr, "[TraderModule] transaction broadcasting is disabled in the native module.\n");
105143
}
106-

0 commit comments

Comments
 (0)