public void connect(UInt64 connID, string path) { ClientConnection conn = connections[connID]; //assert(f != connections.end()); //auto & conn = f->second; Debug.Assert(conn.ref_id_at_client == connID); // self-consistency BufferT buff = platform.makeBuffer(); IPublishableComposer composer = platform.makePublishableComposer(buff); PublishableStateMessageHeader mh = new PublishableStateMessageHeader(); mh.type = PublishableStateMessageHeader.MsgType.connectionRequest; mh.priority = 0; // TODO: source mh.state_type_id_or_direction = (UInt64)PublishableStateMessageHeader.ConnMsgDirection.toServer; mh.path = path; Debug.Assert(conn.ref_id_at_client == connID); mh.ref_id_at_subscriber = conn.ref_id_at_client; GMQueue.helperComposePublishableStateMessageBegin(composer, mh); GMQueue.helperComposePublishableStateMessageEnd(composer); transport.postMessage(buff); conn.connection.setRequestSent(); }
public void postMessage(UInt64 connID, BufferT msgBuff) { //auto f = connections.find(connID); //assert(f != connections.end()); //auto & conn = f->second; ServerConnection conn = connections[connID]; Debug.Assert(conn.ref_id_at_server == connID); // self-consistency BufferT buff = platform.makeBuffer(); IPublishableComposer composer = platform.makePublishableComposer(buff); PublishableStateMessageHeader mh = new PublishableStateMessageHeader(); mh.type = PublishableStateMessageHeader.MsgType.connectionMessage; mh.priority = 0; // TODO: source mh.state_type_id_or_direction = (ulong)PublishableStateMessageHeader.ConnMsgDirection.toClient; mh.ref_id_at_subscriber = conn.ref_id_at_client; mh.ref_id_at_publisher = conn.ref_id_at_server; GMQueue.helperComposePublishableStateMessageBegin(composer, mh); composer.appendRaw(msgBuff.getReadIterator()); GMQueue.helperComposePublishableStateMessageEnd(composer); //assert(transport != nullptr); transport.postMessage(buff); }
public void subscribe(StateSubscriberBase subscriber, string path) { for (int i = 0; i < subscribers.Count; ++i) if (subscribers[i].subscriber == subscriber) { BufferT buff = platform.makeBuffer(); IPublishableComposer composer = platform.makePublishableComposer(buff); PublishableStateMessageHeader mh = new PublishableStateMessageHeader(); mh.type = PublishableStateMessageHeader.MsgType.subscriptionRequest; mh.priority = 0; // TODO: source mh.state_type_id_or_direction = subscriber.stateTypeID(); mh.path = path; Debug.Assert(subscribers[i].ref_id_at_subscriber == (ulong)i); mh.ref_id_at_subscriber = subscribers[i].ref_id_at_subscriber; GMQueue.helperComposePublishableStateMessageBegin(composer, mh); GMQueue.helperComposePublishableStateMessageEnd(composer); //assert(transport != nullptr); transport.postMessage(buff); return; } Debug.Assert(false); // not found }