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

Side by Side Diff: content/browser/cancelable_request.h

Issue 8483003: Callback API Change: Reimplement Bind(); support IgnoreResult, full currying, and use less types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 9 years 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 | Annotate | Revision Log
« no previous file with comments | « chrome/common/profiling.cc ('k') | content/browser/debugger/worker_devtools_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // CancelableRequestProviders and Consumers work together to make requests that 5 // CancelableRequestProviders and Consumers work together to make requests that
6 // execute on a background thread in the provider and return data to the 6 // execute on a background thread in the provider and return data to the
7 // consumer. These classes collaborate to keep a list of open requests and to 7 // consumer. These classes collaborate to keep a list of open requests and to
8 // make sure that requests do not outlive either of the objects involved in the 8 // make sure that requests do not outlive either of the objects involved in the
9 // transaction. 9 // transaction.
10 // 10 //
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 public CancelableRequestBase { 769 public CancelableRequestBase {
770 public: 770 public:
771 typedef base::Callback<void(A1)> CallbackType; 771 typedef base::Callback<void(A1)> CallbackType;
772 772
773 explicit CancelableRequest(const CallbackType& callback) 773 explicit CancelableRequest(const CallbackType& callback)
774 : CancelableRequestBase(), 774 : CancelableRequestBase(),
775 callback_(callback) { 775 callback_(callback) {
776 DCHECK(!callback.is_null()) << "Callback must be initialized."; 776 DCHECK(!callback.is_null()) << "Callback must be initialized.";
777 } 777 }
778 778
779 void ForwardResult(typename base::internal::ParamTraits<A1>::ForwardType a1) { 779 void ForwardResult(
780 typename base::internal::CallbackParamTraits<A1>::ForwardType a1) {
780 if (canceled()) return; 781 if (canceled()) return;
781 DoForward(base::Bind(callback_, a1), false); 782 DoForward(base::Bind(callback_, a1), false);
782 } 783 }
783 784
784 void ForwardResultAsync( 785 void ForwardResultAsync(
785 typename base::internal::ParamTraits<A1>::ForwardType a1) { 786 typename base::internal::CallbackParamTraits<A1>::ForwardType a1) {
786 if (canceled()) return; 787 if (canceled()) return;
787 DoForward(base::Bind(callback_, a1), true); 788 DoForward(base::Bind(callback_, a1), true);
788 } 789 }
789 790
790 protected: 791 protected:
791 virtual ~CancelableRequest() {} 792 virtual ~CancelableRequest() {}
792 793
793 private: 794 private:
794 CallbackType callback_; 795 CallbackType callback_;
795 }; 796 };
796 797
797 template<typename A1, typename A2> 798 template<typename A1, typename A2>
798 class CancelableRequest<base::Callback<void(A1,A2)> > : 799 class CancelableRequest<base::Callback<void(A1,A2)> > :
799 public CancelableRequestBase { 800 public CancelableRequestBase {
800 public: 801 public:
801 typedef base::Callback<void(A1,A2)> CallbackType; 802 typedef base::Callback<void(A1,A2)> CallbackType;
802 803
803 explicit CancelableRequest(const CallbackType& callback) 804 explicit CancelableRequest(const CallbackType& callback)
804 : CancelableRequestBase(), 805 : CancelableRequestBase(),
805 callback_(callback) { 806 callback_(callback) {
806 DCHECK(!callback.is_null()) << "Callback must be initialized."; 807 DCHECK(!callback.is_null()) << "Callback must be initialized.";
807 } 808 }
808 809
809 void ForwardResult(typename base::internal::ParamTraits<A1>::ForwardType a1, 810 void ForwardResult(
810 typename base::internal::ParamTraits<A2>::ForwardType a2) { 811 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
812 typename base::internal::CallbackParamTraits<A2>::ForwardType a2) {
811 if (canceled()) return; 813 if (canceled()) return;
812 DoForward(base::Bind(callback_, a1, a2), false); 814 DoForward(base::Bind(callback_, a1, a2), false);
813 } 815 }
814 816
815 void ForwardResultAsync( 817 void ForwardResultAsync(
816 typename base::internal::ParamTraits<A1>::ForwardType a1, 818 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
817 typename base::internal::ParamTraits<A2>::ForwardType a2) { 819 typename base::internal::CallbackParamTraits<A2>::ForwardType a2) {
818 if (canceled()) return; 820 if (canceled()) return;
819 DoForward(base::Bind(callback_, a1, a2), true); 821 DoForward(base::Bind(callback_, a1, a2), true);
820 } 822 }
821 823
822 protected: 824 protected:
823 virtual ~CancelableRequest() {} 825 virtual ~CancelableRequest() {}
824 826
825 private: 827 private:
826 CallbackType callback_; 828 CallbackType callback_;
827 }; 829 };
828 830
829 template<typename A1, typename A2, typename A3> 831 template<typename A1, typename A2, typename A3>
830 class CancelableRequest<base::Callback<void(A1,A2,A3)> > : 832 class CancelableRequest<base::Callback<void(A1,A2,A3)> > :
831 public CancelableRequestBase { 833 public CancelableRequestBase {
832 public: 834 public:
833 typedef base::Callback<void(A1,A2,A3)> CallbackType; 835 typedef base::Callback<void(A1,A2,A3)> CallbackType;
834 836
835 explicit CancelableRequest(const CallbackType& callback) 837 explicit CancelableRequest(const CallbackType& callback)
836 : CancelableRequestBase(), 838 : CancelableRequestBase(),
837 callback_(callback) { 839 callback_(callback) {
838 DCHECK(!callback.is_null()) << "Callback must be initialized."; 840 DCHECK(!callback.is_null()) << "Callback must be initialized.";
839 } 841 }
840 842
841 void ForwardResult(typename base::internal::ParamTraits<A1>::ForwardType a1, 843 void ForwardResult(
842 typename base::internal::ParamTraits<A2>::ForwardType a2, 844 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
843 typename base::internal::ParamTraits<A3>::ForwardType a3) { 845 typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
846 typename base::internal::CallbackParamTraits<A3>::ForwardType a3) {
844 if (canceled()) return; 847 if (canceled()) return;
845 DoForward(base::Bind(callback_, a1, a2, a3), false); 848 DoForward(base::Bind(callback_, a1, a2, a3), false);
846 } 849 }
847 850
848 void ForwardResultAsync( 851 void ForwardResultAsync(
849 typename base::internal::ParamTraits<A1>::ForwardType a1, 852 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
850 typename base::internal::ParamTraits<A2>::ForwardType a2, 853 typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
851 typename base::internal::ParamTraits<A3>::ForwardType a3) { 854 typename base::internal::CallbackParamTraits<A3>::ForwardType a3) {
852 if (canceled()) return; 855 if (canceled()) return;
853 DoForward(base::Bind(callback_, a1, a2, a3), true); 856 DoForward(base::Bind(callback_, a1, a2, a3), true);
854 } 857 }
855 858
856 protected: 859 protected:
857 virtual ~CancelableRequest() {} 860 virtual ~CancelableRequest() {}
858 861
859 private: 862 private:
860 CallbackType callback_; 863 CallbackType callback_;
861 }; 864 };
862 865
863 template<typename A1, typename A2, typename A3, typename A4> 866 template<typename A1, typename A2, typename A3, typename A4>
864 class CancelableRequest<base::Callback<void(A1, A2, A3, A4)> > : 867 class CancelableRequest<base::Callback<void(A1, A2, A3, A4)> > :
865 public CancelableRequestBase { 868 public CancelableRequestBase {
866 public: 869 public:
867 typedef base::Callback<void(A1, A2, A3, A4)> CallbackType; 870 typedef base::Callback<void(A1, A2, A3, A4)> CallbackType;
868 871
869 explicit CancelableRequest(const CallbackType& callback) 872 explicit CancelableRequest(const CallbackType& callback)
870 : CancelableRequestBase(), 873 : CancelableRequestBase(),
871 callback_(callback) { 874 callback_(callback) {
872 DCHECK(!callback.is_null()) << "Callback must be initialized."; 875 DCHECK(!callback.is_null()) << "Callback must be initialized.";
873 } 876 }
874 877
875 void ForwardResult(typename base::internal::ParamTraits<A1>::ForwardType a1, 878 void ForwardResult(
876 typename base::internal::ParamTraits<A2>::ForwardType a2, 879 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
877 typename base::internal::ParamTraits<A3>::ForwardType a3, 880 typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
878 typename base::internal::ParamTraits<A4>::ForwardType a4) { 881 typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
882 typename base::internal::CallbackParamTraits<A4>::ForwardType a4) {
879 if (canceled()) return; 883 if (canceled()) return;
880 DoForward(base::Bind(callback_, a1, a2, a3, a4), false); 884 DoForward(base::Bind(callback_, a1, a2, a3, a4), false);
881 } 885 }
882 886
883 void ForwardResultAsync( 887 void ForwardResultAsync(
884 typename base::internal::ParamTraits<A1>::ForwardType a1, 888 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
885 typename base::internal::ParamTraits<A2>::ForwardType a2, 889 typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
886 typename base::internal::ParamTraits<A3>::ForwardType a3, 890 typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
887 typename base::internal::ParamTraits<A4>::ForwardType a4) { 891 typename base::internal::CallbackParamTraits<A4>::ForwardType a4) {
888 if (canceled()) return; 892 if (canceled()) return;
889 DoForward(base::Bind(callback_, a1, a2, a3, a4), true); 893 DoForward(base::Bind(callback_, a1, a2, a3, a4), true);
890 } 894 }
891 895
892 protected: 896 protected:
893 virtual ~CancelableRequest() {} 897 virtual ~CancelableRequest() {}
894 898
895 private: 899 private:
896 CallbackType callback_; 900 CallbackType callback_;
897 }; 901 };
898 902
899 template<typename A1, typename A2, typename A3, typename A4, typename A5> 903 template<typename A1, typename A2, typename A3, typename A4, typename A5>
900 class CancelableRequest<base::Callback<void(A1, A2, A3, A4, A5)> > : 904 class CancelableRequest<base::Callback<void(A1, A2, A3, A4, A5)> > :
901 public CancelableRequestBase { 905 public CancelableRequestBase {
902 public: 906 public:
903 typedef base::Callback<void(A1, A2, A3, A4, A5)> CallbackType; 907 typedef base::Callback<void(A1, A2, A3, A4, A5)> CallbackType;
904 908
905 explicit CancelableRequest(const CallbackType& callback) 909 explicit CancelableRequest(const CallbackType& callback)
906 : CancelableRequestBase(), 910 : CancelableRequestBase(),
907 callback_(callback) { 911 callback_(callback) {
908 DCHECK(!callback.is_null()) << "Callback must be initialized."; 912 DCHECK(!callback.is_null()) << "Callback must be initialized.";
909 } 913 }
910 914
911 void ForwardResult(typename base::internal::ParamTraits<A1>::ForwardType a1, 915 void ForwardResult(
912 typename base::internal::ParamTraits<A2>::ForwardType a2, 916 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
913 typename base::internal::ParamTraits<A3>::ForwardType a3, 917 typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
914 typename base::internal::ParamTraits<A4>::ForwardType a4, 918 typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
915 typename base::internal::ParamTraits<A5>::ForwardType a5) { 919 typename base::internal::CallbackParamTraits<A4>::ForwardType a4,
920 typename base::internal::CallbackParamTraits<A5>::ForwardType a5) {
916 if (canceled()) return; 921 if (canceled()) return;
917 DoForward(base::Bind(callback_, a1, a2, a3, a4, a5), false); 922 DoForward(base::Bind(callback_, a1, a2, a3, a4, a5), false);
918 } 923 }
919 924
920 void ForwardResultAsync( 925 void ForwardResultAsync(
921 typename base::internal::ParamTraits<A1>::ForwardType a1, 926 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
922 typename base::internal::ParamTraits<A2>::ForwardType a2, 927 typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
923 typename base::internal::ParamTraits<A3>::ForwardType a3, 928 typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
924 typename base::internal::ParamTraits<A4>::ForwardType a4, 929 typename base::internal::CallbackParamTraits<A4>::ForwardType a4,
925 typename base::internal::ParamTraits<A5>::ForwardType a5) { 930 typename base::internal::CallbackParamTraits<A5>::ForwardType a5) {
926 if (canceled()) return; 931 if (canceled()) return;
927 DoForward(base::Bind(callback_, a1, a2, a3, a4, a5), true); 932 DoForward(base::Bind(callback_, a1, a2, a3, a4, a5), true);
928 } 933 }
929 934
930 protected: 935 protected:
931 virtual ~CancelableRequest() {} 936 virtual ~CancelableRequest() {}
932 937
933 private: 938 private:
934 CallbackType callback_; 939 CallbackType callback_;
935 }; 940 };
936 941
937 template<typename A1, typename A2, typename A3, typename A4, typename A5, 942 template<typename A1, typename A2, typename A3, typename A4, typename A5,
938 typename A6> 943 typename A6>
939 class CancelableRequest<base::Callback<void(A1, A2, A3, A4, A5, A6)> > : 944 class CancelableRequest<base::Callback<void(A1, A2, A3, A4, A5, A6)> > :
940 public CancelableRequestBase { 945 public CancelableRequestBase {
941 public: 946 public:
942 typedef base::Callback<void(A1, A2, A3, A4, A5, A6)> CallbackType; 947 typedef base::Callback<void(A1, A2, A3, A4, A5, A6)> CallbackType;
943 948
944 explicit CancelableRequest(const CallbackType& callback) 949 explicit CancelableRequest(const CallbackType& callback)
945 : CancelableRequestBase(), 950 : CancelableRequestBase(),
946 callback_(callback) { 951 callback_(callback) {
947 DCHECK(!callback.is_null()) << "Callback must be initialized."; 952 DCHECK(!callback.is_null()) << "Callback must be initialized.";
948 } 953 }
949 954
950 void ForwardResult(typename base::internal::ParamTraits<A1>::ForwardType a1, 955 void ForwardResult(
951 typename base::internal::ParamTraits<A2>::ForwardType a2, 956 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
952 typename base::internal::ParamTraits<A3>::ForwardType a3, 957 typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
953 typename base::internal::ParamTraits<A4>::ForwardType a4, 958 typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
954 typename base::internal::ParamTraits<A5>::ForwardType a5, 959 typename base::internal::CallbackParamTraits<A4>::ForwardType a4,
955 typename base::internal::ParamTraits<A6>::ForwardType a6) { 960 typename base::internal::CallbackParamTraits<A5>::ForwardType a5,
961 typename base::internal::CallbackParamTraits<A6>::ForwardType a6) {
956 if (canceled()) return; 962 if (canceled()) return;
957 DoForward(base::Bind(callback_, a1, a2, a3, a4, a5, a6), false); 963 DoForward(base::Bind(callback_, a1, a2, a3, a4, a5, a6), false);
958 } 964 }
959 965
960 void ForwardResultAsync( 966 void ForwardResultAsync(
961 typename base::internal::ParamTraits<A1>::ForwardType a1, 967 typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
962 typename base::internal::ParamTraits<A2>::ForwardType a2, 968 typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
963 typename base::internal::ParamTraits<A3>::ForwardType a3, 969 typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
964 typename base::internal::ParamTraits<A4>::ForwardType a4, 970 typename base::internal::CallbackParamTraits<A4>::ForwardType a4,
965 typename base::internal::ParamTraits<A5>::ForwardType a5, 971 typename base::internal::CallbackParamTraits<A5>::ForwardType a5,
966 typename base::internal::ParamTraits<A6>::ForwardType a6) { 972 typename base::internal::CallbackParamTraits<A6>::ForwardType a6) {
967 if (canceled()) return; 973 if (canceled()) return;
968 DoForward(base::Bind(callback_, a1, a2, a3, a4, a5, a6), true); 974 DoForward(base::Bind(callback_, a1, a2, a3, a4, a5, a6), true);
969 } 975 }
970 976
971 protected: 977 protected:
972 virtual ~CancelableRequest() {} 978 virtual ~CancelableRequest() {}
973 979
974 private: 980 private:
975 CallbackType callback_; 981 CallbackType callback_;
976 }; 982 };
(...skipping 27 matching lines...) Expand all
1004 } 1010 }
1005 1011
1006 // The value. 1012 // The value.
1007 Type value; 1013 Type value;
1008 1014
1009 protected: 1015 protected:
1010 virtual ~CancelableRequest1() {} 1016 virtual ~CancelableRequest1() {}
1011 }; 1017 };
1012 1018
1013 #endif // CONTENT_BROWSER_CANCELABLE_REQUEST_H_ 1019 #endif // CONTENT_BROWSER_CANCELABLE_REQUEST_H_
OLDNEW
« no previous file with comments | « chrome/common/profiling.cc ('k') | content/browser/debugger/worker_devtools_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698