blob: 684f45b7737b4a90c25ddc7eb211dd074495b033 [file] [log] [blame]
=====================================================
c accepted
=====================================================
tcpxfact_session_accepted (i_sessionlistener* thisx, etch_socket* socket)
ETCH_RESXKEY_SOCKET
delivery_service = new_etch_transport_a (url, resources);
params->server_stub = HELPER.new_helper_accepted_server (etch_server_factory* p)
perf_remote_client* client = new_remote_client (0, ds, vf);
i_perf_server* iserver = p->main_new_server (p);
perf_remote_client* client = (perf_remote_client*) p->client;
perf_server_impl* newserver = new_perf_server_impl (client);
return newserver->perf_server_base;
perf_server_stub* stub = new_perf_server_stub (p);
stub->destroy = destroy_stub_object; /* private */
stub->destroyex = destroy_my_server_stub; /* public */
stub->stub_base = new_stub (implobj, stubtype, ids, qp, fp);
stubbase->ds->mbm->set_session (ds, stubbase->isessionmsg);
stubbase->impl_callbacks = etchstub_get_session_callbacks_from (implobj);
stub->stub_base->stubobj = (objmask*) newstub;
stub->stub_base->params = params;
set stub helper run procedures for each message type.
// delivery.itm is mailbox manager. its transport_control was overriden to
// tcpdelsvc_transport_control in tcpdelsvc_init().
// this in turn calls tcpds->transport->transport_control()
// delivery.transport is the mailbox manager.
delivery_service->itm->transport_control (CONTROL_START);
=====================================================
java accepted
=====================================================
TcpListener.onSessionAccepted(socket)
resources.add(socket);
DeliveryService = newTransport();
new TcpConnection();
TcpConnection implements TransportData
send(buffer);
C-NOTE: OK, etch_tcp_connection.its is i_transportdata, etch_tcpconx_transport_data does the send()
C-QUESTION: etch_tcp_connection.transport_control etc. where are they assigned? should they be same as itd?
implements Transport
TransportQuery(START, STOP, etc),
TransportControl (START, STOP, etc)
TcpConnection HOSTS SessionData as session.
NOTE: SessionData (including sessionData()), is null until set by inheritor (Packetizer).
this.session.sessionData(buffer) is invoked by this.fireData(buffer);
new Packetizer(TcpConnection(transport));
(NOTE: Packetizer.transport IS-A TransportData, but Packetizer IMPLEMENTS TransportPacket);
this.transport = TcpConnection.TransportData;
C-NOTE: HERE'S HOW:
C-NOTE: TcpConnection's TransportData interface is passed to Packetizer's ctor
C-NOTE THIS AND ALL SUBSEQUENT: it is only necessary to replace each method if we do not destroy
and replace the transport object. otherwise we would destroy existing transport object,
and simply replace that with the transport object passed in the ctor.
Packetizer.transport.transportData = TcpConnection.TransportData;
Packetizer.transport.transportControl = TcpConnection.transportControl; ETC. ETC. query and notify
Packetizer.transportPacket has new logic, and then calls Packetizer.transport.transportData().
Packetizer.transportControl, Notify, and Query, call Packetizer.transport.transportControl, Query, Notify.
Tcpconnection.setSession(this);
C-NOTE: HERE'S HOW: TcpConnection HOSTS SessionData
TcpConnection.sessionData = Packetizer.sessionData; C-NOTE: does tcpconx even have a session_data()?
TcpConnection.sessionControl = Packetizer.sessionControl; ETC. ETC. query and notify
new Messagizer(Packetizer(TransportPacket));
(NOTE: Messagizer.transport IS-A TransportPacket, but Messagizer IMPLEMENTS TransportMessage);
this.transport = Packetizer.TransportPacket
C-NOTE: HERE'S HOW:
C-NOTE: Packetizer's TransportPacket interface is passed to Messagizer's ctor
Messagizer.transport.transportPacket = Packetizer.transportPacket;
Messagizer.transport.transportControl = Packetizer.transportControl; ETC. ETC.
Packetizer.setSession(this);
C-NOTE: HERE'S HOW: Packetizer IMPLEMENTS SessionData but HOSTS SessionPacket. Messagizer IMPLEMENTS SessionPacket
Packetizer.session.sessionPacket = Messagizer.sessionPacket;
Packetizer.session.sessionControl = Messagizer.sessionControl; ETC. ETC.
new PlainMailboxManager(Messagizer(transport));
(NOTE: MailboxManager.transport IS-A TransportMessage, AND MailboxManager EXTENDS TransportMessage);
this.transport = Messagizer.TransportMessage;
C-NOTE: HERE'S HOW: C-NOTE: Messagizer's i_transportmessage is passed in MailboxManager ctor
MailboxManager.transport.TransportMessage = Messagizer.TransportMessage
MailboxManager.transport.TransportControl = Messagizer.TransportControl; ETC. ETC.
Messagizer.setSession(this);
C-NOTE: HERE'S HOW: Messagizer IMPLEMENTS SessionPacket but HOSTS SessionMessage. MailboxManager EXTENDS SessionMessage
Messagizer.session.sessionMessage = MailboxManager.sessionMessage;
Messagizer.session.sessionControl = MailboxManager.sessionControl; ETC. ETC.
new DefaultDeliveryService(MailboxManager(transport));
NOTE: DeliveryService transport IS-A MBM IS-A TransportMessage, AND DeliveryService EXTENDS TransportMessage
this.transport = MailboxManager ;
C-NOTE: HERE'S HOW:
delsvc->transport = mboxmgr->imanager; OR: THE FOLLOWING
delsvc->transport->transportMessage = mboxmgr->transportMessage; ETC ETC ETC
MailboxManager.setSession(this);
C-NOTE: HERE'S HOW: MailboxManager EXTENDS SessionMessage AND HOSTS SessionMessage. DeliveryService EXTENDS SessionMessage
MailboxManager.session.sessionMessage = delsvc->sessionMessage; ETC ETC ETC