+#define _Noreturn
+
namespace net;
#if defined(__WIN32__)
#define String _String
#include <winsock.h>
#undef String
-static WSADATA wsaData;
#elif defined(__unix__) || defined(__APPLE__)
import "network"
import "List"
+#if !defined(__EMSCRIPTEN__)
+
// SERVER
static enum DCOMPacketType
int callID = nextCallID++;
DCOMServerSocket socket = serverSocket;
DCOMServerSocket processingSocket;
- unsigned int size = (uint)&((CallVirtualMethodPacket)0).args + argsBuffer.size; // sizeof(class CallVirtualMethodPacket) + virtualsBuffer.size - 1;
+ unsigned int size = (uint)(uintptr)&((CallVirtualMethodPacket)0).args + argsBuffer.size; // sizeof(class CallVirtualMethodPacket) + virtualsBuffer.size - 1;
CallVirtualMethodPacket packet = (CallVirtualMethodPacket)new0 byte[size];
VirtualCallAck ack = null;
{
if(!serverSocket || !serverSocket.connected || !serverSocket.thread)
break;
- if(ack = VirtualCallAcknowledged(methodID, id, callID))
+ if((ack = VirtualCallAcknowledged(methodID, id, callID)))
break;
guiApp.Unlock();
if(!hasReturnValue)
{
- size = (uint)&((MethodReturnedPacket)0).args;
+ size = (uint)(uintptr)&((MethodReturnedPacket)0).args;
packet = (MethodReturnedPacket)new0 byte[size];
packet.type = (DCOMPacketType)htoled((DCOMPacketType)dcom_MethodReturned);
packet.size = size;
if(hasReturnValue)
{
- size = (uint)&((MethodReturnedPacket)0).args + buffer.size; // sizeof(class MethodReturnedPacket) + buffer.size - 1;
+ size = (uint)(uintptr)&((MethodReturnedPacket)0).args + buffer.size; // sizeof(class MethodReturnedPacket) + buffer.size - 1;
packet = (MethodReturnedPacket)new0 byte[size];
packet.type = (DCOMPacketType)htoled((DCOMPacketType)dcom_MethodReturned);
packet.size = size;
void OnDisconnect(int code)
{
- int c;
guiApp.Lock();
thread.connected = false;
guiApp.Unlock();
public bool Stop()
{
bool result = true;
- DCOMServerSocket socket;
thread.connected = false;
result = Service::Stop();
if(thread.started && GetCurrentThreadID() != (int64)thread.id)
socket = this, connected = true;
};
- bool Connect(char * server, int port)
+ bool Connect(const char * server, int port)
{
bool result = false;
if(Socket::Connect(server, port))
case dcom_CallVirtualMethod:
{
CallVirtualMethodPacket callMethod = (CallVirtualMethodPacket)p;
- VirtualMethodReturnedPacket packet;
- unsigned int size = (uint)&((VirtualMethodReturnedPacket)0).args; // sizeof(class VirtualMethodReturnedPacket);
+ VirtualMethodReturnedPacket packet = null;
+ unsigned int size = (uint)(uintptr)&((VirtualMethodReturnedPacket)0).args; // sizeof(class VirtualMethodReturnedPacket);
SerialBuffer buffer { };
bool hasReturnValue = callMethod.hasReturnValue;
int methodID = callMethod.methodID;
{
if(thread)
thread.connected = false;
- answered = 2;
+ answered = true; //2;
}
dllexport bool CallMethod(unsigned int methodID)
{
+ bool result = false;
if(this && connected)
{
- bool result;
CallAck ack = null;
int callID = nextCallID++;
- unsigned int size = (uint)&((CallMethodPacket)0).args + __ecereBuffer.size; // sizeof(class CallMethodPacket) + __ecereBuffer.size - 1;
+ unsigned int size = (uint)(uintptr)&((CallMethodPacket)0).args + __ecereBuffer.size; // sizeof(class CallMethodPacket) + __ecereBuffer.size - 1;
CallMethodPacket packet = (CallMethodPacket)new0 byte[size];
packet.type = (DCOMPacketType)htoled((DCOMPacketType)dcom_CallMethod);
packet.size = size;
{
if(!thread || !connected)
break;
- if(ack = CallAcknowledged(methodID, objectID, callID))
+ if((ack = CallAcknowledged(methodID, objectID, callID)))
break;
guiApp.Unlock();
delete ack;
result = true;
}
- return result;
}
- return false;
+ return result;
}
~DCOMClientObject()
sendingOut = false;
}
}
+
+#endif // !defined(__EMSCRIPTEN__)