[haiku-commits] r36154 - in haiku/trunk: headers/private/app src/kits/app src/servers/app

  • From: ithamar.adema@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 11 Apr 2010 16:26:19 +0200 (CEST)

Author: ithamar
Date: 2010-04-11 16:26:19 +0200 (Sun, 11 Apr 2010)
New Revision: 36154
Changeset: http://dev.haiku-os.org/changeset/36154/haiku

Modified:
   haiku/trunk/headers/private/app/LinkSender.h
   haiku/trunk/headers/private/app/ServerLink.h
   haiku/trunk/src/kits/app/Application.cpp
   haiku/trunk/src/servers/app/ServerApp.cpp
Log:
* Make sure LinkSender knows team ID of receiving team; this fixes the >64k 
ServerLink transfers.

Modified: haiku/trunk/headers/private/app/LinkSender.h
===================================================================
--- haiku/trunk/headers/private/app/LinkSender.h        2010-04-11 14:13:57 UTC 
(rev 36153)
+++ haiku/trunk/headers/private/app/LinkSender.h        2010-04-11 14:26:19 UTC 
(rev 36154)
@@ -24,6 +24,9 @@
                void SetPort(port_id port);
                port_id Port() const { return fPort; }
 
+               team_id TargetTeam() const;
+               void SetTargetTeam(team_id team);
+
                status_t StartMessage(int32 code, size_t minSize = 0);
                void CancelMessage(void);
                status_t EndMessage(bool needsReply = false);
@@ -56,6 +59,20 @@
                status_t fCurrentStatus;
 };
 
+
+inline team_id
+LinkSender::TargetTeam() const
+{
+       return fTargetTeam;
+}
+
+
+inline void
+LinkSender::SetTargetTeam(team_id team)
+{
+       fTargetTeam = team;
+}
+
 }      // namespace BPrivate
 
 #endif /* _LINK_SENDER_H */

Modified: haiku/trunk/headers/private/app/ServerLink.h
===================================================================
--- haiku/trunk/headers/private/app/ServerLink.h        2010-04-11 14:13:57 UTC 
(rev 36153)
+++ haiku/trunk/headers/private/app/ServerLink.h        2010-04-11 14:26:19 UTC 
(rev 36154)
@@ -43,6 +43,9 @@
                        void                            SetSenderPort(port_id 
port);
                        port_id                         SenderPort();
 
+                       void                            SetTargetTeam(team_id 
team);
+                       team_id                         TargetTeam();
+
                        status_t                        StartMessage(int32 
code, size_t minSize = 0);
                        void                            CancelMessage();
                        status_t                        EndMessage();
@@ -109,6 +112,20 @@
 }
 
 
+inline void
+ServerLink::SetTargetTeam(team_id team)
+{
+       fSender->SetTargetTeam(team);
+}
+
+
+inline team_id
+ServerLink::TargetTeam()
+{
+       return fSender->TargetTeam();
+}
+
+
 inline status_t
 ServerLink::StartMessage(int32 code, size_t minSize)
 {

Modified: haiku/trunk/src/kits/app/Application.cpp
===================================================================
--- haiku/trunk/src/kits/app/Application.cpp    2010-04-11 14:13:57 UTC (rev 
36153)
+++ haiku/trunk/src/kits/app/Application.cpp    2010-04-11 14:26:19 UTC (rev 
36154)
@@ -1250,6 +1250,7 @@
        fServerLink->AttachString(fAppName);
 
        area_id sharedReadOnlyArea;
+       team_id serverTeam;
        port_id serverPort;
 
        int32 code;
@@ -1259,12 +1260,13 @@
                // directly; we now talk to our server alter ego only.
                fServerLink->Read<port_id>(&serverPort);
                fServerLink->Read<area_id>(&sharedReadOnlyArea);
+               fServerLink->Read<team_id>(&serverTeam);
        } else {
                fServerLink->SetSenderPort(-1);
                debugger("BApplication: couldn't obtain new app_server comm 
port");
                return B_ERROR;
        }
-
+       fServerLink->SetTargetTeam(serverTeam);
        fServerLink->SetSenderPort(serverPort);
 
        status = _SetupServerAllocator();

Modified: haiku/trunk/src/servers/app/ServerApp.cpp
===================================================================
--- haiku/trunk/src/servers/app/ServerApp.cpp   2010-04-11 14:13:57 UTC (rev 
36153)
+++ haiku/trunk/src/servers/app/ServerApp.cpp   2010-04-11 14:26:19 UTC (rev 
36154)
@@ -116,6 +116,7 @@
 
        fLink.SetSenderPort(fClientReplyPort);
        fLink.SetReceiverPort(fMessagePort);
+       fLink.SetTargetTeam(clientTeam);
 
        // we let the application own the port, so that we get aware when it's 
gone
        if (set_port_owner(fMessagePort, clientTeam) < B_OK) {
@@ -2993,10 +2994,15 @@
 {
        // Message-dispatching loop for the ServerApp
 
+       // get our own team ID
+       thread_info threadInfo;
+       get_thread_info(fThread, &threadInfo);
+
        // First let's tell the client how to talk with us.
        fLink.StartMessage(B_OK);
        fLink.Attach<port_id>(fMessagePort);
        fLink.Attach<area_id>(fDesktop->SharedReadOnlyArea());
+       fLink.Attach<team_id>(threadInfo.team);
        fLink.Flush();
 
        BPrivate::LinkReceiver &receiver = fLink.Receiver();


Other related posts:

  • » [haiku-commits] r36154 - in haiku/trunk: headers/private/app src/kits/app src/servers/app - ithamar . adema