Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(896)

Side by Side Diff: ipc/ipc_message_utils.cc

Issue 1867733002: mac: Remove POSIX shared memory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@temp50_base
Patch Set: Comments from amistry. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ipc/ipc_message_utils.h" 5 #include "ipc/ipc_message_utils.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 l->append(base::StringPrintf("FD(%d auto-close)", p.fd)); 676 l->append(base::StringPrintf("FD(%d auto-close)", p.fd));
677 } else { 677 } else {
678 l->append(base::StringPrintf("FD(%d)", p.fd)); 678 l->append(base::StringPrintf("FD(%d)", p.fd));
679 } 679 }
680 } 680 }
681 #endif // defined(OS_POSIX) 681 #endif // defined(OS_POSIX)
682 682
683 #if defined(OS_MACOSX) && !defined(OS_IOS) 683 #if defined(OS_MACOSX) && !defined(OS_IOS)
684 void ParamTraits<base::SharedMemoryHandle>::Write(base::Pickle* m, 684 void ParamTraits<base::SharedMemoryHandle>::Write(base::Pickle* m,
685 const param_type& p) { 685 const param_type& p) {
686 m->WriteInt(p.GetType()); 686 MachPortMac mach_port_mac(p.GetMemoryObject());
687 ParamTraits<MachPortMac>::Write(m, mach_port_mac);
688 size_t size = 0;
689 bool result = p.GetSize(&size);
690 DCHECK(result);
691 ParamTraits<uint32_t>::Write(m, static_cast<uint32_t>(size));
687 692
688 switch (p.GetType()) { 693 // If the caller intended to pass ownership to the IPC stack, release a
689 case base::SharedMemoryHandle::POSIX: 694 // reference.
690 ParamTraits<base::FileDescriptor>::Write(m, p.GetFileDescriptor()); 695 if (p.OwnershipPassesToIPC())
691 break; 696 p.Close();
692 case base::SharedMemoryHandle::MACH:
693 MachPortMac mach_port_mac(p.GetMemoryObject());
694 ParamTraits<MachPortMac>::Write(m, mach_port_mac);
695 size_t size = 0;
696 bool result = p.GetSize(&size);
697 DCHECK(result);
698 ParamTraits<uint32_t>::Write(m, static_cast<uint32_t>(size));
699
700 // If the caller intended to pass ownership to the IPC stack, release a
701 // reference.
702 if (p.OwnershipPassesToIPC())
703 p.Close();
704
705 break;
706 }
707 } 697 }
708 698
709 bool ParamTraits<base::SharedMemoryHandle>::Read(const base::Pickle* m, 699 bool ParamTraits<base::SharedMemoryHandle>::Read(const base::Pickle* m,
710 base::PickleIterator* iter, 700 base::PickleIterator* iter,
711 param_type* r) { 701 param_type* r) {
712 base::SharedMemoryHandle::TypeWireFormat type; 702 MachPortMac mach_port_mac;
713 if (!iter->ReadInt(&type)) 703 if (!ParamTraits<MachPortMac>::Read(m, iter, &mach_port_mac))
714 return false; 704 return false;
715 705
716 base::SharedMemoryHandle::Type shm_type = base::SharedMemoryHandle::POSIX; 706 uint32_t size;
717 switch (type) { 707 if (!ParamTraits<uint32_t>::Read(m, iter, &size))
718 case base::SharedMemoryHandle::POSIX: 708 return false;
719 case base::SharedMemoryHandle::MACH: {
720 shm_type = static_cast<base::SharedMemoryHandle::Type>(type);
721 break;
722 }
723 default: {
724 return false;
725 }
726 }
727 709
728 switch (shm_type) { 710 *r = base::SharedMemoryHandle(mach_port_mac.get_mach_port(),
729 case base::SharedMemoryHandle::POSIX: { 711 static_cast<size_t>(size),
730 base::FileDescriptor file_descriptor; 712 base::GetCurrentProcId());
731 713 return true;
732 bool success =
733 ParamTraits<base::FileDescriptor>::Read(m, iter, &file_descriptor);
734 if (!success)
735 return false;
736
737 *r = base::SharedMemoryHandle(file_descriptor.fd,
738 file_descriptor.auto_close);
739 return true;
740 }
741 case base::SharedMemoryHandle::MACH: {
742 MachPortMac mach_port_mac;
743 if (!ParamTraits<MachPortMac>::Read(m, iter, &mach_port_mac))
744 return false;
745
746 uint32_t size;
747 if (!ParamTraits<uint32_t>::Read(m, iter, &size))
748 return false;
749
750 *r = base::SharedMemoryHandle(mach_port_mac.get_mach_port(),
751 static_cast<size_t>(size),
752 base::GetCurrentProcId());
753 return true;
754 }
755 }
756 } 714 }
757 715
758 void ParamTraits<base::SharedMemoryHandle>::Log(const param_type& p, 716 void ParamTraits<base::SharedMemoryHandle>::Log(const param_type& p,
759 std::string* l) { 717 std::string* l) {
760 switch (p.GetType()) { 718 l->append("Mach port: ");
761 case base::SharedMemoryHandle::POSIX: 719 LogParam(p.GetMemoryObject(), l);
762 l->append("POSIX Fd: ");
763 ParamTraits<base::FileDescriptor>::Log(p.GetFileDescriptor(), l);
764 break;
765 case base::SharedMemoryHandle::MACH:
766 l->append("Mach port: ");
767 LogParam(p.GetMemoryObject(), l);
768 break;
769 }
770 } 720 }
771 721
772 #elif defined(OS_WIN) 722 #elif defined(OS_WIN)
773 void ParamTraits<base::SharedMemoryHandle>::Write(base::Pickle* m, 723 void ParamTraits<base::SharedMemoryHandle>::Write(base::Pickle* m,
774 const param_type& p) { 724 const param_type& p) {
775 m->WriteBool(p.NeedsBrokering()); 725 m->WriteBool(p.NeedsBrokering());
776 726
777 if (p.NeedsBrokering()) { 727 if (p.NeedsBrokering()) {
778 HandleWin handle_win(p.GetHandle(), HandleWin::DUPLICATE); 728 HandleWin handle_win(p.GetHandle(), HandleWin::DUPLICATE);
779 ParamTraits<HandleWin>::Write(m, handle_win); 729 ParamTraits<HandleWin>::Write(m, handle_win);
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
1218 return result; 1168 return result;
1219 } 1169 }
1220 1170
1221 void ParamTraits<MSG>::Log(const param_type& p, std::string* l) { 1171 void ParamTraits<MSG>::Log(const param_type& p, std::string* l) {
1222 l->append("<MSG>"); 1172 l->append("<MSG>");
1223 } 1173 }
1224 1174
1225 #endif // OS_WIN 1175 #endif // OS_WIN
1226 1176
1227 } // namespace IPC 1177 } // namespace IPC
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698